feat(ack): supervise worker liveness after dispatch instead of blind wait

This commit is contained in:
2026-08-23 23:06:22 +08:00
parent d33bc3ccaf
commit 5a906f24fa
7 changed files with 346 additions and 9 deletions
+30 -3
View File
@@ -204,18 +204,45 @@ EOF
---
## 等待结果
## 等待结果:派发后的活性监督
派发或手动投递后**不能只依赖 `check --wait` 盲等**:卡在审批提示、投递后未回车、
命中额度限制的 worker 不会自己发 `worker_done`。先确认 worker 真的开始执行,等待
期间周期性探测活性。
1. 投递后立即确认开始执行:
- `--inject` 路径:`orca terminal read --terminal <handle>`,确认 TASK 段已出现
且终端进入工作指示(Working / Running)。
- 手动投递路径:`orca terminal send` 必须带 `--enter`;投递后同样 read 确认。
- 确认失败或终端仍停在欢迎提示:按「消息未投递」记录环境失败,不消耗产品轮次。
2. 等待期间滚动 probe(每 60–120 秒一次):
```bash
python3 <ack-skill-dir>/scripts/worker_probe.py \
--task-id <task_id> --terminal <worker_handle>
```
输出 JSON `status``running` / `progress` / `stall` / `not-started` / `unknown`。
3. 探测结果处理:
- `stall`:读 terminal tail 确认原因(审批 / 模型切换 / 额度限制),按环境失败
记录 `environmentIncidents` 并做有界恢复;需要用户决定时立即报告。
- `not-started`:检查是否漏投递或未回车;重新投递或记录环境失败,不占轮次。
- `running` / `progress`:继续滚动 wait。
- `unknown`:按 `dispatch-show` 与 Orca live state 人工核对,不自动重试。
4. `check --wait` 使用短窗口(60–90 秒)而不是 15 分钟:窗口超时是检查点,先 probe
再决定继续等待、恢复或上报。
```bash
orca orchestration check \
--terminal <coordinator_handle> \
--wait \
--types worker_done,retest_result,escalation,decision_gate \
--timeout-ms 900000 \
--timeout-ms 90000 \
--json
```
等待超时不等于失败。长任务可继续等待,或检查 worker 终端活性。`worker_done` 来自 Developer`retest_result`(无该类型时用 `worker_done` + subject 区分)来自 Test。
`worker_done` 来自 Developer`retest_result`(无该类型时用 `worker_done` + subject
区分)来自 Test。
---