返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

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

[复制链接]
链载Ai 显示全部楼层 发表于 3 天前 |阅读模式 打印 上一主题 下一主题


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 任务。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ