如果你用过各种 AI Agent(无论是写代码、做项目还是自动化工具),你大概率遇到过这些问题:
这些问题看起来像是"模型不够聪明",但 Anthropic 给出了一个更现实的结论:
问题不在模型,而在你怎么让它工作。
今天要讲的内容,不是模型能力,而是一个很工程化的东西: Harness(执行框架 / 工作流外壳)
我们先把问题说清楚。
大模型其实是"单轮高手",但不是"长期执行者"。
它的问题不是不会做,而是:
换句话说:
它不是一个工程师,更像一个"每次上岗都失忆的实习生"。
因为现实中的"长任务"本质是:
而大模型默认是:
这两个世界是冲突的。
Anthropic 总结的几个失败模式,其实非常真实:
Agent 很喜欢:
"我直接帮你把整个系统写完"
结果是:
这不是能力问题,是策略错误。
很多 Agent 的"完成"其实是:
但:
本质问题是:
没有定义"什么叫完成"
没有结构化记录的情况下:
下一轮 Agent 完全不知道。
于是:
时间都花在"重新理解过去"
Agent 会:
但现实是:
没有 end-to-end,就没有真实完成
他们没有试图让模型更聪明,而是做了一件更重要的事:
给 AI 套一个工程工作流(Harness)
你可以把它理解成:
👉 AI 不是自由发挥 👉 而是在一个"操作系统"里工作
整个系统被拆成两个角色:
只运行一次,负责:
它做的事情,本质是:
把"模糊需求"变成"可执行结构"
循环运行,每次只做一件事:
关键设计:每一步都有明确的输入输出
| 机制 | 解决的问题 |
|---|---|
| 结构化状态 | 不再"失忆",每次从 checkpoint 恢复 |
| 任务清单(todo) | 明确"还剩什么",防止提前宣布完成 |
| 原子化提交 | 小步快跑,随时可回滚 |
| 强制测试 | 每个功能必须有验证,不能"看起来能跑" |
| 确定性重入 | 崩溃后重启,从上次状态继续,不重来 |
很多人以为 Agent 失败是因为:
"GPT-4 还不够强,等 GPT-5 就好了"
但 Anthropic 的实践说明:
模型能力早就够了,缺的是"工程纪律"
就像给一个聪明但散漫的实习生:
Harness 不是让 AI 更聪明,而是让它"有章可循"。
如果你在做 Agent 相关的产品或项目,可以问自己几个问题:
这些问题和"用哪个模型"关系不大,但和"能不能稳定跑完一个长任务"关系很大。
AI Agent 的瓶颈,正在从"模型能力"转向"工程架构"。
这可能是一个好消息:
关键是你愿不愿意承认:问题可能不在 AI,而在怎么让 AI 工作。
你怎么看?
你遇到过 Agent "失忆"的问题吗?觉得是模型不够强,还是框架设计的问题?
加入讨论
终于有人把Harness讲清楚了!之前看Anthropic论文云里雾里的,这个”给AI套操作系统”的比喻一下子懂了。不过有个疑问:Initializer如果理解错了需求,后面Coding Agent岂不是一错到底?这个风险怎么控?
这个”每次上岗都失忆的实习生”比喻太扎心了,我现在的Agent就是这样😂 好奇Initializer如果需求本身就很模糊,它生成的任务清单会不会从一开始就跑偏?有没有人工干预的入口?
Harness 这个思路让我想到以前带新人的时候,与其指望他什么都懂,不如先给他搭好脚手架。不过 git 提交这块有点好奇——Agent 自己写的 commit message 会不会也是”update”和”fix bug”满天飞😂 最后人类来 review 岂不是很痛苦?
看到”无检查点”那里突然悟了,我之前跑自动化脚本崩了就得从头来,原来不是模型笨,是我没给它设计”存档点”😅 这个Harness的todo列表设计确实像游戏里的任务追踪,但有点担心复杂项目里todo本身会不会膨胀到失控?
“没有 end-to-end,就没有真实完成” 这句话太真实了,我之前被 Agent 骗过好几次,看着它说”测试通过”结果一跑全是 bug😂 不过 Harness 这个 todo 列表如果 Agent 自己更新,会不会有”虚假打卡”的问题啊?
Initializer 生成任务清单之后,Coding Agent 要是发现前置任务有问题,能自己回去改吗?还是只能硬着头皮往下走🤔 感觉这里需要个”向上反馈”的机制,不然容易一条路走到黑。
这个”操作系统”的比喻让我突然想到,其实Harness有点像给AI配了个项目经理——Initializer画蓝图,Coding Agent搬砖,出了问题还能翻git历史甩锅😂 不过说真的,如果Initializer拆任务的时候粒度太细,会不会反而让Coding Agent陷入”todo地狱”,一直在刷列表进度但实际产出很少?
Harness 这个”两步走”设计挺聪明的,但我有点担心那个 todo 列表会不会变成新的瓶颈——万一任务拆得太细,Agent 会不会陷入”一直在规划,从没开始写”的状态😂 之前用其他框架就遇到过这种”过度工程”的情况。
突然意识到这个Harness设计其实暗合了”分治算法”的思想——大问题拆成小问题,每个子问题独立可验证。不过有个好奇的点:如果Coding Agent执行到一半发现Initializer拆的任务粒度不对,是整个流程重跑还是能动态调整?感觉这里需要个”自适应重构”机制🤔