Anthropic破解长程任务难题:长期运行智能体的高效控制机制
面对AI智能体在长时间运行任务时的记忆断裂与进度丢失难题,Anthropic提出了模拟人类工程师工作方式的双智能体架构,让AI能够跨上下文窗口持续工作数小时甚至数天。
随着AI智能体能力的提升,开发者开始期望它们承担跨越数小时甚至数天的复杂任务。然而,长期运行智能体面临一个根本性矛盾:它们必须分"会话"工作,而每个新会话都像是一个没有过往记忆的新工程师接班。
近期,Anthropic工程团队发布了一篇名为《适用于长期运行Agents的有效工具》的工程实践文章,系统阐述了解决这一难题的方法。
01 核心挑战:为什么上下文压缩还不够?
Claude Agent SDK作为一个通用的Agent框架,具备上下文管理功能(如压缩),理论上应能让Agent无限期工作。但在实际测试中,仅靠上下文压缩是无法解决长程任务难题的。
长程智能体的两大典型失败模式:
-
试图一次性完成所有工作:Agent倾向于在一次会话中做太多事,导致中途耗尽上下文,留下的功能只完成了一半且缺乏文档。下一个会话的Agent必须猜测之前发生了什么,浪费大量时间修复基础应用。
-
过早宣布完工:在项目后期,新的Agent实例看到已经有一些功能,就误以为整个工作已完成。即使最新的Claude Opus 4.5模型,在构建claude.ai克隆版时也会出现这类问题。
本质上,有限上下文窗口与无限复杂任务之间的根本矛盾无法通过简单压缩来解决。当复杂项目无法在单一窗口内完成时,Agent需要一种更精巧的机制来弥合编码会话之间的鸿沟。
02 解决方案:像人类工程师一样工作的双智能体架构
Anthropic通过观察人类工程师的工作方式,为Claude Agent SDK开发了一套包含两个部分的解决方案:初始化Agent和编码Agent。
架构对比:传统单智能体 vs 新型双智能体
| 智能体类型 | 工作模式 | 记忆机制 | 任务连续性 |
|---|---|---|---|
| 传统单智能体 | 一次性完成所有工作 | 依赖上下文压缩 | 容易中断,记忆碎片化 |
| 双智能体架构 | 分阶段增量推进 | 结构化外部记忆系统 | 跨会话持续,进度可追溯 |
双智能体分工详解
初始化智能体负责搭建基础环境,为后续编码智能体提供清晰的工作框架。它在首次运行中生成几个关键组件:
init.sh脚本:用于启动开发服务器claude-progress.txt:记录智能体操作日志- 初始git提交:记录已添加文件
- JSON格式功能列表:扩展用户初始提示,包含所有需实现功能
编码智能体负责后续每一个会话的增量推进,它的核心职责包括:
- 一次只处理一个未完成的高优先级功能
- 维护"干净状态":确保代码无重大bug、文档完善
- 通过更新功能列表状态、提交git和补充进度日志来实现状态交接
这一方案的关键在于让Agent在开启新窗口时能迅速理解工作状态------这主要通过claude-progress.txt文件和Git历史记录来实现。
03 环境管理的三大支柱:为智能体打造持久工作空间
为了支持这种工作流,环境设置包含以下关键组件:
1. 功能列表:防止范围蠕变和过早完工
初始化Agent被要求编写一个包含所有功能需求的详细文件。在claude.ai克隆案例中,这包含超过200个功能点。这些功能最初都被标记为"failing"(未通过),为后续Agent提供了清晰的工作全景图。
json
{
"category": "functional",
"description": "New chat button creates a fresh conversation",
"steps": [
"Navigate to main interface",
"Click the 'New Chat' button",
"Verify a new conversation is created",
"Check that chat area shows welcome state",
"Verify conversation appears in sidebar"
],
"passes": false
}
实验发现,使用JSON格式优于Markdown,因为模型不太容易错误地更改或覆盖JSON文件。同时,提示词需包含强硬指令,禁止删除或编辑测试,只允许更改passes字段的状态。
2. 增量进展:一次只做好一件事
有了初始脚手架后,编码Agent被要求一次只做一个功能。为了保持环境整洁,Agent需要在每次代码变更后:
- 通过Git提交代码,并附带描述性信息
- 在进度文件中撰写摘要
这使得模型可以利用Git回滚错误代码,恢复到工作状态,避免了后续Agent需要猜测前任做了什么的情况。
3. 端到端测试:超越单元测试的全面验证
Claude的另一个主要失败模式是:在没有适当测试的情况下标记功能为完成。它往往只做单元测试或简单的curl命令,却忽略了端到端的验证。
解决方案是明确提示Claude使用浏览器自动化工具(如Puppeteer MCP server),像人类用户一样进行测试。通过让Claude看到屏幕截图,它能识别并修复代码中不明显的Bug。
04 实战流程:编码智能体的标准会话
基于上述架构,每个编码Agent在会话开始时都会被提示执行一系列标准步骤:
- 运行
pwd查看当前工作目录 - 阅读Git日志和进度文件,了解最近完成了什么
- 阅读功能列表文件,选择一个未完成的最高优先级功能
- 运行
init.sh启动开发服务器 - 在实现新功能前,先运行基本的端到端测试,确保应用未处于损坏状态
典型会话流程示例
[Assistant] 我先了解一下项目当前状态。
[Tool Use] <bash - pwd>
[Tool Use] <read - claude-progress.txt>
[Tool Use] <read - feature_list.json>
[Assistant] 检查Git日志...
[Tool Use] <bash - git log --oneline -20>
[Assistant] 检查是否有启动脚本并重启服务器...
[Assistant] 现在验证基本功能是否正常...
[Assistant] 验证通过。现在我查看tests.json决定下一步做什么。
这一标准化流程确保了跨会话的一致性,每个新会话都能快速理解项目状态并继续推进工作,而不是重新开始或盲目猜测。
05 技术支撑:外部记忆系统与模型进步
Anthropic的这一方案本质上构建了一个外部记忆系统,与学术界提出的多种记忆管理策略不谋而合。
智能体记忆机制的八大策略
在构建智能对话系统时,随着对话逐渐深入,如何让AI记住过往交互、保持上下文连贯,同时不拖垮性能,是一道绕不开的坎。随着对话轮次增多,两个问题会越来越明显:重要的早期信息被"遗忘",回复开始跑偏;上下文越拉越长,计算开销飙升,响应越来越慢。
- 全量记忆:保留所有上下文
- 滑动窗口:仅保留近期信息
- 相关性过滤:智能筛选重要信息
- 摘要/压缩:浓缩核心信息
- 向量数据库:语义检索记忆
- 知识图谱:结构化记忆
- 分层记忆:短期与长期结合
- 类OS内存管理:模拟Swap机制
Anthropic采用的进度文件+Git历史+功能列表组合,本质上是一种分层记忆和类OS内存管理的混合策略,既保证了关键信息的持久性,又避免了上下文窗口的过度膨胀。
模型能力的进步基础
这一控制机制的有效实施,离不开底层模型能力的持续进步。最新发布的Claude Sonnet 4.5能够自主编码长达30小时,远超其前代Claude 4 Opus约7小时的能力。
在与部分企业客户进行的早期试用中,Claude Sonnet 4.5编写了一款类似Slack或Teams的聊天应用,共生成约1.1万行代码,直至任务完成才停止运行。这种长周期任务执行能力为双智能体架构提供了坚实基础。
06 故障排除:常见问题与解决方案
在实际应用中,长期运行智能体仍会面临多种故障模式,Anthropic总结了相应的解决方案:
| 核心问题 | 初始化智能体应对措施 | 编码智能体应对措施 |
|---|---|---|
| 过早宣布项目完成 | 生成结构化JSON功能列表,明确全量功能范围 | 会话开始读功能列表,每次仅处理1个功能 |
| 环境遗留bug/无文档 | 创建初始git仓库和进度日志文件 | 会话开始读进度日志+git记录,做基础测试;结束时提交git+更新进度 |
| 过早标记功能完成 | 生成JSON功能列表,定义"完成"标准 | 对所有功能自验证,仅在充分测试后标记"passes:true" |
| 不知如何运行应用 | 编写init.sh脚本(启动开发服务器) |
会话开始先读取init.sh |
值得一提的是,Claude仍无法识别浏览器原生警告弹窗,依赖此类弹窗的功能容易留下bug。这是当前方案的一个已知局限,需要开发者注意并手动处理。
07 未来展望:从单智能体到多智能体协作系统
这项研究展示了长程Agent框架的一种可行方案,但仍有未解决的问题:
单Agent vs 多Agent:目前尚不清楚是通用的编码Agent表现最好,还是采用多Agent架构(如专门的测试Agent、QA Agent、代码清理Agent)更优。
领域泛化:本演示针对全栈Web开发。未来方向是将这些经验推广到科学研究或金融建模等其他长程任务领域。
Anthropic研究员Sholto Douglas在近期的一次访谈中表示:"我原本以为它们在操作计算机方面会做得更好一些。但也能理解背后的原因,我觉得这些问题很快就能解决,毕竟只是阶段性的技术瓶颈。"
他预测:"到今年年底或者明年年中旬,我们会有能完成相当于初级工程师一天工作量,或者几小时独立任务的高效软件Agent系统。"
随着AI能力的提升,用户与模型的交互频率将从秒级、分钟级向小时级甚至更长周期转变。未来用户可能同时管理多个模型执行多项任务,交互方式类似于"模型舰队管理"。
总结:长期运行智能体的实践启示
Anthropic提出的长期运行智能体控制机制,为AI智能体在实际应用中的持续工作提供了实用解决方案。其核心启示在于:
-
结构化外部记忆, 比上下文压缩更可靠:通过进度文件、Git历史和功能列表组成的系统,为智能体提供了跨会话的持久记忆。
-
模拟人类工作流程, 是有效的设计模式:双智能体架构模仿了人类工程师的初始化与增量开发的工作方式,大大降低了任务断裂风险。
-
标准化会话流程, 确保连续性:每个会话的标准步骤保证了智能体能够快速理解状态并继续工作。
这一方案不仅适用于Claude Agent SDK,也为其他AI平台的长期运行智能体设计提供了可借鉴的模式。随着模型能力的持续进步,我们有理由相信,能够独立工作数小时甚至数天的AI智能体,将在不久的将来成为软件开发的标配助手。
