如果你用过各种 AI Agent(无论是写代码、做项目还是自动化工具),你大概率遇到过这些问题:
这些问题看起来像是"模型不够聪明",但 Anthropic 给出了一个更现实的结论:
问题不在模型,而在你怎么让它工作。
今天要讲的内容,不是模型能力,而是一个很工程化的东西:Harness(执行框架 / 工作流外壳)
我们先把问题说清楚。
大模型其实是"单轮高手",但不是"长期执行者"。
它的问题不是不会做,而是:
换句话说:
它不是一个工程师,更像一个"每次上岗都失忆的实习生"。
因为现实中的"长任务"本质是:
而大模型默认是:
这两个世界是冲突的。
Anthropic 总结的几个失败模式,其实非常真实:
Agent 很喜欢:
"我直接帮你把整个系统写完"
结果是:
这不是能力问题,是策略错误。
很多 Agent 的"完成"其实是:
但:
本质问题是:没有定义"什么叫完成"
没有结构化记录的情况下:
下一轮 Agent 完全不知道。于是:
时间都花在"重新理解过去"
Agent 会:
但现实是:没有 end-to-end,就没有真实完成
他们没有试图让模型更聪明,而是做了一件更重要的事:
给 AI 套一个工程工作流(Harness)
你可以把它理解成:
整个系统被拆成两个角色:
只运行一次,负责:
它做的事情,本质是:
把"模糊需求"变成"可执行结构"
核心原则:一次只做一件事
具体怎么执行?
基于依赖关系,挑"能做的事"
这里有几个不可违背的规则:
| 规则 | 作用 |
|---|---|
| 单任务上限 | 防止 context 爆炸,强制拆解 |
| 测试即门禁 | 没通过测试 = 没完成,无法进入下一步 |
| 强制 commit | 每个任务结束必须提交,形成检查点 |
| 状态外置 | 任务清单、执行日志都在文件系统,Agent 每次读取 |
这套机制的本质是:
用工程约束,弥补模型的不可靠性
1. 不要追求"端到端智能"
模型做决策 + 执行 + 验证,太容易出错。拆开来,每个环节简单可控。
2. 测试是契约,不是装饰
Harness 里的测试失败会阻断流程,这让"完成"有了客观标准。
3. Git 是状态机,不是备份
每个 commit 是一个检查点,Agent 可以"回到过去",也可以"继续未来"。
4. 任务清单是外置记忆
模型不用记住全部,只需要读当前任务。这解决了"失忆"问题。
如果你在设计 AI 工程系统,可以问自己:
"如果模型这一步完全搞砸了,我能多快知道?能回滚吗?"
Harness 的设计让答案是:立即知道,随时可以回滚。
Anthropic 的 Harness 给我们的最大启示:
AI 工程化的核心不是让模型更强,而是让模型在更强的结构里工作。
强制增量、测试门禁、状态外置--这些看起来"不智能"的约束,恰恰是构建可靠 AI 系统的关键。
未来的 AI 工程师,可能不是最会写 prompt 的人,而是最会设计"工作流外壳"的人。
你怎么看?你的 Agent 项目遇到过这些"失忆"问题吗?有没有试过类似的约束框架?
加入讨论
这个”一次只做一件事”的设计太反直觉了,但细想确实——我之前用 Claude 写脚本,它老喜欢一口气生成 200 行然后让我自己 debug,结果每次改到一半就忘了前面改了啥。有 git 状态做 checkpoint 感觉会好很多,不过好奇如果测试本身写错了怎么办?回滚到上一个能跑的版本吗?
git 回滚这个设计太关键了!我之前用 AI 写项目,最怕的就是它改完代码说”好了”结果跑不起来,然后手动回退找半天。有自动回滚至少不会越改越乱 😂
Initializer 这个角色设计得好妙啊,以前用 AI 做项目最头疼的就是开头——它要么想太多要么漏太多,有个专门”搭架子”的阶段确实省心多了。不过好奇这个任务清单是 AI 自己拆的还是人要干预?
“每次上岗都失忆的实习生”这个比喻笑死我了,但真的精准。不过我在想,这种框架会不会让AI变得太”保守”了?有时候我就是想要它大胆重构,而不是永远小步迭代 🤔
看到”测试必须过,否则回滚”这里突然想到,那要是测试本身写得有问题呢?AI 写的测试覆盖不到边界情况,然后全绿通过,结果上线还是崩 😅 感觉这框架还得配个”测试审查员”角色才行
突然意识到这个框架其实有点像敏捷开发里的 sprint,只不过 AI 成了那个被 scrum 管着的程序员 😂 好奇如果需求中途变了,Initializer 会重新跑一遍还是直接 patch?感觉现实项目里”改需求”才是常态啊
这个”失忆实习生”的比喻让我突然想到,Harness 是不是有点像给 AI 配了个项目经理?Initializer 定 OKR,Coding Agent 每天站会汇报进度,测试不过就 block 不能合并 😂 不过说真的,这种”强约束”设计对复杂项目确实比纯 prompt 工程靠谱多了,至少不会半夜醒来发现 AI 把数据库删了还说”已完成”。
终于有人把”AI 写代码为啥总翻车”讲清楚了!Initializer 那个”搭架子”的设计让我想到——这不就是给 AI 配了个脚手架嘛,以前让它直接盖楼,现在先打地基。不过有个小问题:如果需求本身很模糊,Initializer 会不会也翻车啊?🤔
有点好奇这个 Harness 能不能适配到非代码场景?比如让 AI 帮我写小说大纲,Initializer 拆章节,Coding Agent 一段一段写,写完自检人物设定有没有崩……感觉这套方法论挺通用的?