TOBATSU WORKERS · 只读快照

Worker status 红色状态交付报告

截图里的红字不是同一种问题。现在的结论是:核心执行队列还在跑,几行是停用/遗留 supervisor,另一些是 fork 探针 stale,而且会在 ok / warning 之间来回跳。

绿色:可接任务 橙色:supervisor 没跑 红色:fork probe stale 不碰 magi3
快照来源GET /api/workers
时间:2026-05-28 18:41 Asia/Shanghai
权限:只读 Admin token
代码版本:bdb2950
在线 worker
83
magi3 + worker2 合计
忙碌任务
2
都在 magi3:test
capacity
OK
所有行 DB budget 都是 ok
flicker rows
5
24 秒采样里 ok/warn 来回跳

一句话结论

不是全挂

magi3:mai 10/10 在线,magi-worker2:mai-ignis 30/30 在线,worker2 的 inquiry 也在线。

有 UI 噪音

fork unavailable 多数是 probe_stale 聚合告警。worker 还在,fork 探针没按预期刷新。

有真实待处理

三行 dynamic supervisor 离线但 target 还大于 0。要么启动,要么把目标归零/隐藏,不能长期红着。

你说的“一闪一闪”是真的

我按 1 秒一次抓了 24 秒。不是页面错觉,后端返回值本身就在跳。

Host / Queue24 秒内 ok24 秒内 warning最多 stale判断
magi-worker2 / mai-ignis12126最明显,一半时间红。
magi3 / mai1774生产 Mai 也在抖,但任务 worker 在线。
magi3 / material5194大部分时间显示 stale。
magi3 / task_inquiry1952偶发 stale。
magi3 / test2042偶发 stale,采样时有 2 个 busy。
!
根因倾向worker 端把 fork probe 缓存约 heartbeat_interval * 2,API 端也用同样的 heartbeat_interval * 2 判 stale。两个窗口贴得太近,刷新稍慢一点就越线,下一轮又恢复。

逐行状态

下面按截图同一批 host/queue 展开。重点看“任务执行”和“Ask/Continue fork 探针”是两条不同线。

Host / Queue在线UI 文案事实判断建议
magi / task_inquiry0 / 4supervisor offline
fork disabled
遗留或停用行。当前没有 worker 在线。确认是否还需要这台 host;不需要就把 target 归零或隐藏。
magi-worker2 / mai0 / 1supervisor offline
fork disabled
11A 后 worker2 实际用的是 mai-ignis,这行像残留设置。如果不用 mai,把 target 归零,别让 UI 红。
magi-worker2 / mai-ignis30 / 30steady
fork unavailable
执行 worker 全在线。fork probe 会在 0 到 6 个 stale 之间跳;影响 Ask/Continue 可见性,不代表任务队列死。把 stale 判定窗口拉开,UI 显示 degraded,不要整行红。
magi-worker2 / task_inquiry1 / 1steady
fork ok
正常。不动。
magi3 / default0 / 10supervisor offline
fork disabled
magi3 default dynamic supervisor 没跑。按当前 no-touch 规则,先只读观察。需要用户明确授权才能改 magi3。
magi3 / mai10 / 10steady
fork ok
正常,仍是生产 Mai 主队列。不动。
magi3 / material30 / 30PM2 managed
fork unavailable
静态 PM2 worker 在线。3 个 fork probe stale。任务可跑;Ask/Continue fork 探针要查。
magi3 / task_inquiry4 / 4steady
fork unavailable
worker 在线。2 个 fork probe stale。只读观察;不重启 magi3。
magi3 / test8 / 8steady
fork unavailable
worker 在线,2 个任务忙。4 个 fork probe stale。不要为了 smoke 强行清空 test。

为什么看起来全红

01
任务 worker 在线
能 claim job、跑 agent、上传结果。
02
fork 探针单独报
Ask / Continue 需要 appserver probe。
03
聚合成一行红字
只要部分 worker stale,就显示 fork unavailable。
04
UI 没分严重级别
用户看到像“队列挂了”。
!
关键区别supervisor offline 是这行 worker 没在线;fork unavailable / probe_stale 是 fork 探针过期。第二种不等于普通任务执行失败。

当前只读原始摘要

没有打印任何 token。下面是字段级摘要,方便对照页面。

magi/task_inquiry target 4 online 0 supervisor offline fork disabled magi-worker2/mai target 1 online 0 supervisor offline fork disabled magi-worker2/mai-ignis target 30 online 30 steady probe_stale x4 magi-worker2/inquiry target 1 online 1 steady fork ok magi3/default target 10 online 0 supervisor offline fork disabled magi3/mai target 10 online 10 steady fork ok magi3/material static online 30 PM2 managed probe_stale x3 magi3/task_inquiry target 4 online 4 steady probe_stale x2 magi3/test target 8 online 8 busy 2 probe_stale x4

建议收口

先别重启 magi3

截图不能证明 magi3 任务队列死。按当前保护规则,magi3 继续只读。

清理离线配置行

对不用的 dynamic row,把 target 调成 0 或在 UI 里隐藏 inactive row,避免误判。

修 probe 抖动

API stale 阈值要大于 worker probe 缓存 TTL;UI 也要显示“部分探针 stale”,别写成 fork unavailable。