feat: 长任务补齐——流式进度 + 跨进程中断 + worker 超时约定

- 长等待流式进度:run_turn 改 1 秒切片轮询(_wait_turn),每满 --progress-interval(默认 30 秒,0 关闭,CLI > 配置 > 默认)往 stderr 打 turn progress 并往链路文件记 kind=progress;进度绝不走 stdout,不破坏 dispatch JSON 与 goal 结论行/用量行解析(经 cloud 真正则验过)
- 跨进程中断:interrupt 直接不生效时写 <state_dir>/interrupt-requests/<task>.json,属主等 turn 时每秒轮询到后用自己的 live 连接发 turn/interrupt 并记 interrupted;10 秒内未响应也不删文件,属主下次轮询仍处理;接线覆盖 dispatch/run/goal/goal-resume/delegate/parallel/fix-review/run-due;旧 server 不接受 interrupt_file 时退回不传再跑
- cloud worker 超时约定:--task-timeout 0 归一化为 None(不限时,与 host turn_timeout 同约定,Docker 路径仍受 docker_timeout 约束),默认 1800 不变;超时仍记 failed(现有单测合同不动)

测试:host 56 全过(新增 7)、cloud 526 全过(4 跳过,新增 1 个 0=不限时)。
This commit is contained in:
host committed 2026-10-27 03:05:15 +08:00
1 parent 028ef02a86
commit 1128fd3076
6 files changed
+400 -34

No files matched your search

+3 -1
View File
@@ -683,7 +683,9 @@ interrupted 且终态任务 cancel 返回 400、心跳后 sweep 不扫刚心跳
`GET /metrics` 的 `by_status` 恒含七个状态键(queued / running /
completed / failed / interrupted / merged / merge-failed),缺失
状态为 0 而不是缺键。
- 任务级超时:worker 的 `--task-timeout`(默认 1800 秒),与另外
- 任务级超时:worker 的 `--task-timeout`(默认 1800 秒,0 表示
不限时、与 host `--turn-timeout 0` 同约定,worker 级不设截止,
但 Docker 路径仍受 `--docker-timeout` 约束),与另外
两个参数不要混淆:`--docker-timeout` 是执行器级的单次 docker run
超时,`--max-seconds` 是 `run_loop` 的整体墙钟上限;三者互不覆盖,
Docker 路径下 worker 取 `min(task_timeout, docker_timeout)`