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