长时自主编程的 harness 设计

来自 Anthropic Engineering · 期号 2026-03-24

摘要

让 AI agent 在长时间自主编程中保持稳定,关键是把任务拆碎、定期重置上下文。 Anthropic 发现,模型在长任务中容易跑偏,原因有两个:一是上下文窗口填满后失去连贯性,二是模型会产生“上下文焦虑”——以为自己快超限了,提前收尾。 他们的解法是“上下文重置”:清空当前 agent 的上下文,用一个结构化交接件把状态和下一步传给新 agent。这比“压缩”(在同一个 agent 里缩短历史)更彻底,因为压缩无法消除焦虑。代价是增加了编排复杂度和 token 开销。 受 GAN 启发,他们还设计了三 agent 架构——规划者、生成者、评估者——让评估者用一套具体标准(而非主观判断)来打分,从而在数小时的自主编程中产出完整全栈应用。 原文是工程复盘,给出了具体的失败模式与应对方案。

深读

导读 Anthropic 工程团队分享了他们如何让 AI agent 在长达数小时的自主编程中稳定产出完整全栈应用的实践经验。核心思路是借鉴 GAN 的对抗思想,用多 agent 架构(规划者、生成者、评估者)替代单 agent 模式,并配合上下文重置和结构化交接件解决模型在长任务中跑偏的问题。读完能带走一套可落地的 agent 工程化设计原则,以及具体的失败模式和应对方案。 关键信息 - 模型在长任务中两种典型失败模式:上下文窗口填满后失去连贯性,以及“上下文焦虑”——模型在接近自认为的上下文限制时提前收尾。 - 上下文重置(清空当前 agent 上下文,用结构化交接件把状态和下一步传给新 agent)比压缩(在同一 agent 内缩短历史)更彻底,因为压缩无法消除焦虑。Claude Sonnet 4.5 的焦虑程度使压缩不足以支撑长任务,上下文重置成为必需。 - 评估者 agent 使用 Playwright MCP 直接与运行中的页面交互,而非评分静态截图。每个 sprint 的评估标准设有硬阈值,任何一项低于阈值则 sprint 失败。 - 全栈应用生成中,一个 sprint 的评估标准多达 27 条(覆盖关卡编辑器),评估者发现的具体问题包括:矩形填充工具只放置起点/终点瓦片而非填充区域、删除键条件判断错误、路由匹配顺序导致 API 返回 422 错误。 - 完整 harness 运行耗时 6 小时、花费 200 美元,而单 agent 运行仅 20 分钟、9 美元。但单 agent 输出的核心功能(游戏可玩性)直接不可用,而 harness 版本的核心功能正常工作。 - 评估者 agent 需要多轮调优:初始版本会识别出问题后说服自己“问题不大”而放行,且倾向于表面测试而非探索边界情况。 逐节讲解 为什么朴素实现会失败 Anthropic 此前已证明 harness 设计对长任务 agentic coding 的效果有显著影响。早期实验用初始化 agent 将产品规格分解为任务列表,再由 coding agent 逐个功能实现,并通过交接件跨 session 传递上下文。社区也收敛到类似思路(如“Ralph Wiggum”方法用 hook 或脚本让 agent 持续迭代)。 但复杂任务中 agent 仍会随时间跑偏。两个核心原因:一是上下文窗口填满后模型失去连贯性;二是“上下文焦虑”——模型在接近自认为的上下文限制时提前收尾。上下文重置(清空上下文、启动新 agent、用结构化交接件携带状态和下一步)同时解决这两个问题。这与压缩不同:压缩在同一 agent 内缩短历史,但无法提供干净起点,焦虑仍可能持续。上下文重置的代价是交接件必须携带足够状态让新 agent 无缝接手,同时增加了编排复杂度、token 开销和延迟。 第二个问题是自我评估。当要求…

读原文

本站只做摘要与索引,全部内容版权归原作者所有。