免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

Anthropic工程实践:AI Agent如何连续工作数天完成复杂项目?

发布日期:2026-01-12 22:16:26 浏览次数: 2547
作者:活水智能

微信搜一搜,关注“活水智能”

推荐语

AI Agent如何突破上下文限制,实现持续数天的复杂项目开发?Anthropic工程团队分享双管齐下解决方案。

核心内容:
1. AI Agent在长期任务中面临的两大挑战:上下文窗口限制与进度保持难题
2. 创新的双阶段解决方案:初始化Agent搭建基础 + 编码Agent实现增量开发
3. 通过git历史与进度文件实现跨会话状态同步,借鉴优秀工程师的工作实践

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家


AI Agent 现在能处理需要数小时甚至数天的任务。但有个难题:它们无法在多个上下文窗口之间保持进度。

核心问题在哪?Agent 以离散会话方式工作,每次新会话启动时完全不记得之前发生的事。想象一个软件项目,工程师轮班作业,但每位新工程师上岗时对前一班的工作一无所知。上下文窗口容量有限,大多数复杂项目无法在单个窗口内完成。Agent 需要找到跨越这些间隙的方法。

我们为 Claude Agent SDK 构建了双管齐下的解决方案:初始化 agent 在首次运行时搭建环境,编码 agent 在每次会话中实现增量进展,同时为下次会话留下清晰记录。代码示例见快速开始文档。

长期运行 agent 的难题

Claude Agent SDK 擅长处理编码及其他需要工具、收集上下文、规划和执行的任务。它通过压缩管理上下文,避免 agent 耗尽上下文窗口。理论上,agent 应该能持续工作下去。

但光靠压缩还不行。即使是 Opus 4.5 在 Claude Agent SDK 上跨多个上下文窗口运行,也无法仅凭「构建一个 claude.ai 克隆」这样的指令构建出生产级 Web 应用。

Claude 会以两种方式失败。第一,它试图一次性完成太多任务——企图一口气搞定整个应用。这导致实现过程中耗尽上下文,给下一个会话留下半成品、无文档的功能。Agent 只能靠猜测还原经过,浪费时间修复基础应用。即便有压缩机制,这种情况依然会发生,因为压缩并不总能给下一个 agent 传递明确指令。

第二种失败出现在项目后期。构建了部分功能后,后续 agent 实例四下查看,发现有进展,就过早宣告任务完成。

这分解为两个问题。第一,我们需要搭建初始环境,为所有功能打好基础,让 agent 按步骤逐个功能推进。第二,每个 agent 要在实现增量进展的同时,保持环境整洁——代码达到可合并至主分支的标准:无重大 bug、结构清晰、文档完备,便于下一个 agent 无缝衔接。

我们用两步方案解决:

  1. 1. 初始化 agent:首次会话搭建 init.sh 脚本、claude-progress.txt 日志文件,以及标明新增文件的初始 git 提交。
  2. 2. 编码 agent:后续每次会话实现增量进展,随后留下结构化更新记录。

关键洞察:agent 需要在启动新上下文窗口时迅速掌握工作状态。我们通过 claude-progress.txt 文件配合 git 历史实现——借鉴优秀软件工程师的日常实践。

环境管理

在更新的 Claude 4 提示指南中,我们分享了多上下文窗口工作流的最佳实践,包括「首个上下文窗口使用不同提示」。这个提示指导初始化 agent 搭建环境,涵盖未来编码 agent 所需的全部上下文。下面深入探讨关键组件。

功能清单

为阻止 agent 一次性完成应用或过早宣告成功,我们让初始化 agent 基于用户提示编写全面的功能需求文件。对于 claude.ai 克隆,这意味着 200 多项功能,例如「用户可以开启新聊天,输入查询,按回车,接收 AI 响应」。所有功能初始状态为「失败」,后续编码 agent 由此获得完整功能的清晰蓝图。

{
    "category":"functional",
    "description":"新建聊天按钮创建新对话",
    "steps":[
      "导航至主界面",
      "点击「新建聊天」按钮",
      "验证新对话已创建",
      "检查聊天区显示欢迎状态",
      "确认对话出现在侧边栏"
    ],
    "passes":false
}

编码 agent 只能通过修改 passes 字段来编辑此文件。我们用措辞严厉的指令,比如「删除或编辑测试绝不可接受,因为这可能导致功能缺失或出现 bug」。经测试,我们选择 JSON 格式——模型修改或覆写 JSON 文件的不当操作比 Markdown 少。

增量进展

有了这套框架,我们要求编码 agent 每次只处理一项功能。这种增量方法对解决 agent 试图一次性完成过多任务的问题至关重要。

增量工作只有在模型每次修改后保持环境整洁时才有效。我们发现,最佳方法是要求模型用描述性提交信息将进度提交至 git,并在进度文件中记录摘要。这样模型可用 git 回滚错误修改,恢复工作状态。

这也提升了效率,省去 agent 猜测经过和浪费时间修复基础应用的麻烦。

测试

Claude 最后一个主要失败点:未经充分测试就将功能标记为完成。如果没有明确提示,Claude 会修改代码,甚至对开发服务器运行单元测试或 curl 命令,但无法验证功能是否端到端正常工作。

对于 Web 应用,一旦明确告知 Claude 使用浏览器自动化工具并像真实用户那样测试,它就能很好地完成端到端验证。

Claude 通过 Puppeteer <a href=MCP 服务器测试 claude.ai 克隆时的截图" class="rich_pages wxw-img" data-ratio="0.5625579240037072" data-w="1079" style="display: block;max-width: 100%;margin: 0.1em auto 0.5em;border-radius: 4px;">

这些测试工具大幅提升了性能。Agent 能识别并修复仅从代码无法发现的 bug。

部分问题仍未解决。Claude 的视觉能力和浏览器自动化工具存在局限,难以捕获所有类型的 bug。例如,Claude 无法通过 Puppeteer MCP 看到浏览器原生 alert 模态框,依赖这些模态框的功能往往更易出现 bug。

快速进入状态

现在每个编码 agent 都会执行以下步骤来定位自己:

  1. 1. 运行 pwd 查看工作目录。你只能编辑该目录内的文件。
  2. 2. 阅读 git 日志和进度文件,了解近期工作。
  3. 3. 查看功能清单,选择优先级最高的未完成功能。

这为每个会话节省了 Claude 的 token,因为它无需费心弄清如何测试代码。让初始化 agent 编写运行开发服务器的 init.sh 脚本,然后在实现新功能前执行基本端到端测试,也很有帮助。

对于 claude.ai 克隆,agent 总是先启动本地开发服务器,用 Puppeteer MCP 开启新聊天、发送消息并接收响应。这让 Claude 能快速发现应用是否损坏,立即修复 bug。如果 agent 直接着手实现新功能,反而会加剧问题。

典型会话这样开始:

[Assistant] 我先了解项目当前状态
[ToolUse]<bash-pwd>
[ToolUse]<read-claude-progress.txt>
[ToolUse]<read-feature_list.json>
[Assistant]让我查看git日志,看看最近做了什么
[ToolUse]<bash-gitlog--oneline-20>
[Assistant]现在检查是否有init.sh脚本来重启服务器
<启动开发服务器>
[Assistant]很好!现在导航到应用,验证部分基础功能是否正常
<测试基本功能>
[Assistant]根据验证测试,基础功能运行良好核心聊天功能主题切换对话加载和错误处理都正常现在更全面地查看tests.json文件,了解下一步要实现什么
<开始处理新功能>

Agent 失败模式及解决方案

问题初始化 Agent 做法编码 Agent 做法
Claude 过早宣告整个项目完成
搭建功能清单文件:基于输入规格,创建包含端到端功能描述的结构化 JSON 文件
会话开始时查看功能清单。选定单项功能处理
Claude 留下有 bug 或进度未记录的环境
创建初始 git 仓库和进度笔记文件
先阅读进度笔记和 git 提交日志,对开发服务器执行基本测试以捕获未记录的 bug。结束时编写 git 提交和进度更新
Claude 过早将功能标记为完成
搭建功能清单文件
自我验证所有功能。仅在仔细测试后才标记功能为「通过」
Claude 浪费时间摸索如何运行应用
编写运行开发服务器的 init.sh 脚本
先阅读 init.sh

未来工作

这项研究展示了长期运行 agent 框架中的一组可能解决方案,能让模型在多个上下文窗口间实现增量进展。但仍有悬而未决的问题。

最显著的是:单一通用编码 agent 在各类上下文中表现最佳,还是多 agent 架构效果更好?专门的 agent——测试 agent、质量保证 agent 或代码清理 agent——可能在软件开发生命周期的各项子任务中做得更出色。

这个演示针对全栈 Web 应用开发优化。未来方向是将这些发现推广至其他领域。部分或全部经验教训可能适用于科研或金融建模中的长期运行 agent 任务。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅