Agent总翻车,多数人修错了地方
Karpathy说OpenAI在2016年犯过一个错,代价是5年。这个问题现在还在重演:大家逼着agent干活,却没先给它搭好harness。一份完整指南讲清楚,为什么改prompt救不了,以及不散架的agent到底需要什么。
Andrej Karpathy在最近一段视频里扔了句话:
"现在AI最大的错误,是人们逼着agent去干活,而不是先为模型掌握好harness engineering。2016年我们在OpenAI就犯过这个错,代价是5年。"
他的意思很直接:agent不是产品,harness才是。地基没搭好,上面堆什么都塌。所谓harness,就是模型外面那层环境,负责把模型一次性的聪明变成能重复的工作。
Lunar研究员写过一篇长文讲这件事,标题叫《Harness Engineering: The Complete Guide to Building AI Agents That Don't Fall Apart》。文章开头有个判断很准:大部分agent的失败,不在推理层,在环境层。
Agent不知道哪些文件重要。它在正确的地方用错了工具。它丢了上一轮会话里做过的决定。它没跑检查就宣布成功。它在一次部分失败后又重复了同一个动作。它拿到了本该走审批的权限。
模型未必有问题。模型周围那套系统不完整。这套系统叫harness,设计它正在变成一门单独的工程学科。
先把任务变成契约
"优化一下onboarding流程"。这句话作为聊天够用,作为自主执行远远不够。
Harness要干的第一件事,是把这句话翻成一份任务契约:目标是什么、范围在哪、什么不能动、什么证据算完成、哪些动作需要人批准。
没有契约,agent优化的是"看起来在干活"。有了契约,它优化的是"可验证的完成"。它的问题从"下一步该做什么"变成"什么动作让环境更接近契约里的结果"。
给地图,别给手册
把整个代码库、整本文档、全部对话历史倒进上下文,不叫上下文工程,叫上下文洪水。
好的harness先给一张小地图:产品规则在哪个目录、架构文档在哪、测试命令怎么跑。agent需要细节的时候自己去取。这叫渐进式披露。目标很简单:每token最大信号。
工具不是越多越好
给agent二十个工具,它就有二十种犯错方式。
每个工具都该有明确契约:输入是什么、前置条件是什么、成功证据是什么、失败了怎么返回、风险等级如何。四件事分开走:模型决定意图,网关校验动作,工具改变环境,传感器观察结果。模型可以提议一个动作,网关决定这个动作是否值得执行。
完成这件事,模型说了不算
Agent说"done",不是证据。它只是又一段模型输出。
完成必须由环境里可观察的变化来判定。"bug修好了"的证据是失败的测试变绿。"页面正常"的证据是浏览器流程跑通。能交给编译器、schema、校验和、查询、测试回答的问题,别扔给另一个模型。模型处理歧义,代码铺管道。模型可以提议任务完成了,只有环境能证明它完成了。
验证应该去攻击结果
Worker和evaluator不该共享同一个目标。Worker努力把方案做到最强,evaluator努力找到它该被拒绝的理由。
如果你让同一个agent在同一个上下文里"再检查一遍",它通常会保留造成错误的那些假设。有用的验证阶段,是一次有组织的证伪。它不是第二次意见,是一次尝试性反驳。
失败先分类,再决定动作
最常见的恢复策略是"失败了,再试一次"。那不叫恢复,叫重复。
超时要退避重试。参数错要修工具调用。缺上下文要精准取源。测试挂了要去看失败行为。权限被拒要么申请审批,要么走安全路径。需求自相矛盾要升级给人。同一个失败原样出现两次以上,停。
重试至少要改变一个相关条件,否则就是花钱复现同一次失败。
规则反复出现,就往下沉
"记得跑formatter"。"不要跨层引用"。"生成文件不要手改"。
这些写在prompt里,靠模型记性。靠不住的。一条规则如果反复出现,就把它从说明往下沉:说明、清单、模板、自动检查、强制策略。越往下越可靠。prompt解释判断,harness强制不变量。
Harness也会腐化
更多harness不一定更好。模型变强了,任务变了,昨天为绕开模型缺陷打的补丁,今天变成拖慢系统的摩擦。
每个路由、评估器、记忆层、重试规则都该问一遍:它防的是哪种失败?这种失败现在还多吗?它加了多少延迟和复杂度?删掉会怎样?最好的harness往往是最小的那个,小到能可靠闭合"意图到证据"这条链,就够了。
从最小的一层开始
不需要一上来就搞多agent编排平台。按层搭。
第一层,一个有边界、能验收的任务。第二层,一个看得懂的环境,有地图、有命令、有本地说明。第三层,受控的工具,有参数校验、有权限边界、有结构化返回。第四层,持久执行,有状态、有检查点、有决策记录。第五层,证据,有确定性检查、有对抗性验证、有变更回执。第六层,恢复和学习,有失败分类、有边界重试、有升级机制。
先建能消除你眼下真实失败的那一层。别因为一次prompt偶尔需要澄清,就上多agent架构。复杂度要靠观察到的失败来挣。
回到Karpathy那句话。他说现在在做agent的你,站在最前面。不是OpenAI,不是DeepMind,是你。
但站在前面不等于往prompt里继续加形容词。前面那件事,是先给模型搭一个能让它不散架的环境。
当agent又翻车的时候,先别急着改prompt。看看它周围那套系统,是不是压根没搭起来。
发布时间: 2026-11-06 09:29