Wink Pings

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