Anthropic《Effective harnesses for long-running agents》结构译述
本文基于 Anthropic 于 2025-11-26 发布的文章《Effective harnesses for long-running agents》进行结构化译述。正文以中文解读为主,保留少量关键英文原句,帮助读者抓住原文最核心的判断。
- 原文标题:
Effective harnesses for long-running agents - 发布方:Anthropic Engineering
- 发布日期:
2025-11-26 - 原文链接:anthropic.com/engineering/effective-harnesses-for-long-running-agents
为什么值得读
Section titled “为什么值得读”这篇文章的价值,在于它讲的不是“agent 很强”这件事,而是 agent 为什么在长任务上仍然会不断失速。很多团队现在已经能让 coding agent 在几十分钟内完成一些不错的工作,但一旦任务跨多个 context window,系统就会开始出现连贯性断裂、状态遗失和目标漂移。
Anthropic 试图解决的是这个更现实的问题:如果 agent 的工作跨度以小时甚至天来计算,怎样让它在一次次重新开始的 session 中仍然持续推进,而不是每次都半途而废、重复劳动或者误判项目已完成。
长时运行 agent 的关键,不只是上下文压缩,而是让每一轮 session 都能快速接手、明确目标、留下可读 artifacts,并在结束前把环境收回到一个干净可继续的状态。
文章结构译述
Section titled “文章结构译述”先把真正的问题说清楚(对应原文:The long-running agent problem)
Section titled “先把真正的问题说清楚(对应原文:The long-running agent problem)”Anthropic 开头给出了一个很形象的比喻:像一个软件项目由轮班工程师接手,但每个新工程师上班时都没有之前的记忆。原文中的短句 "work in discrete sessions" 非常关键,它提醒我们长任务 agent 的核心限制并不是“会不会写代码”,而是“能不能跨 session 保持有效连续性”。
文章强调,单靠 compaction 还不够。上下文压缩可以延缓窗口耗尽,但不足以解决中途遗失目标、留下半成品、下一轮接手困难的问题。实际失败模式主要有两种:一是 agent 想一次性把事情做完,最后在半路耗尽上下文;二是项目已经推进到一定程度后,后来的 session 误以为“差不多完成了”。
所以问题被拆成两部分:第一轮需要搭好基础环境,使后续 session 可以按 feature 逐步推进;每一轮 coding session 都要被约束成“做一点真实进展,并为下一轮留下清晰交接物”。
两段式 harness:initializer + coding agent(对应原文:引言与整体方案)
Section titled “两段式 harness:initializer + coding agent(对应原文:引言与整体方案)”Anthropic 的解法不是单纯加长 Prompt,而是把长时 agent 拆成两个不同角色。原文里有一句短语很值得保留:"make incremental progress"。initializer agent 负责首轮环境搭建,把任务拆成可以追踪的结构;coding agent 负责每一轮稳步推进,并留下可读 artifacts。
这个思路的重点在于分工。initializer 不直接承担长期开发,而是先把任务结构化,让后续每轮都能“有东西可读、有东西可测、有下一步可做”。coding agent 则不再试图一次性完成整个产品,而是接受它只能做增量改进的事实。
这看上去像是在降低 agent 自由度,但实际上是在提高它跨 session 的总产出。因为真正拖垮长任务的,往往不是单次能力不足,而是 session 之间的衔接质量过低。
环境管理不是附属细节,而是 harness 的主体(对应原文:Environment management)
Section titled “环境管理不是附属细节,而是 harness 的主体(对应原文:Environment management)”这一节非常实操。Anthropic 不是笼统地说“写点中间文件”,而是明确提出几个关键环境组件:feature list、progress notes、git history、可直接启动项目的 init.sh、以及能用浏览器自动化或其他手段执行的基本 end-to-end 检查。
feature list 的作用,是防止 agent 一开始就“one-shot”整个应用,或者过早判断项目已完成。Anthropic 在文章里让 initializer 生成了完整的 feature requirements,并把所有功能先标成未通过。这样做的价值不是文档完美,而是让后续每一轮都知道“还有哪些事情没完成”。
另一个关键组件是 progress notes。它解决的是接力问题,而不是记录问题。新一轮 session 要能快速知道上一轮做了什么、留下了哪些坑、当前项目是否已经处于可运行状态。没有这层交接物,后续 session 会先浪费大量 token 在重新理解局面上。
测试能力必须被放进 harness,而不是留给模型自己猜(对应原文:Environment management 中的 testing 部分)
Section titled “测试能力必须被放进 harness,而不是留给模型自己猜(对应原文:Environment management 中的 testing 部分)”Anthropic 还特别强调,为 agent 提供明确的测试工具会显著提升效果。对 web app 场景,他们让 Claude 使用浏览器自动化工具,按真实用户路径去点击和验证。这样做的价值,在于很多 bug 根本不是从代码表面能看出来的。
这其实是在提醒工程团队:如果 harness 没有把“怎么验证结果”内置进去,模型就只能边做边猜。让 agent 自己想测试方法,成本高且不稳定;把测试路径写进环境和流程里,效果会可靠得多。
文章也没有把这件事说得过于乐观。它明确承认工具和视觉能力仍有限,有些浏览器原生弹窗或更细粒度的 UI 问题仍然不容易被抓到。这一点很重要,因为它提醒我们 harness 能提升下限,但不能替代所有验证层。
每轮 session 的标准开场动作(对应原文:Getting up to speed)
Section titled “每轮 session 的标准开场动作(对应原文:Getting up to speed)”这一节非常像给长时 coding agent 写 SOP。每轮开始时先看当前目录、读 progress notes、读 feature list、看 git log、启动开发环境并跑一遍基础端到端测试。之所以这些动作看起来很“机械”,恰恰说明 Anthropic 把它们视为不应再让模型自由发挥的固定动作。
这个设计的本质,是把“重新熟悉现场”标准化。与其让每轮 agent 自己决定先看什么,不如把最值得看的状态材料、最先该做的基本检查明确规定好。这样不仅节省 token,也降低了接手失败的概率。
站在工程角度看,这部分特别像交接班制度。好的 harness 不是让模型显得更聪明,而是让它不必在最容易出错的地方重复做决策。
失败模式总结与未解问题(对应原文:总结表与 Future work)
Section titled “失败模式总结与未解问题(对应原文:总结表与 Future work)”文章最后把几类常见失败模式和对应解决思路收束得很清楚:环境被留脏、进展没有记录、功能过早被标记完成、项目启动方式不明确等。Anthropic 给出的解法基本都是“把隐性经验变成显式 artifacts 或固定流程”。
同时,他们也承认还有开放问题。比如是否应该继续使用单一通用 coding agent,还是拆分成测试 agent、QA agent、cleanup agent 等更专门的角色。也就是说,这篇文章不是把问题彻底解决了,而是给出一个被验证过的强基线。
关键观点提炼
Section titled “关键观点提炼”- 长时 agent 的核心问题是跨 session 连贯性,而不是单轮写代码能力。
- compaction 能缓解窗口压力,但不能替代明确的 handoff 结构。
- initializer agent 的作用是搭任务环境和交接机制,不是直接完成产品。
- feature list、progress notes、git log、
init.sh和基础测试脚本是高价值 artifacts。 - 好的 harness 会把每轮接手动作标准化,避免模型在低价值环节重新摸索。
对工程团队的启发
Section titled “对工程团队的启发”如果你们正在尝试让 coding agent 连续工作几个小时以上,这篇文章最值得立刻借鉴的不是某个 Anthropic 专用能力,而是它对交接材料的重视。很多团队把 attention 都放在 Prompt 和模型选择上,却低估了 progress file、feature checklist、固定启动脚本、最小回归测试这类“工程琐事”的价值。
真正能让 agent 持续推进的,往往不是更强的一次性推理,而是更像团队协作的 session handoff 机制。把这些结构补上,agent 的整体质量通常会比继续加长 Prompt 更稳定。
原文链接与出处说明
Section titled “原文链接与出处说明”原文由 Anthropic Engineering 发布:
本文为结构化译述与观点整理。如需查看原文示例与更完整的上下文,请直接阅读原始页面。