同一个模型,只改“外壳“性能狂飙22倍,Agent的瓶颈根本不在模型本身
你以为 Agent 不够好用是模型不够聪明? 最近一个实验把这个认知彻底打翻了。

一、一个颠覆认知的实验

Hugging Face 的机器学习工程师 Joel Niklaus 最近做了件很"无聊"的事——他拿同一个开源模型 DeepSeek-V4-Pro,在法律 Agent 基准测试上跑了一组对比实验。

实验变量只有一个:包裹在模型外面的执行代码(业内叫 Harness,也就是"外层执行机制")。模型权重完全冻结,一丁点都没动。

结果让人惊掉下巴:

表格

外层执行机制综合得分
mini-swe-agent3.5%
Goose23.2%
Pi45.4%
原始 LAB harness63.4%
优化后的 LAB harness80.1%

同一个模型、同一批任务、同一个评测器,仅仅因为换了外层代码,得分从 3.5% 一路干到 80.1%,差了整整 76.6 个百分点。

而且这个 80.1% 的成绩,已经追平了业界顶级闭源模型 Claude Sonnet 4.6,但运行成本只有它的1/7

更有意思的是一个细节:在最初的某个配置下,模型得分竟然是0%。团队查了半天发现——模型的法律推理过程全对,但它总是把结果存错了文件名,导致评测程序根本读不到结果。

0 分从来不是在测模型的智力,而是在测 Harness 有没有bug。

二、什么是 Harness?为什么它这么重要?

打个比方:LLM 本身就像一个没有内存、没有硬盘的 CPU。

那谁来管理内存、I/O 和驱动程序?答案就是 Harness——它是运行在模型外面的那层"操作系统"。

前 Lightning AI 工程师 Akshay 做过一个很形象的拆解:一个生产级的 Harness 至少要管 12 件事,涵盖流程编排、工具调用、分层存储、上下文管理、错误处理等等。

举个最常见的例子——上下文腐烂

你有没有遇到过这种情况:跟 AI 聊到一半,它突然忘了你前面说过的关键信息?不是模型变笨了,是因为当关键信息被挤到了上下文窗口的中间位置时,模型的注意力会显著下降,性能直接掉 30% 以上。

成熟的 Harness 是怎么解决的?

  • 压缩历史记录,只留高价值信息
  • 动态屏蔽旧输出,减少噪声
  • 用代理摘要代替长对话
  • 关键信息反复"置顶"

核心逻辑就一句话:用最少的高信息密度 Token,拿到最好的结果。

而这些事,跟模型本身聪不聪明,半毛钱关系都没有。

三、大多数 Agent 的问题:模型还没发力,外壳先拉胯了

Niklaus 的实验得出了一个扎心的结论:

Benchmark 测到的永远不是裸模型,而是"模型 + Harness"的组合能力。

这话翻译一下就是:你觉得某个模型 Agent 能力不行,很可能不是模型不行,是你给它套的那个壳子不行。

这个判断有多反常识?

过去一年,整个行业都在卷模型参数、卷上下文长度、卷推理能力。大家默认的逻辑是:模型越强,Agent 就越强。

但这个实验告诉我们——在 Harness 还没及格之前,堆模型参数的边际收益极低。

就好比你给一台 4090 显卡配了个 5400 转的机械硬盘,游戏加载慢你怪显卡不行?

再举个真实的例子。Karpathy 最近那个斩获 9 万 Star 的 AutoResearch 项目,核心思路不是让 AI 一次性写出完美答案,而是让它进入一个循环:

提出修改 → 运行实验 → 自动评估 → 保留进步 → 继续迭代

他让 Agent 自动跑了 700 次实验,找出了 20 项连他自己都忽略的代码改进。Shopify CEO Tobi Lutke 连夜拿内部模型试了,醒来发现性能直接提升了 5 倍——所有提升全部来自架构层面的改进,模型一个字都没改。

四、外层循环为什么这么厉害?

这里面有个更深层的道理:LLM 有"思维定势"。

内层循环(也就是模型直接推理)很容易陷入它自己的先验认知——它觉得应该这么做,就会反复尝试同一个方向,即使撞墙了也不回头。

而外层循环强制模型做一件它本能不会做的事:停下来,审视自己的策略,换个方向试试。

这像极了人类的工作方式——你卡在一个 bug 上两小时,站起来喝杯水溜达一圈,回来突然就想到解法了。不是你变聪明了,是你跳出了局部最优。

外层循环干的就是这件事:它不让模型一条道走到黑,而是强制它探索那些它本能会回避的方向,从而榨取出超越模型自身认知的潜力。

五、给做 Agent 的朋友几个实操建议

说了这么多,落地层面该怎么做?分享几个心得:

1. 先把 Harness 做到 60 分,再考虑换模型

很多人一上来就纠结用 GPT-5 还是 Claude Opus。先别急,把你现有的 Harness 理一理:

  • 文件读写有没有 bug?
  • 工具调用的格式对不对?
  • 错误有没有重试机制?
  • 上下文管理是不是一团乱?

把这些基础打牢,性能可能直接翻倍,比换模型划算多了。

2. 一定要有自动化验证器

没有验证器的 Agent 就是在给自己批作业——跑一万次也毫无意义。你需要一个客观的、可自动化的标准来判断"这次变好了还是变差了"。没有这个,循环就转不起来。

3. 维护一份状态文件

别让 Agent 每次都从零开始。把每次尝试的结果记下来,好的坏的都记,避免重复踩坑。页面关了、进程崩了也不怕,重启直接接着干。

4. Harness 比 prompt 更容易沉淀

Niklaus 的实验还有一个发现:优化好的 Harness 迁移到同族小模型 DeepSeek-V4-Flash 上,依然带来了 14.4 分的提升。

这意味着什么?调 prompt 是一次性的,改 Harness 是可复用的资产。今天你花时间打磨的这层外壳,明天换个新模型照样能用,甚至越用越强。

六、写在最后

我觉得这个实验最有意思的地方,不是它证明了 Harness 有多重要——而是它戳破了一个行业幻象:

我们总以为 Agent 的上限是模型决定的,但实际上,大多数人连模型能力的 10% 都还没发挥出来。

就像当年人人都在比 CPU 主频的时候,乔布斯回去给 Mac 装了个 SSD,体验直接拉开一个时代。

模型当然还会继续进步,参数还会继续涨,但下一个真正的爆发点,可能不在模型里面——而在模型外面那层,看起来不怎么性感、没人愿意做的"脏活累活"里。

毕竟,决定木桶能装多少水的,永远是最短那块板。

而对大多数 Agent 来说,最短的那块板,从来都不是模型。

参考资料:

1. Joel Niklaus - "Don't Train the Model, Evolve the Harness"

2. 虎嗅网 - 《76%的性能提升与模型无关?Karpathy700次Loop 实验揭开Agent 最大误区》

3. DeepSeek V4-Pro 官方技术文档