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.
 
 
 
 
 
mulit-agent/mulit_agent/docs/steps/10-任务取消超时与重试.md

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)、确认序号和重连回放落到本地数据库。