AI ENGINEERING · 深度解读

给 AI 套上一根缰绳
它才不会"跑着跑着就跑偏"

Anthropic 官方工程实践:当你让 AI 连续干 4 个小时、自动写完一整个应用,靠的不只是更强的模型,而是模型外面那层叫 Harness 的编排骨架。

原文 Anthropic Engineering · 作者 Prithvi Rajasekaran(Labs 团队)· 2026-03-24

🐴 先搞懂一个词:Harness 是什么?

Harness 直译是"缰绳 / 马具"。在 AI 里,它指包在大模型外面的那层运行时编排——负责管上下文、调工具、控制循环、出错恢复、会话交接。模型是马,harness 是缰绳和马鞍:马本身再强,没有缰绳也驾驭不了长途。这篇文章讲的就是怎么设计这根缰绳,让 AI 能独立干完一个多小时的复杂任务。

1问题:AI 干长活,为什么总"掉链子"?

作者要解决两个看似无关的难题:让 Claude 做出有审美的前端设计,以及让它无人干预地写完整个应用。两者都先用提示词和 harness 优化冲到了远超基线的水平,但都撞到了天花板。他观察到两个顽固的失败模式:

🌫️

上下文焦虑(Context Anxiety)

任务一长,上下文窗口被填满,模型开始"丢失连贯性";有些模型甚至会因为感觉快到上限,就提前草草收尾。
🪞

自我评估失灵

让 AI 评判自己的产出,它几乎总是盲目自夸——哪怕在人眼里质量明显平庸。尤其设计这种主观任务,没有"测试通过/失败"的硬标准。

2灵感来自 GAN:让两个 AI 互相"较劲"

作者借鉴了 生成对抗网络(GAN) 的思路:与其让一个 AI 又当运动员又当裁判,不如把"干活的"和"评判的"彻底分开

关键洞察:把"这个设计好不好看?"这种没法回答的问题,翻译成"它符不符合我们这套设计原则?"——给 AI 一个能打分的具体标准。他写了 4 条评分准则(设计质量、原创性、工艺、功能性),并刻意给"设计质量"和"原创性"加权,专门惩罚那种紫色渐变+白卡片的"AI 套路味"。

把"裁判"调教得挑剔,远比让"运动员"自我批判要容易。一旦有了外部反馈,生成器就有了可以对着死磕的目标。— 原文核心方法

一个惊艳的例子:让 AI 做荷兰艺术博物馆网站,第 9 轮还只是普通的深色落地页,第 10 轮它突然推翻重来——用 CSS 透视做了一个 3D 展厅,画作挂在墙上,靠"穿过门"在展厅间导航。这种创造性飞跃,单次生成根本做不到。

3三个 Agent 分工:从设计扩展到全栈开发

把这套"对抗"模式搬到写完整应用上,就形成了三角色架构——这恰好对应软件开发里"规划 → 开发 → 测试"的天然分工:

🗺️

Planner 规划

把你一句话的需求,扩写成一份雄心勃勃的产品规格书。只定"做什么",不抠技术细节,避免错误层层放大。
🔨

Generator 生成

一次只做一个功能(sprint),用 React+FastAPI+SQLite 实打实地写代码,交给 QA 前先自查。
🔍

Evaluator 评判

用 Playwright 像真人一样点击应用,测 UI/接口/数据库,对照标准打分。任一项不达标,打回重做。

规划 ➜ 生成 ⇄ 评判(不达标就带着具体 bug 反馈打回)

两个 agent 还会在动工前"签合同"(sprint contract):先就"这一块做到什么程度算完成、怎么验证"达成一致,再写代码。沟通全程用文件传递——一个写文件,另一个读了再回。

💡 我的看法

这套架构最妙的地方,是它没有发明新东西,而是把人类成熟的软件工程协作搬给了 AI:PM 写需求、工程师写代码、QA 挑 bug。我们花了几十年才明白"写代码的人不能自己验收",现在同样的纪律被套到了 AI 身上。

而且注意那个细节——用文件而不是内存来传递上下文。这跟"Anthropic/Cursor 都收敛到用文件不用向量库"是同一个哲学:文件简单、可审计、能跨会话。朴素的工程智慧,往往比花哨的方案更耐用。

4真实数据:贵 20 倍,但东西真的能跑

同一句提示"做一个 2D 复古游戏制作器",单 agent vs 完整 harness 的对比非常直白:

方案耗时成本结果
单 Agent20 分钟$9界面浪费空间,游戏根本玩不了——实体不响应输入
完整 Harness6 小时$20016 个功能/10 个 sprint,含 AI 生成器,游戏真能玩

完整 harness 贵了 20 多倍,但差距一目了然。更重要的是评判器抓到的 bug 极其具体,精确到代码行——比如:删除键处理在 LevelEditor.tsx:892 的判断条件写错了 /frames/reorder 路由定义在 /{frame_id} 之后,被误判成整数 → 422 报错。这种反馈,生成器拿到就能直接改,不用再排查。

💡 我的看法

$200 跑 6 小时听起来奢侈,但换算成人——一个工程师 6 小时做出一个能玩的游戏雏形,$200 便宜得离谱。这正呼应了 Boris Cherny 那句"少招人,多给 token"。harness 的本质,是用算力换确定性:你多花的钱,买的是"东西真的能跑"而不是"看起来像那么回事"。

5反转:模型变强后,要主动"拆掉"自己的缰绳

第一版 harness 笨重、慢、贵。作者于是做了件反直觉的事——主动做减法。他提出一个值得记住的原则:

harness 里每一个组件,都编码了一条"模型自己做不到"的假设。而这些假设会随模型变强迅速过期,所以值得反复压力测试。— 原文金句

当 Opus 4.5 升级到 Opus 4.6,"上下文焦虑"基本自愈了,于是他直接删掉了"上下文重置"和"sprint 拆分"——模型现在能自己连续写两个多小时不跑偏。但 Planner 和 Evaluator 保留了:去掉 Planner,生成器会偷懒少做功能;Evaluator 则变成"按需使用"——

评判器不是非黑即白的开关。只有当任务超出当前模型独立能可靠完成的边界时,它才值得那份成本。— 关于何时该用评判器

最终用新 harness 做了个浏览器里的数字音频工作站(DAW):约 4 小时、$124,能编曲、混音,还能用自然语言指挥 AI 谱一小段曲子。虽然远不专业(毕竟 Claude "听不见"声音),但核心都能跑。

带得走的几条经验

🔬

对着你要用的模型做实验

读它在真实问题上的运行轨迹(traces),针对性调优,而不是凭空设计。
🧩

复杂任务就拆解 + 派专门的 agent

给问题的每个侧面配一个专长 agent,往往能挖出额外的性能空间。
✂️

新模型一来,就重新审视 harness

删掉不再"承重"的部件,加上以前做不到、现在可能实现的新能力。
♾️

有趣的组合空间不会缩小,只会移动

模型越强,越有空间去搭建超越其基线能力的 harness。AI 工程师的活儿,就是不断找到下一个新组合。

🎯 一段话总结

让 AI 独立干完长任务,光靠模型不够,得靠 harness(缰绳层)。核心招数是借鉴 GAN,把"干活的"和"评判的"分开,再加一个"规划的",形成 Planner→Generator⇄Evaluator 三角;用文件交接上下文、用具体可打分的标准替代模糊判断。但缰绳不是越多越好——模型一变强,就要主动拆掉过期的脚手架。harness 设计的本质,是持续校准"模型做不到什么"这条不断移动的边界线。