Harness 设计:如何让 Claude 处理长时间自主开发

April 12, 2026

Harness 设计:如何让 Claude 处理长时间自主开发

Harness design for long-running application development

Anthropic Engineering Blog

这篇文章整理自 Anthropic 工程博客 Harness design for long-running application development

原文真正讨论的重点,不是模型参数本身,而是另一个更工程化的问题:当任务持续数小时、跨多个阶段、还需要不断评估和纠偏时,外层 harness 应该怎么设计

Key takeaway

这篇文章真正想回答的不是“模型还能不能再强一点”,而是“当任务开始跨小时运行时,系统外层该如何组织”。Anthropic 给出的答案不是继续堆 prompt,而是重构整套 harness。

什么是 harness design

在自主编程场景里,模型能力当然重要,但效果上限往往不只由 prompt 决定,还由外层工作系统决定。原文里的 harness,可以理解成一套围绕模型运行的协作框架。

组成部分作用
任务拆分把长任务切成更可执行的阶段,降低目标漂移
Agent 分工让规划、执行、评估分别承担不同职责
上下文交接把关键状态压缩成可继续执行的 handoff
检查与打分把“做得好不好”从主观感觉变成可反馈对象
继续 / 重置机制决定什么时候延续当前路线,什么时候换一个干净上下文重新开始

原文给出的判断很明确:prompt engineering 能带来提升,但很快会触顶;继续往上走,必须重新设计整个 agent 工作流

从前端设计实验开始:先把主观质量变得可评分

Anthropic 一开始并不是直接拿这套方法做完整应用开发,而是先放在一个更容易暴露问题的场景里:前端设计

这里的关键难点不是“能不能生成页面”,而是“怎么评价页面是不是足够好”。因为很多高价值判断都带有主观性,比如页面是否高级、布局是否有层次、整体风格是否协调。这类问题不像单元测试那样有明确通过线,因此特别容易暴露 self-evaluation 的偏差。

原文在这里借用了一个很直观的结构:

  • Generator 负责生成页面
  • Evaluator 负责判断结果质量,并给出改进建议

这一步真正重要的地方,不是“把生成做得更花”,而是先把原本模糊的主观判断拆成一组能稳定执行的评分标准。只有评价标准稳定,后续的多轮迭代才有意义。

为什么要先解决评估问题

如果评估标准本身不稳定,那么多 agent 反馈系统就很难真正改进。Generator 不知道自己该优化什么,Evaluator 也无法持续输出一致判断。

所以原文先做的事情不是“让模型多生成几版”,而是先把“好设计”拆成若干更具体的方向。

评分维度关注点作用
布局清晰度信息区块是否容易理解降低页面阅读成本
视觉层级主次信息是否一眼可分提升引导性
配色统一性颜色体系是否协调一致建立整体气质
间距与节奏留白、密度、节奏是否稳定提升精致感
可用性用户是否知道该做什么保证页面不只是“好看”
现代感与风格是否有明显的审美表达防止结果流于模板化

这一步把原本模糊的主观质量,变成了可比较、可批评、可迭代的对象。

同一套思路如何迁移到长时间自主编程

前端设计实验有效之后,Anthropic 把同样的方法迁移到了更难的问题上:让 Claude 在长时间任务里持续开发完整应用

这里延续了两个非常关键的工程原则。

任务分解

完整应用开发太复杂,不能指望模型一次性从头写到尾。任务越长,越容易出现这些问题:

  • 目标逐渐模糊
  • 忘记前面约束
  • 中途偏离主线
  • 后期草率收尾

所以第一步一定是 decomposition。大任务要先拆成更小、更明确的阶段,例如需求分析、方案设计、数据模型设计、前后端实现、测试修复和部署准备。

任务拆分的意义,不只是减少复杂度,更是让每一轮 agent 都围绕一个更清晰的局部目标展开。

任务分解在解决什么

  • 把“大而模糊”的目标变成可执行阶段
  • 减少 agent 在长流程里的目标漂移
  • 让每一轮输出都能被检查和接续

如果不拆会怎样

  • 目标逐渐模糊
  • 前面约束被遗忘
  • 中途偏离主线,后期草率收尾

用结构化产物传递上下文

第二个原则是:不要把长任务的连续性寄托在聊天历史上

原文使用的是 structured artifacts。它们像工程交接文档,用来在不同 session、不同 agent 之间传递最关键的状态,而不是把整段历史原样背过去。

典型内容包括:

  • 当前计划
  • 已完成事项
  • 待办列表
  • 架构说明
  • 接口定义
  • 关键决策记录
  • 测试结果

这样做的目的不是记录一切,而是让下一轮 agent 从压缩过、结构化、可继续执行的状态出发。

三角色结构:Planner、Generator、Evaluator

把任务分解、结构化交接和独立评估放到一起之后,原文最终形成了一个三角色结构。

角色核心职责典型输出主要避免的问题
Planner理解最终目标、拆任务、定顺序路线图、阶段计划、优先级一开始就陷入局部实现
Generator写代码、搭页面、实现具体功能代码、页面、功能版本只会规划、不落地
Evaluator独立检查质量、指出问题、推动下一轮改进评分、critique、改进建议执行者自评过于乐观

Harness design 的三角色闭环

这套结构的意义很明确:不再让一个模型从头写到尾,而是让系统更接近真实工程团队。有人负责规划,有人负责执行,有人负责 review。

为什么朴素的 agentic coding 效果不稳定

原文接着分析了一个更具体的问题:为什么“让一个 agent 自己长时间写代码”的朴素方案,通常效果不够稳。

结论可以压缩成两个失败模式:

失败模式直接表现长期后果对应解法
长任务中的上下文问题忘约束、偏主线、重复劳动、草率收尾系统连贯性持续下降context reset + structured handoff
agent 的自我评估不可靠过度自信、低估问题、过早停手优化方向失真,反馈难以收敛独立 Evaluator 审查

这两个问题一个影响连续性,一个影响收敛方向。两者叠加后,系统很容易越来越像“看起来在做事”,但实际上已经失控。

Failure pattern

最危险的状态不是 agent 停下来,而是它持续产出、持续汇报进展、看起来很忙,但核心目标已经悄悄偏掉了。

失败模式一:上下文过长会破坏连贯性

随着任务推进,对话历史和状态信息会不断增长。上下文越接近上限,模型越容易出现这些问题:

  • 忘记早期约束
  • 前后行为不一致
  • 偏离主线
  • 重复劳动
  • 在任务未完成时草率收尾

原文把这种现象总结为:长任务会持续侵蚀模型的 coherence

更隐蔽的一层问题是 context anxiety。有些模型会“感觉到”上下文快满,于是开始提前总结、提前宣布完成、不再深入修改,转而做一些像收尾的动作。任务其实没完成,但模型已经想结束了。

长任务为什么会失控

解决方法:context reset

Anthropic 给出的做法不是继续堆上下文,而是做 context reset

  • 不让同一个 agent 一直背着越来越长的上下文工作
  • 在合适的时候终止当前 agent
  • 启动一个新的 agent
  • 给它一份结构化 handoff,写明已有状态、已完成工作和下一步计划

这样,新 agent 拿到的是一个更干净的起点。它不会被过长历史拖累,也不会延续“上下文快满”的焦虑。

Context reset in one sentence

不是把同一个脑子压缩后继续顶着做,而是换一个新的脑子,只继承结构化交接结果

Reset 和 compaction 的区别

原文特别强调:reset 并不等于 compaction

方案怎么做优点代价更适合的场景
Compaction把长历史总结压缩,再让同一个 agent 基于摘要继续工作保留连续线程,编排较简单旧状态惯性还在,摘要也会带来信息损失任务还没严重失焦,但上下文已偏长
Reset旧 agent 停下,新 agent 接手,只读取结构化 handoff起点更干净,更能摆脱长上下文退化系统更复杂,token overhead 和 latency 更高任务已经很长,coherence 明显下降

Reset 与 Compaction 对比

两者都在处理长上下文,但原文认为,在真正的长任务里,reset 往往比 compaction 更有效。当然,它也不是白赚:系统编排会更复杂,token overhead 和 latency 也都会增加。

失败模式二:self-evaluation 不可靠

第二个失败模式,是 self-evaluation 本身不可靠。

当一个 agent 被要求评价自己刚完成的结果时,常常会出现系统性偏正面的倾向:

  • 过度自信
  • 低估问题严重性
  • 误判结果已经“足够好了”
  • 过早停止优化

这意味着,让执行者同时担任裁判,本身就是一种不稳定设计。

原文也指出,这个问题并不只存在于审美任务里。即使任务存在客观反馈,例如代码能否运行、测试能否通过,执行者依然可能高估自己的工作质量。

解决方法:把生成和评估拆开

因此,原文给出的关键杠杆不是让同一个 agent 更会自省,而是把生成和评估明确拆开

也就是:

  • 一个 agent 负责做事
  • 另一个 agent 负责挑毛病和审查结果

相比让 generator 严厉地批评自己,单独训练或校准一个更 skeptical 的 evaluator,通常更容易,也更稳定。

如果把这和前面的 reset 放在一起,整套设计思路就很清楚了:

杠杆 1:定期换脑子

通过 context reset 切断长上下文带来的退化,避免同一个 agent 越做越乱。

杠杆 2:让别人挑毛病

通过独立 Evaluator 拆掉执行者自评偏正面的天然缺陷。

为什么实验先从前端设计开始

原文先从前端设计做实验,不是因为设计最重要,而是因为这里最容易看出问题。

如果不做额外干预,Claude 往往会生成一类很典型的页面:

  • 布局安全
  • 结构规整
  • 功能没有明显问题
  • 但视觉上普通
  • 缺乏个性和设计感

也就是说,它很容易做出技术上合格、审美上平庸的结果。这个场景非常适合验证:如果把评估标准做清楚,并让 generator 和 evaluator 分离,结果是否真的能从模板化安全答案推向更强的设计表达。

Why frontend first

前端设计是最容易暴露问题的试验场:它能很快区分“能做出来”和“真的做得好”之间的差距。

两个关键洞察

原文把这套前端设计 harness 的形成,主要归结为两个洞察。

审美不能完全量化,但可以被评分标准逼近

美感本身当然不能被完全压缩成一个数字,但这不意味着它完全无法评估。更实用的做法是:不要直接去问“它美不美”,而是把主观判断拆成一组设计原则,再围绕这些原则进行评分

换句话说,不能直接量化审美,但可以通过一组较稳定的标准,把主观质量逼近成可比较的评价体系。

把生成和打分分开,才能形成反馈闭环

只要把 generator 和 evaluator 分开,系统就能形成稳定循环:

  1. 生成页面
  2. 评估页面
  3. 输出详细批评
  4. 再生成下一版

反馈闭环一旦稳定,generator 才会真的被持续推着变好。

四个评分标准

为了让设计质量变得可评分,原文设计了四条 grading criteria,并同时提供给 generator 和 evaluator。

标准看什么常见低分表现权重倾向
Design quality整体统一性,颜色、字体、布局、图片与细节是否构成一个协调整体东拼西凑、气质不统一、视觉中心不明确
Originality是否做了真正的创造性选择,而不是继续套模板默认组件感强、过度保守、缺乏表达
Craft字体层级、间距一致性、配色和谐度、对比度、排版基本功细节粗糙、节奏混乱、排版松散
Functionality页面是否真正可用,用户是否能理解用途并完成任务能看不能用、交互不清、信息组织混乱

原文也明确表示,这四个标准并不是等权的。相比 Craft 和 Functionality,它更强调 Design qualityOriginality,因为模型通常已经比较擅长做“工整、可用”的页面,真正稀缺的是整体气质和原创表达。

用 few-shot examples 校准 evaluator

为了让 evaluator 的打分更稳定,原文还使用了一些 few-shot examples 来做校准,并在示例中附上详细评分拆解。

这样做有两个直接作用:

  • 让 evaluator 的判断更接近作者本人的审美偏好
  • 减少不同轮次之间的 score drift

也就是说,few-shot 的价值不只是给例子,更是在稳定评分口径。

前端设计循环是如何运行的

原文使用 Claude Agent SDK 搭建了整个迭代循环。它不是一个“多出几张视觉稿”的轻流程,而是一个真实的长时间反馈系统。

整体流程可以概括成四步:

步骤参与角色动作产出
1Generator生成一个可运行的前端页面初版页面
2Evaluator用 Playwright MCP 真实打开、浏览和交互页面可观察行为与体验反馈
3Evaluator按四个标准打分,并写出详细 critique分数 + critique
4Generator根据反馈继续 refine,必要时直接 pivot下一轮版本

前端设计 feedback loop

下面这个视频来自原始文章,位于前端设计实验部分、也就是 Scaling to full-stack coding 之前。它能更直观看到这套 generator-evaluator 循环如何把页面一路推向更复杂的结果。

视频来源:Anthropic Engineering 原文页面中的原生 MP4 资源。

这个系统为什么会很慢

原文提到,这套系统每次通常会运行 5 到 15 轮。由于 evaluator 需要真实浏览页面,而不是瞬时看图打分,所以每一轮都需要实际运行时间。最终,一次完整运行最长可以达到 4 小时

这说明它并不是“快速出几版视觉稿”的轻量流程,而是一个真实的、长时间运行的 agent 反馈系统。

5–15

通常需要的迭代轮数

Playwright

Evaluator 不是只看截图,而是真实浏览与交互

4 小时

一次完整运行可能达到的时长上限

Generator 每轮还要决定继续打磨还是直接转向

原文还要求 generator 在每轮评估后,不只是被动接收反馈,还要主动做策略判断:

  • 如果分数趋势不错,就沿当前方向继续 refine
  • 如果当前方向不理想,就不要只是修修补补,而是直接 pivot,尝试完全不同的审美路线

这意味着系统并不是只会做局部小修,它也具备在必要时进行大幅风格转向的能力。

Refine vs Pivot

Refine

当前方向有效,就持续打磨细节、强化完成度。

Pivot

当前路线不对,就直接换审美方向,而不是在错误轨道上继续修补。

实验中观察到的结果

原文最后总结了几类比较稳定的现象。

现象它说明了什么
分数通常会先上升,再进入平台期Evaluator 能推动早期快速改进,但提升不是无限持续
有些设计平滑优化,有些会突然跳变Feedback loop 不只会做微调,也可能触发创意转向
评分标准本身也在塑造输出风格评分体系既是测量工具,也是生成方向的隐性控制杆
分数上升,不代表最后一版一定最讨喜可评分不等于完全等价于人的最终审美判断
迭代越多,设计复杂度通常越高系统会逐步把模型推向更大胆、更复杂的表达
即使第一轮,也已经优于完全不加约束的生成criteria 本身就已经能把输出从默认模板拉开

一个代表性案例:荷兰艺术博物馆网站

原文最后分享了一个非常典型的案例:让模型设计一个荷兰艺术博物馆网站。

到第 9 轮时,模型生成的是一个深色、干净、精致的虚构博物馆 landing page,已经很好,也基本符合预期,但仍然属于“优秀但不意外”的答案。

真正有意思的是第 10 轮。模型突然放弃之前路线,把网站重做成一种空间化体验:

  • 用 CSS 透视构建一个 3D 房间
  • 地面是棋盘格
  • 画作以更自由的方式悬挂在墙面上
  • 导航不再依赖传统滚动或菜单
  • 用户通过“门洞”在不同展厅之间移动

这已经不再是普通 landing page,而更像一个可以游览的数字展览空间。原文认为,这类结果在单次生成里几乎不会自然出现,而多轮 generator-evaluator 反馈系统,恰恰可能把模型推向这种原本不会主动探索的方向。

总结

Summary

01 Prompt 会触顶

单靠 prompt engineering,提升很快会到上限;真正的增益来自 harness design

02 两个核心失效点

长任务里最关键的不是会不会写,而是能否控制 上下文退化自评失真

03 系统比单体更重要

更稳的方案是通过 Planner / Generator / Evaluator 分工、结构化交接与 context reset 来形成可持续迭代的工作流。

如果把这套思路放回自主编程场景,它给出的启发非常明确:高质量 agent 系统的重点,不只是让模型会做事,而是让它能在长时间、多阶段、可审查的流程里持续把事情做对

从前端实验,走向全栈自主开发

如果说前半篇更像在搭一个“能不能跑通”的试验台,那后半篇才真正进入我更关心的部分:这套方法能不能扛住完整应用开发这种更长、更重、更容易失控的任务

前端设计实验已经证明了两件事:独立评估是有价值的,以及反馈回路确实可以把结果一步步往上推。但一旦目标从“做一个更好的页面”变成“持续推进一个完整系统”,事情立刻就不一样了。

这一步的难度不是线性增加,而是直接换了问题类型。前端页面再普通,至少还比较容易看出成品长什么样;但全栈任务会同时引入更多新的约束:

  • 前后端接口要闭环
  • 数据状态要长期保持一致
  • 改一处功能,可能影响整条流程
  • 任务持续时间更长,更容易中途失焦
  • 最终质量不能只看“像不像”,还要看系统是不是真的能跑

Shift of focus

到了全栈场景,harness 的目标已经不只是“把结果做得更好看”,而是让系统在长时间执行中仍然朝完整应用持续收敛

全栈场景下,harness 解决的已经不只是页面质量

如果说前端设计实验主要在解决“如何把主观质量变得可评估”,那么到了全栈任务,harness 关注的维度会明显扩张。

维度前端实验更关注什么全栈开发更关注什么
目标质量审美、层级、原创性、可用性功能闭环、架构一致性、交付完整度
反馈来源页面浏览与人工偏好拟合运行结果、测试、日志、交互、缺陷报告
失败表现风格保守、设计平庸、细节粗糙任务偏航、接口断裂、状态错乱、假完成
迭代单位页面版本模块、接口、数据流、功能阶段
终止条件设计达到较高主观分数系统可运行、可验证、可继续维护

如果把前端实验看成是在训练系统“怎么更会挑毛病”,那全栈场景要解决的就是另一件更麻烦的事:怎么把挑毛病、写代码、跑验证、做交接,全都接到同一条长流程里

也正因为这样,后半段读起来就不再像“又一个 prompt 技巧总结”,而更像在讨论一套真正的工程工作流。

升级后的架构:编排层、执行层、反馈层

原文后半段谈 architecture 时,我最喜欢的一点是:它不再执着于展示“单个 agent 又学会了什么”,而是把注意力放回到外层工作系统怎么把不同角色真正组织起来

如果用更接近中文工程博客的说法,我会把这套结构压缩成三层。

层级负责什么典型产物
编排层拆任务、定阶段、做 handoff、决定何时 reset计划、阶段目标、交接摘要
执行层实现代码、修改页面、连通前后端、修问题代码变更、运行中的应用、功能版本
反馈层跑测试、打开应用、收集证据、指出缺陷失败用例、观察记录、评估结论

全栈 harness 的三层结构

这一层次划分很重要,因为它意味着系统不再把“理解任务、写代码、判断结果”混成一个动作,而是把它们拆成可以持续传递的职责链条。

这个 harness 是怎么跑起来的

到这里,后半段最值得借鉴的东西就已经不是某一个提示词,而是整套长任务推进方式。原文先把机制讲清楚,然后马上给出第一个真正的长时间编程案例:用这套 harness 去做一个复古 2D 游戏制作器

整体流程大致是这样:

  1. 接收高层目标,明确要构建什么应用
  2. Planner 先把一句话需求扩展成完整规格
  3. Generator 围绕当前阶段实现代码与界面
  4. Evaluator 用 Playwright MCP 真正去操作 UI、检查 API 与状态
  5. 每一轮根据验收结果决定继续推进还是返工

长任务 harness 的运行生命周期

这里最关键的一点是:评估依据不再主要来自模型的自述,而来自运行中的证据。一旦任务进入全栈阶段,这种差别会比前端实验更重要,因为很多问题只有在系统真的跑起来后才会暴露。

原文这个游戏制作器案例里,目标不是只拼一个 demo 页面,而是要把核心创作链路真正打通,包括:

  • 关卡编辑器
  • 精灵编辑器
  • 实体行为定义
  • 可试玩模式

更具体一点说,他们先把简单提示扩成了 16 个功能、10 个 sprint 的规格,再在每个 sprint 前做一次 contract negotiation,把“这一轮到底算完成什么”说清楚。这个顺序很重要:先定义可验收结果,再让 Generator 去做实现。

先看单 agent 版本。原文这里连续给了三张图,基本就把问题暴露干净了:打开时像个产品、编辑时也像那么回事,但一到真正试玩就断。

单 agent 版本:打开应用后的初始界面

单 agent 版本:打开应用后的初始界面。

单 agent 版本:在 sprite editor 中创建精灵

单 agent 版本:在 sprite editor 中创建精灵。

单 agent 版本:尝试玩自己创建的关卡,但没有成功

单 agent 版本:尝试玩自己创建的关卡,但没有成功。

原文还做了一个很直接的对比:

方案运行方式时间 / 成本最终效果
单 agent直接从提示开始生成约 20 分钟 / 9 美元看起来像编辑器,但试玩链路是断的
完整 harnessPlanner + Generator + Evaluator,多轮验收推进约 6 小时 / 200 美元UI 更完整,核心玩法链路真正打通

这个案例有代表性,是因为它非常像真实软件开发里最常见的失败模式:每个界面都像那么回事,但真正一跑主流程就断。单 agent 版本的问题就很典型:表面上像是一个可以用的编辑器,但真正试玩时就会发现角色虽然能显示出来,却不能正常响应输入;布局也浪费空间,流程不够清晰。原文提到,问题根因之一是实体定义和运行时连接其实没有真的接上

而 harness 版本明显更像一个能工作的产品:编辑器更完整,视口利用更合理,甚至还内置了 AI 生成功能去辅助生成游戏内容。更重要的是,试玩模式终于不是摆设,角色可以真正被操控,主路径被打通了。

完整 harness 版本的几张图,读法也很顺:先是进入应用,再是编辑体验,再到 AI 生成关卡,最后才是真正把游戏跑起来。

完整 harness 版本:创建新游戏时的初始界面

完整 harness 版本:创建新游戏时的初始界面。

完整 harness 版本:更干净、更易用的 sprite editor

完整 harness 版本:更干净、更易用的 sprite editor。

完整 harness 版本:使用内置 AI 功能生成关卡

完整 harness 版本:使用内置 AI 功能生成关卡。

完整 harness 版本:AI 生成关卡后的另一个状态

完整 harness 版本:AI 生成关卡后的另一个状态。

完整 harness 版本:试玩生成出来的游戏

完整 harness 版本:试玩生成出来的游戏。

但这个案例最有价值的地方不是“最后成功了”,而是 Evaluator 抓到的问题非常具体,也非常像真实 QA 会抓出来的东西。原文里提到过几类典型缺陷:

  • 矩形填充工具只在拖拽起点和终点放 tile,没有真正填满区域
  • 删除实体的逻辑条件写错,导致选中后无法按预期删除
  • FastAPI 路由顺序错误,/frames/reorder 被错误匹配成 frame_id

这些问题单看都不“宏大”,但它们恰恰说明了为什么独立评估很重要:长时间编程里最致命的 bug,很多时候不是模型完全不会做,而是已经做到了 80%,却没人把剩下那 20% 真正验完

为什么 harness 本身也要不断迭代

原文这里的重点很简单:harness 不是定稿,它本身也会出问题

常见问题主要有四类:

  • 拆得太粗,任务容易失焦
  • 拆得太细,流程容易空转
  • handoff 太长,噪音会跟着传下去
  • 评估口径不稳,系统会误以为自己在进步

所以后半段真正关心的,已经不是“要不要 loop”,而是哪些结构值得继续保留

为什么要迭代 harness

因为 agent 的错误不只来自模型能力,也来自流程如何分阶段、如何交接、如何定义“完成”。

迭代的目标是什么

不是加更多步骤,而是找出哪些结构真的能提升收敛质量,哪些只是让系统看起来更忙。

这也是后半段和前半段最不同的地方:前半段是在证明 feedback loop 有价值,后半段则开始追问什么样的 loop 才值得保留

为什么后来去掉了 sprint construct

原文后半段一个很重要的变化,就是开始做减法:去掉一层类似 sprint construct 的阶段脚手架。

这层结构的好处很明显:

  • 方便切段
  • 方便检查里程碑
  • 看起来更像人类团队流程

但问题也同样明显:

  • 容易为了满足阶段格式而工作
  • 中间交付变多,不代表有效进展变多
  • 系统会出现“看起来在推进,实际上在空转”的假象

有 sprint 与无 sprint 的差异

方案优点代价更适合什么情况
带阶段脚手架更清楚地切分大任务,方便阶段检查容易过度形式化,增加中间交接负担任务边界非常模糊、模型仍容易失控时
去掉这层脚手架路径更短,围绕真实目标直接推进对评估与交接质量要求更高模型更强、外层验证更稳定时

这一段最值得记住的一句话是:harness 不是越复杂越好,真正重要的是保留承重结构

更新后的 harness 带来了什么

原文这里接着给了更新后的 V2 harness 案例:用它去做一个运行在浏览器里的 DAW(数字音频工作站)

这一段最关键的变化,其实就一句话:去掉 sprint 之后,系统仍然能把长任务往前推。他们保留 Planner 和 Evaluator,但把 Evaluator 改成按构建回合整体验收,而不是每个 sprint 都验。

原文给出的结果也很直接:总耗时约 3 小时 50 分,总成本约 124.70 美元。第一轮构建连续跑了两个多小时,这至少说明一件事:更轻的 harness 并没有马上失效。

最终产物已经有了 DAW 的核心骨架:

  • 编排视图
  • 混音器
  • 传输控制
  • 一个可通过提示驱动的内置代理流程

而且它不只是“界面像 DAW”。原文里给了一个很具体的演示:代理可以根据提示去设节奏和调性、放旋律、加鼓、调混音,再加一点混响。也就是说,系统已经开始具备一条能走通的制作流程。

但 Evaluator 也很快指出,这个结果离“完整”还有距离。第一轮 QA 就发现,很多核心能力还停留在展示层,比如 clip 不能拖动、缺少乐器控制面板、效果器也没有图形化编辑。第二轮 QA 则继续补刀:录音还是 stub,没有真实麦克风采集;clip 不能通过边缘拖拽改长度,也没有 split;EQ 等效果器仍然只是数字滑块,缺少真正的可视化操作。

这里原文没有再塞很多截图,而是直接给了一个演示视频。对 DAW 这种交互很强的应用来说,这样反而更有效。

视频来源:Anthropic Engineering 原文页面中的原生 MP4 资源。

所以这部分最适合压成一句话:更新后的 harness 更轻了,但没有放弃验证

更新后的 harness:收益与代价

  • 收益:更少被长上下文拖累,更容易围绕真实结果纠偏
  • 代价:系统仍然贵、仍然慢,而且评估设计不好照样会跑偏

这篇文章真正说明了什么

把前后两部分放在一起看,这篇文章其实只说明了一件事:长时间自主开发的瓶颈,不只是模型会不会写,而是系统能不能持续把它约束在正确轨道上

所以真正重要的,不只是更强的单轮生成,而是:

  • 任务怎么拆
  • 结果怎么验
  • 什么时候该 reset
  • 哪些流程该删掉

Final takeaway

对个人开发者来说,最有价值的启发不是“赶紧搭一个更复杂的 multi-agent 系统”,而是先把三件事想清楚:任务怎么拆、结果怎么验、什么时候该重启而不是硬顶

术语对照

术语这篇文章里的中文理解
Harness围绕模型运行的外层编排系统
Handoff结构化交接,把关键状态交给下一轮 agent
Context reset停掉旧 agent,用更干净的上下文重新接手
Evaluator独立评估者,负责指出问题而不是顺手实现
Refine / Pivot沿当前方向继续打磨 / 直接换路线重来
Sprint construct阶段性交付脚手架,而不是狭义敏捷冲刺

参考资料