返回文章列表
AI

AI 做复杂任务总 “半途而废”怎么办?Anthropic 双 Agent 架构救场

柒柒
2025-11-27
2个月前
AI 做复杂任务总 “半途而废”怎么办?Anthropic 双 Agent 架构救场

这是一个非常有意思的实验。

Anthropic 研究团队让 Claude 去做一个复杂项目:

克隆一个 Claude 网页端(claude.ai)。

结果,Claude 不是做不出来,而是做到一半就开始“断片”。

代码写了一半,上下文窗口满了,不得不开新会话继续。

而新会话里的 Claude 面对一堆半成品,完全不知道之前那个 Claude 想干嘛。

更真实的是,有时候做到一半,看起来“好像差不多了”,Claude 就会直接宣布:任务完成。

实际上核心功能还有一大半没做。

今天,Anthropic 发表了一篇技术博客,复盘了这些问题,并给出了他们的解决方案。



01|AI 翻车的本质:会话之间完全失忆

AI 的上下文窗口长度有限,复杂项目基本不可能在同一个会话中完成。

必须跨多个会话。

但问题是:每开一个新会话,AI 就“失忆”一次。

之前做了什么,现在做到哪了,接下来应该干什么,这些全部都停留在了上一个会话里。

Anthropic 官方这样形容:

这就像一个软件项目,程序员三班倒,但每个人上班时对前一班发生的事情一脸懵逼。没有交接文档,没有代码注释,甚至不知道前一个人为什么要这样写。

很生动形象了。

面对这个问题,上下文压缩有一定作用,可以延长单次会话的有效长度,但还不够。

并且,压缩本身会丢失信息。


02|AI 两种典型的翻车方式

太贪心,想一口吃个胖子

AI 拿到任务后,会倾向于直接上手实现整个项目。

恨不得一口气把所有功能都写完。

结果,写着写着上下文满了,只能扔给“下一班”。

下一轮对话开始,新 AI 面对的是:半成品代码、没有文档、没有注释。

它只能靠猜,一旦猜错,就需要花大量时间修 bug、重构。

甚至让本来能用的代码又出问题。

太容易满足

当项目进行到中期,有些功能已经实现了。

AI 会看看代码,觉得“差不多了吧”,然后宣布任务完成。

但实际上关键功能可能还没写,用户体验也一团糟。

上面这两种问题本质上是一回事:

AI 不会为未来的自己预留信息。


03|Anthropic 的解决方案:两个 Agent 分工协作

Anthropic 重新设计了整个工作流程,将 AI 拆成两个角色。

这是一个“双 Agent”架构。

角色一是「初始化 Agent」,只在项目开始时运行一次。

它不写代码,专门负责规划。

把用户的需求拆解成一个完整的功能清单。

在文章开头那个克隆 Claude 网页端的例子里,它拆分出超过 200 个具体功能。

比如“用户可以新建对话”、“用户可以输入问题并按回车发送”、“用户可以看到 AI 回复”。

每个功能都标注为“未完成”,形成一个清晰的待办列表。

然后,它还会创建一个进度文件 claude-progress.txt,来记录每次会话完成了哪些工作。

最后,初始化 git 仓库,写入初始 commit。


角色二是「编码 Agent」,负责之后所有的活。

它有固定的工作流程。

每次启动,第一件事是先弄清楚当前项目的状态。

比如,它会先确认自己在哪个目录,然后读取进度文件和 git 日志,了解之前的会话做到哪了、改了什么、还有哪些功能未完成。

接下来,它会从功能清单中挑选一个优先级最高、还没完成的任务。

注意,只挑一个(避免太贪心)。

实现完这个功能之后,它会写入一条 git commit,并更新进度文件,记录这次会话完成了什么。

这种设计背后的核心思想是:「一次只做一件事,做完就记录,好让下一个会话能顺利接手」。


04|经常被忽视的一点:测试

还有一个问题:AI 经常自己说“功能已完成”,但实际上根本跑不通。

它也会做测试,但可能仅限于单元测试,或用 curl 请求一下接口。

不会像真实用户那样,从头到尾走完整个流程。

Anthropic 的解决方案是给 Claude 接入浏览器自动化工具「Puppeteer」。

它会像真人一样操作:打开浏览器、点击、输入、查看结果。

只有端到端测试通过了,才标记“完成”。

这个改动效果很明显。

加了浏览器测试后,Claude 能发现很多之前发现不了的 bug。


05|一个全新的 Agent 工作流程

加了这套机制后,Claude 每个会话开始时的行为变成了这样:

  • 先运行 pwd 看自己在哪个目录
  • 查看进度文件和 git 日志,了解之前的工作进展
  • 查看功能清单,选择要做的功能
  • 运行 init.sh 启动开发服务器
  • 用 Puppeteer 测试,确认之前的功能还能正常工作

确认没问题之后,才开始开发新功能。

即使上一个 AI 留下了隐藏 bug,当前的 AI 也能在动手之前发现问题,而不是在一堆 bug 上面继续堆“屎山”。

这就是这套流程的好处。


结语

Anthropic 在博客里说,他们的灵感来自:

观察高效的人类程序员每天都在做的事。

这很有意思。

你会发现,写文档、做交接、测试,这些其实都是人类真实世界中软件开发的基本功。

但 AI 不会自动这样做。

因为它再强,也抵不过人类几十年总结出来的工程实践。

如果你在用 AI Agent 做复杂任务,这是几个很具体的建议:

把大任务拆成小功能,让 AI 每次只做一个强制 AI 记录进度,写清楚做了什么、做到哪了用客观的测试手段验证,不要让 AI 自己说“完成了”就结束保持代码库整洁,每次改动都 commit

虽然这些听起来都是常识。

但恰恰是这些常识,决定了复杂项目能不能由下一个 AI 继续推进。

本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。

分享文章
合作伙伴

本站所有广告均是第三方投放,详情请查询本站用户协议