来源:微信公众号 AGI Hunt

作者:J0hn

斯坦福今天放出一篇论文,核心思路在于:让 AI 自动设计 Harness,替代人类工程师的手工调参。

打开网易新闻 查看精彩图片

在上一篇 Harness Engineering 的文章《模型不是关键,Harness 才是》中,我们提到:同一个模型,换一套 Harness,性能能翻倍。OpenAI、Anthropic、Stripe 各有各的编排哲学,但共识是:Harness 才是决定 Agent 表现的关键变量。

那……既然 Harness 这么重要,为什么还得靠人类工程师一轮一轮地手动迭代呢?

斯坦福的 Yoonho Lee(切尔西·芬恩的博士生)和 Omar Khattab(DSPy 的作者)给出了一个回答:把 Harness 优化本身也变成一个 Harness。

打开网易新闻 查看精彩图片

论文叫 Meta-Harness,名字起得差点让我以为是 Meta 的新模型……

01

先说结果

在文本分类任务上,Meta-Harness 比当前最好的人工设计方案 ACE 高了 7.7 个百分点,同时 context 用量只有 ACE 的四分之一。

在 IMO 级别的数学推理上,一个被自动发现的检索策略,在五个从未见过的模型上平均提升了 4.7 个百分点。

而在 TerminalBench-2 这个 Agent 编程基准上,Meta-Harness 自动发现的 Harness 拿到了 76.4% 的通过率,超过了人工精心调教的 Terminus-KIRA(74.7%),在所有 Opus 4.6 Agent 中排名第二。用 Haiku 4.5 跑的话,更是直接排名第一,超过所有已公开的 Haiku 方案。

打开网易新闻 查看精彩图片

Meta-Harness 在文本分类和 TerminalBench-2 上的表现

这组数据放在当前 Harness Engineering 那篇文章的语境下看,其实在回答一个更根本的问题:Harness 设计能不能被自动化?

答案似乎是,可以,而且效果还挺好。

02

怎么做的

Meta-Harness 的核心机制,其实还,挺简洁的。

想象一个程序员在调试代码。

他不会只看最终报错信息就动手改,而是会翻看之前的几次提交记录,对比哪些改动引入了 bug,哪些改动其实是有效的但被别的变更搞砸了。然后基于这些判断,提出下一轮修改。

Meta-Harness 做的就是这件事,只不过调试的对象从代码变成了 Harness 本身。

整个流程分三步循环:

打开网易新闻 查看精彩图片

Meta-Harness 搜索循环:翻档案→跑评估→存档

第一步,翻档案。一个 Coding Agent(论文用的是 Claude Code + Opus 4.6)去读文件系统里存储的所有历史记录,包括之前每一版 Harness 的源代码、评估分数、执行 trace。

第二步,跑评估。把新提出的 Harness 拿去跑实际任务,收集成绩和 trace。

第三步,存档。把这一轮的所有产物,代码、分数、推理过程、执行日志,全部写回文件系统,供下一轮查阅。

就这样,不断循环。

论文里的典型配置是跑 20 轮迭代,每轮评估约 60 个候选 Harness。

打开网易新闻 查看精彩图片

Meta-Harness 搜索循环流程

和已有的文本优化方法(OPRO、TextGrad、AlphaEvolve、GEPA 等)相比,Meta-Harness 最关键的设计选择在于:给 proposer 完整的文件系统访问权限,取代压缩后的摘要。

这个选择看起来简单,背后的考量却值得展开说说。

03

完整历史

现有的文本优化方法,基本都在做某种形式的信息压缩。有的只保留分数,有的只看最近一次的结果,有的让模型先生成一个摘要再做决策。

打开网易新闻 查看精彩图片

完整历史 vs 压缩摘要:信息完整度决定优化效果

这些压缩在小规模任务上问题不大。但 Harness 优化有个特殊之处:因果链条特别长。

一个 Harness 的某个设计决策,比如 prompt 里加了一句清理指令,可能在 30 步之后才导致 Agent 陷入死循环。如果你只看最终分数,或者只看压缩后的摘要,这种长程因果关系就被丢掉了。

论文做了一组消融实验,结果可以说,非常地说明了问题:

信息访问方式

中位数准确率

最高准确率

只看分数

34.6

41.3

分数 + 摘要

34.9

38.7

完整文件系统

50.0

56.7

只给分数和摘要,中位数准确率 34 左右。给完整的文件系统访问,直接跳到 50。

甚至摘要版的最高准确率(38.7)还不如完整版的中位数(50.0)。换句话说,压缩信息不只是损失了一些边角细节,而是丢掉了做出正确决策所需的关键线索。

作者 Yoonho Lee 在讨论中也提到,单次评估就能产生约一千万 token 的原始输出,远超任何模型的 context window。所以不能把所有东西塞进一个 prompt,必须让 Agent 自己决定去读什么。

实际运行中,proposer 每轮迭代平均读取 82 个文件(范围 69-99),其中 41% 是之前的 Harness 源码,40% 是执行 trace,剩下的是分数和其他文件。它的行为模式并非只看上一轮的结果,会跨越多轮历史做对比分析。

这也正是「完整历史」这个设计选择的价值所在:

让 Agent 自己做信息检索和因果推理,比人类预设的压缩规则更灵活,也更有效。

04

像人一样调试

论文里最精彩的部分,是附录 A 中那段 TerminalBench-2 的搜索轨迹分析。

打开网易新闻 查看精彩图片

Proposer 的调试之旅:从失败到转折

第 1-2 轮迭代,proposer 同时做了两件事:修复了一个结构性 bug(清理泄漏的标记符号),同时改写了 prompt 模板。两个候选都从 64.4% 的基线大幅回退了。

第 3 轮,proposer 做了一件很像人类工程师会做的事:它回去看了两个失败候选的改动记录,注意到两者有一个共同点,都改了 prompt 模板。于是它显式地推理:

“ 根本原因:prompt 模板的变更(cleanup 指令)导致 Agent 在任务完成前就删除了必要的状态。结构性 bug 修复和有害的 prompt 变更混在了一起。”

这是个典型的混杂变量(confound)识别。它把结构性修复和 prompt 变更拆开,单独测试了结构修复,验证了回退确实是 prompt 造成的。

接下来第 4-6 轮继续在控制流和 prompt 上做修改……继续失败。

到了这个阶段,proposer 倒是学到了一条经验规律:碰 prompt 和完成逻辑的改动风险太高。

第 7 轮,转折来了。

proposer 换了一个完全不同的策略:不再修改任何现有逻辑,改为纯粹的「加法」操作,在第一次 LLM 调用之前加一个环境快照命令,把当前系统环境信息追加到初始 prompt 里。不动别的,只加信息。

这个候选成了整个搜索过程中表现最好的。

第 8 轮,它把第 7 轮的「环境快照」和之前验证过的「标记符号清理」组合到一起,理由是这两个修复针对的是不同的失败模式,组合起来不会互相干扰。

第 10 轮出现了跨实验迁移:proposer 引用了一个来自另一轮搜索的结果,注意到「不要清理服务产物」这个策略在之前的实验中值 18 个百分点的提升。

整个过程就是一个工程师的调试思路:尝试、失败、识别混杂因素、隔离变量、切换策略、组合已验证的修复、甚至跨实验迁移经验。

只不过这个「工程师」是一个 Coding Agent。

05

搜索速度

和其他文本优化器相比,Meta-Harness 的搜索效率也值得关注。

在文本分类任务上,OpenEvolve 和 TTT-Discover 需要 40 次完整评估才能达到最终性能。Meta-Harness 在前 4 次评估内就追平了它们的最终成绩,然后继续上升,最终高出 10 个百分点以上。

为什么会快这么多呢?

论文把这归因于最小化的外部结构。OpenEvolve 和 TTT-Discover 都有预设的搜索框架,比如固定的变异算子、树搜索结构。这些结构在小规模问题上是有效的约束,但在 Harness 这种搜索空间巨大的问题上,反而成了限制。

Meta-Harness 的外层循环几乎没有预设结构:不指定 parent 选择规则,不限制 proposer 的检索范围,不约束修改的粒度。所有这些决策都交给 proposer 自己判断。

这种「去结构化」的设计在 2026 年初才变得可行,因为它依赖 Coding Agent 足够强大,能自主完成「读文件→推理→写代码→提交」这整个流程。论文在脚注里也坦率地说了这一点。

06

Harness 长什么样

论文还展示了 Meta-Harness 自动发现的几个 Harness 的具体结构,每个都是 100-1000 行的 Python 程序。

打开网易新闻 查看精彩图片

自动发现的草稿-验证策略流程

文本分类任务中,它发现了一个「草稿-验证」(Draft Verification)的两阶段策略。先检索 5 个最相似的样本做初始预测,然后基于这个初始预测,再检索 5 个「支持者」和 5 个「挑战者」(标签不同但很相似的样本),让模型决定是否修改判断。

这个设计的巧妙之处在于:第二轮检索依赖第一轮的预测结果,相当于一种 self-challenging 机制。没有人类预先指定这个策略,它从搜索过程中自然涌现了出来。

数学推理任务中,它发现了一个四路由的检索策略:把问题分类为组合数学、几何、数论和默认四种类型,每种类型用不同的检索和重排序参数。比如组合数学类问题偏好难度重排序来增加多样性,而几何类问题则倾向保留原始的结构匹配结果。

这些策略放在论文里看起来合理得近乎显而易见。但重点在于,它们全都是 Agent 通过反复试错自己「长」出来的,没有任何人类预设。

07

两个天花板

当然,这篇论文也有它的边界。

打开网易新闻 查看精彩图片

两层天花板:模型上限与 Harness 上限

Gregor 问到:

“ 如果 LLM 本身还推理不了这个问题呢?优化 Harness 不就只是在用更快的方式去量一个不会变的天花板吗?”

Yoonho Lee 坦率回应:

“ Harness 优化确实有一个由模型权重设定的天花板。LLM 系统有两个组件:模型和 Harness。这篇论文只自动优化了第二个组件。它不会创造权重中不存在的能力,但能把我们之前没用上的能力释放出来。”

这个回应,其实精确地呼应了我在 Harness Engineering 那篇文章里画的那张图:Big Model 和 Big Harness,两层天花板,缺一不可。

模型能力决定了理论上限,Harness 决定了实际达到的高度。

Meta-Harness 做的事情,是把 Harness 这一层的天花板尽量往模型天花板靠近。

另一个边界是泛化性的问题。有人担心 Meta-Harness 会不会过拟合到搜索集。论文在这一点上做了比较充分的验证:在文本分类上测试了 9 个从未见过的数据集,平均准确率 73.1%,超过所有基线。在数学推理上,同一个 Harness 在 5 个没见过的模型上都有效。

Yoonho Lee 还提到了一个值得注意的观点:在文本空间里过拟合,比在权重空间里过拟合要难得多。因为在 prompt 里「记住」特定任务的答案远不如在权重里做这件事高效。而且 Harness 的代码是可读的,人类可以直接检查有没有硬编码的投机取巧。

这和权重空间的黑箱优化……倒是形成了一个挺鲜明的对比。

08

第三篇章

如果把这篇论文放到整个 Harness Engineering 讨论的时间线上看,它打开的其实是一个新的篇章。

打开网易新闻 查看精彩图片

Harness Engineering 三篇章:从人工到全自动

第一篇章是「发现问题」。

Mitchell Hashimoto 说,每次 Agent 犯错就去工程化一个解决方案。OpenAI 的 Codex 团队用 5 个月和 100 万行代码证明了 Harness 比 Agent 本身更难搞。

第二篇章是「总结方法论」。

Anthropic 的工程博客详细展示了 GAN 式对抗、sprint 合约、Playwright 评估。Stripe 的 Minions 提出了 Blueprint 编排。这些都是人类工程师总结出的 Harness 设计模式。

而 Meta-Harness 开启的第三篇章……是「让 AI 自己来」。

当然了,这并不意味着人类工程师会被替代。

论文的 proposer 需要一个人类定义的「搜索技能」作为引导,包括初始 Harness 种群、评估指标、文件系统的组织方式。人类仍然在定义问题的边界和目标。

但在这个边界之内,具体的 Harness 设计决策,该用什么样的 prompt 结构、什么样的检索策略、什么样的状态管理逻辑,这些可以交给 Agent 去搜索。

回到 Anthropic 那篇博客《Anthropic 的 Harness 设计:build to delete》的核心观点:Harness 要 Build to Delete,造出来是为了有一天能拆掉。

Meta-Harness 提供了一个更激进的可能性:也许不需要等模型变强再手动拆,直接让 AI 替你重新设计一套更好的。

Noam Brown 说「别花六个月搭一个六个月后就被淘汰的东西」。

Meta-Harness 说,那就别自己搭了。

• 论文:https://yoonholee.com/meta-harness/paper.pdf

• 项目主页:https://yoonholee.com/meta-harness/

• 推文:https://x.com/yoonholeee/status/2038640635482456118