让长任务跑下去:循环、外部记忆与并行
定义
要让 Agent 把长任务做完,先解决三件事:用“计划—执行—观察/测试—改进”循环推进,把重要状态保存到上下文之外,再只把真正独立的子任务并行处理。
先搭一个心智模型
把长任务想成一个小团队:循环是工作节奏,外部文件是共享工作日志,子 Agent 是可以领取独立工单的同事。缺任何一项都能工作,但规模一大就容易停滞。
说明
工作流自动化把 Agent 设计成目标导向的循环,而非执行一次就结束的脚本。循环结构是 Plan → Execute → Observe/Test → Improve:失败是信号而不是终止,测试不通过、命令报错都是自我纠正的触发条件。
文件系统做持久记忆解决制品超出上下文窗口的问题。实验日志、代码 diff、错误追踪都是有价值状态但塞不进上下文,Harness 应把持久状态存在文件系统中,让 Agent 学会按需读写。
子 Agent 与后台任务只适合真正独立的工作。每个子任务应有清楚的输入、输出和写入边界;若多个任务会同时改同一份状态,就应隔离工作区或改为串行。循环、外部状态与有限并行解决的是不同瓶颈,可以按需组合。
跟着一个例子走
Agent 连续完成一次版本升级
任务包括查变更、改依赖、迁移代码和跑测试,过程可能跨越多个上下文。
- 循环推进
每次只完成一项、运行验证,再根据结果决定修复或进入下一项。
- 外部保存
计划、已完成项、失败证据和补丁保存在文件或事件日志中。
- 有限并行
文档调研和独立模块检查可以并行;修改同一文件的任务仍需隔离或排序。
边界与误区
三大设计模式之间是什么关系: 循环负责根据结果继续推进,外部记忆负责跨上下文保存状态,子 Agent 负责并行独立工单。前两项常用于长任务,并行只在收益大于协调成本时加入。
为什么把状态放到外部文件有助于并发控制: 子任务通过明确制品和状态文件交接,写入范围更容易划分;单个子任务失败时,也能根据已有文件重跑或恢复。