feat(ack): supervise worker liveness after dispatch instead of blind wait
This commit is contained in:
@@ -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。
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user