You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
1.7 KiB
28 lines
1.7 KiB
# 10:任务取消、超时与重试
|
|
|
|
## 目标
|
|
|
|
让子 Agent 能够执行总控的最小控制协议:收到带截止时间的任务后进入生命周期;收到取消指令或达到截止时间后停止本地演示执行器并回报终态。
|
|
|
|
## 已实现
|
|
|
|
1. `task_dispatch` 接收无进展截止时间 `deadline_at`,并传给本地任务执行器;进入“执行中”阶段会使用同一窗口重新开始本地无进展计时。
|
|
2. 新增 `task_cancel` 消息处理,携带任务 ID 与取消原因。
|
|
3. 本地执行器对每项任务维护开始、完成和截止时间计时器;取消或超时会停止其余计时器,防止稍后错误回报“已完成”。
|
|
4. 取消回报状态为 `cancelled`,连续无进展达到截止时间的回报状态为 `timed_out`。
|
|
5. 演示执行器保留约 1.5 秒可见执行窗口,便于实际验证取消与超时;它仍不执行模型、Shell、浏览器或本机工具。
|
|
|
|
## 状态规则
|
|
|
|
`accepted → running → completed` 是正常路径;`accepted/running → cancelled` 和 `accepted/running → timed_out` 是终止路径。终态任务不会再次启动或完成。
|
|
|
|
## 验收
|
|
|
|
1. 总控下发 1 秒超时测试任务,Agent 应回报 `timed_out`。
|
|
2. 总控在任务运行中发送取消,Agent 应回报 `cancelled`,且不再回报 `completed`。
|
|
3. 重试由总控创建新的任务 ID;Agent 应把它视为独立任务正常执行。
|
|
4. 自动化测试同时覆盖取消与过期截止时间。
|
|
|
|
## 当前边界与下一步
|
|
|
|
待发送任务事件目前只驻留在进程内存:如果 Agent 在断线期间退出,尚未回传的事件不会在下次启动时自动补传。下一阶段将把事件外盒(outbox)、确认序号和重连回放落到本地数据库。
|
|
|