Agent跑久了就崩溃?Anthropic官方出手!高效运行框架彻底解决“长时任务”噩梦!
随着 AI Agent(智能体)的能力越来越强,开发者越来越多地要求它们承担需要跨越数小时甚至数天才能完成的复杂任务。然而,如何让 Agent 在多个“上下文窗口”(Context Window)之间保持工作的连贯性,仍然是一个悬而未决的问题。
长时间运行 Agent 的核心挑战在于,它们必须在多个不同的会话(Session)中工作,而每一个新会话开始时都对之前发生的事情没有记忆。想象一下一个由轮班工程师组成的软件项目,每一个新来的工程师对上一班发生的事情没有任何记忆。因为上下文窗口是有限的,而且大多数复杂的项目无法在一个窗口内完成,Agent 需要一种方法来填补各个编码会话之间的空白。
我们开发了一个双重解决方案(a two-fold solution),使 Claude Agent SDK 能够有效地跨多个上下文窗口工作:通过一个初始化 Agent(Initializer Agent)在第一次运行时设置环境,以及一个编码 Agent(Coding Agent)负责在每个会话中取得增量进展,同时为下一个会话留下清晰的产物(Artifacts)。
一、长时间运行 Agent 的问题
Claude Agent SDK 是一个强大的通用 Agent 框架,擅长编码以及其他需要模型使用工具来收集上下文、规划和执行的任务。它具有诸如“压缩”(Compaction)之类的上下文管理功能,这使得 Agent 能够在不耗尽上下文窗口的情况下处理任务。理论上,在此设置下,Agent 应该能够持续进行任意长时间的有用工作。
然而,仅靠“压缩”是不够的。即使是像 Opus 4.5 这样在 Claude Agent SDK 上运行的前沿编码模型,如果只是给它一个像“构建一个 claude.ai 的克隆版”这样高层级的提示词,并在多个上下文窗口中循环运行,它也无法构建出一个生产级的 Web 应用程序。
Claude 的失败主要表现为两种模式:
- 试图一次性完成所有工作:Agent 倾向于试图一次性搞定整个 App。通常,这会导致模型在实施过程中耗尽上下文,留给下一个会话的是一个实现了一半且没有文档的功能。接手的 Agent 不得不猜测发生了什么,并花费大量时间试图让基本的 App 重新运行起来。即使有上下文压缩,这也经常发生,因为压缩并不总能向下一个 Agent 传递完美清晰的指令。
- 过早宣布完成:这是第二种失败模式,通常发生在项目后期。在构建了一些功能之后,后来的 Agent 实例会环顾四周,看到已经取得了一些进展,就直接宣布工作完成了。
为了解决这个问题,我们将问题分解为两部分:
- 我们需要设置一个初始环境,为给定提示词所需的所有功能奠定基础,这设定了 Agent 逐步、按功能工作的基调。
- 我们应该提示每个 Agent 朝着目标取得增量进展,同时在会话结束时将环境通过“干净的状态”留给下一次。所谓的“干净状态”
- 是指那种适合合并到主分支的代码:没有重大 Bug,代码有序且文档齐全,总体而言,开发人员可以轻松地开始新功能的工作,而无需先清理无关的混乱。
在内部实验时,我们使用了两部分解决方案来解决这些问题:
- 初始化 Agent (Initializer Agent):第一个 Agent 会话使用专门的提示词,要求模型设置初始环境:一个
init.sh脚本,一个记录 Agent 已完成工作的claude-progress.txt文件,以及一个显示添加了哪些文件的初始 git 提交。 - 编码 Agent (Coding Agent):随后的每个会话都要求模型取得增量进展,然后留下结构化的更新。
这里的关键洞察是找到一种方法,让 Agent 在以全新的上下文窗口开始时,能够快速理解工作状态。这是通过 claude-progress.txt 文件配合 git 历史记录来实现的。这些实践的灵感来自于高效软件工程师的日常工作习惯。
二、环境管理 (Environment management)
在更新后的 Claude 4 提示词指南中,我们分享了一些关于多上下文窗口工作流的最佳实践,包括一种使用“针对第一个上下文窗口使用不同提示词”的框架结构。这个“不同的提示词”要求初始化 Agent 设置环境,包含未来编码 Agent 有效工作所需的所有必要上下文。在这里,我们将深入探讨这种环境的一些关键组件。
三、功能列表 (Feature list)
为了解决 Agent 试图一次性完成 App 或过早认为项目完成的问题,我们提示初始化 Agent 编写一个全面的功能需求文件,对用户的初始提示词进行扩展。在 claude.ai 克隆版的例子中,这意味着超过 200 个功能,例如“用户可以打开新聊天,输入查询,按回车键,并看到 AI 回复”。这些功能最初都被标记为“failing”(未通过),以便后续的编码 Agent 对完整的功能样貌有一个清晰的大纲。
我们提示编码 Agent 只能通过更改 passes 字段的状态来编辑此文件,并使用措辞强烈的指令,如“删除或编辑测试是不可接受的,因为这可能导致功能缺失或错误”。经过一些实验,我们最终决定使用 JSON 格式,因为与 Markdown 文件相比,模型不太可能不适当地更改或覆盖 JSON 文件。
四、增量进展 (Incremental progress)
有了这个初始环境脚手架,下一轮的编码 Agent 被要求一次只处理一个功能。这种增量方法对于解决 Agent 试图一次做太多事情的倾向至关重要。
一旦开始增量工作,模型在进行代码更改后将环境留在干净状态仍然至关重要。在我们的实验中,我们发现引发这种行为的最佳方法是要求模型将进度提交到 git,并附上描述性的提交信息,并在进度文件中编写进度摘要。这允许模型使用 git 还原错误的代码更改并恢复代码库的工作状态。
这些方法也提高了效率,因为它们消除了 Agent 猜测发生了什么并花费时间试图让基本 App 重新运行的需要。
五、测试 (Testing)
我们观察到的**最后一个主要失败模式是 Claude 倾向于在没有适当测试的情况下将功能标记为完成。**如果没有明确的提示,Claude 倾向于进行代码更改,甚至使用单元测试或对开发服务器的 curl 命令进行测试,但无法识别该功能在端到端(End-to-End)层面是否不起作用。
在构建 Web 应用程序的情况下,一旦明确提示使用浏览器自动化工具并像人类用户一样进行所有测试,Claude 在验证端到端功能方面表现得很好。
为 Claude 提供这类测试工具极大地提高了性能,因为 Agent 能够识别并修复那些仅凭代码无法明显看出的 Bug。
尽管如此,仍遗留一些问题,例如 Claude 的视觉限制和浏览器自动化工具的限制,使得识别每种类型的 Bug 变得困难。例如,Claude 无法通过 Puppeteer MCP 看到浏览器原生的弹窗(Alert Modals),因此依赖这些弹窗的功能往往 Bug 更多。
六、快速上手 (Getting up to speed)
有了以上所有内容,每个编码 Agent 都会被提示运行一系列步骤来熟悉环境,有些步骤虽然很基础但非常有帮助:
- 运行
pwd查看当前工作目录。你只能编辑此目录中的文件。 - 阅读 git 日志和进度文件,以快速了解最近处理的内容。
- 阅读功能列表文件,并选择优先级最高且尚未完成的功能进行工作。
这种方法在每个会话中为 Claude 节省了一些 Token,因为它不必弄清楚如何测试代码。要求初始化 Agent 编写一个 init.sh 脚本来运行开发服务器,并在实现新功能之前运行基本的端到端测试,这也是有帮助的。
在 claude.ai 克隆版的案例中,这意味着 Agent 总是启动本地开发服务器,并使用 Puppeteer MCP 启动新聊天、发送消息并接收回复。这确保了 Claude 可以快速识别 App 是否处于损坏状态,并立即修复任何现有的 Bug。如果 Agent 此时反而开始实现新功能,很可能会让问题变得更糟。
鉴于此,一个典型的会话通常以以下助手消息开始:
[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] 现在让我检查是否有 init.sh 脚本来重启服务器。
<启动开发服务器>
[Assistant] 太棒了!现在让我导航到应用程序并验证一些基本功能是否仍然正常工作。
<测试基本功能>
[Assistant] 根据我的验证测试,我可以看到基本功能运行良好。核心聊天功能、主题切换、对话加载和错误处理都功能正常。现在让我更全面地查看 tests.json 文件,以了解接下来需要实现什么。
<开始新功能的工作>

七、未来工作
这项研究展示了在长时间运行的 Agent 框架中,一种可能的解决方案,使模型能够跨多个上下文窗口取得增量进展。然而,仍有未解决的问题。
最值得注意的是,目前尚不清楚是单个通用编码 Agent 在跨上下文时表现最佳,还是通过多 Agent 架构可以实现更好的性能。似乎合理的推测是,像测试 Agent、质量保证 Agent 或代码清理 Agent 这样的专门 Agent,在软件开发生命周期的子任务中可能会做得更好。
此外,此演示针对全栈 Web 应用程序开发进行了优化。未来的方向是将这些发现推广到其他领域。这些经验教训中的部分或全部很可能可以应用于科学研究或财务建模等需要长时间运行的 Agent 任务类型。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线科技企业深耕十二载,见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套 AI 大模型突围资料包:
- ✅ 从零到一的 AI 学习路径图
- ✅ 大模型调优实战手册(附医疗/金融等大厂真实案例)
- ✅ 百度/阿里专家闭门录播课
- ✅ 大模型当下最新行业报告
- ✅ 真实大厂面试真题
- ✅ 2025 最新岗位需求图谱
所有资料 ⚡️ ,朋友们如果有需要 《AI大模型入门+进阶学习资源包》,下方扫码获取~
① 全套AI大模型应用开发视频教程
(包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点)
② 大模型系统化学习路线
作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!
③ 大模型学习书籍&文档
学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。
④ AI大模型最新行业报告
2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
⑤ 大模型项目实战&配套源码
学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。
⑥ 大模型大厂面试真题
面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

以上资料如何领取?

为什么大家都在学大模型?
最近科技巨头英特尔宣布裁员2万人,传统岗位不断缩减,但AI相关技术岗疯狂扩招,有3-5年经验,大厂薪资就能给到50K*20薪!

不出1年,“有AI项目经验”将成为投递简历的门槛。
风口之下,与其像“温水煮青蛙”一样坐等被行业淘汰,不如先人一步,掌握AI大模型原理+应用技术+项目实操经验,“顺风”翻盘!

这些资料真的有用吗?
这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。

以上全套大模型资料如何领取?

更多推荐


所有评论(0)