别再把 harness 当实现细节:2026 年它被扶正成了一个必须申报的变量

ALFWorld 上一个 3B 模型配好 harness(69.7)打赢 7B 配差 harness(55.6),差 14.1 分;更狠的是这个便宜不能事后补——训完再换好 harness 只能拿回一小部分。2026 年 harness 研究的真正进展不是「又发现脚手架很重要」,而是把它从实验里看不见的常量提成了变量。变量化炸开四条战线:测量(harness 方差是模型方差的 7.80 倍、9 组对比 6 组名次翻转)、自动搜索(AHE 69.7→77.0)、训练(harness 是训练分布的一部分)、以及两个必须承认的刹车。附一张可填的 Harness Card 和一个约 19 美元的亲手验证实验。

一个反直觉的数字:在 ALFWorld 上做同样的强化学习后训练,3B 模型配一个好 harness 拿 69.7 分,7B 模型配一个差 harness 拿 55.6 分——小模型赢 14.1 分。更值得记住的是第二个数字:如果你用差 harness 训完、再在评测时换上好 harness,这个便宜「几乎拿不回来」,训练期就用好 harness 的优势是 +20.7 到 +22.5 分。两个数字都来自 arXiv:2606.25447 的正文表格。

所以 2026 年 harness 研究的真正进展,不是又一次发现「脚手架很重要」——这话 2023 年就有人说了。真正的进展是:harness 从实验里那个没人申报的常量,被扶正成了一个可测量、可搜索、并且会被写进权重的变量。 这篇把变量化炸开的四条战线,连同数字一起摊开。

名词速查

术语一句话解释
harness(脚手架)模型和环境之间那层壳:暴露哪些工具、工具怎么描述、每步观测里塞什么附加信息、什么时候停、怎么校验。它「该做什么」站内已单独写过一篇:《什么才是好的 Harness:判断归模型,物理归代码》;两个实物样本见 DeepSeek dshECC
pass@1每题只给一次机会的通过率,agent 评测最常用的主指标
HV / MV本文简写:harness-induced variance(换 harness 带来的分数方差)/ model-induced variance(换模型带来的方差),单位是「百分点的平方」pp²
OOD(分布外)部署后环境变了:工具改名、工具合并、任务类型换了,训练时没见过的情况
GRPO / GiGPO两种给 agent 做强化学习后训练的算法,本文只当「后训练手段」用,不展开
ALFWorld一个文字版家务环境(去某处、拿某物、加热、放置),是工具调用类 agent 的老基准
Terminal-Bench / Harbor终端任务基准(2.0 版 89 题)/ 它底下那套可换 agent、可跑 RL rollout 的执行框架
AGENTS.md一个跨工具的仓库级上下文文件约定,各家 CLI 都读它

主线:变量化,以及它炸开的四条战线

一句话主线:当 harness 还是常量时,它的收益全部被误记在模型账上;一旦它被当成变量,先炸的是测量,然后是搜索,最后炸到训练。

和站内 7 月那篇的分工说清楚:《什么才是好的 Harness》 回答的是「一个好 harness 该做什么」(把世界翻译成接口、把确定性工作拿走、让错误变便宜)。这篇不重复那三件本职,只问接下来那个更尴尬的问题:这些收益到底该记在谁账上,以及能不能不靠人来找。

四条战线是同一个动作的四个后果,而且它们互相咬着:

flowchart TD
  C["harness 曾是常量<br/>论文不申报 · 榜单不区分"] --> V["2026:扶正为变量"]
  V --> M["① 测量炸了<br/>HV/MV = 7.80×<br/>9 组对比 6 组名次翻转"]
  V --> S["② 能自动搜索了<br/>AHE:69.7 → 77.0<br/>每次改动 = 可证伪契约"]
  V --> T["③ 炸到训练<br/>差 harness 训完遇工具改版<br/>掉到 2.7(未训练是 13.5)"]
  M --> B["④ 两个刹车"]
  S --> B
  T --> B
  B --> B1["学术刹车:匹配预算下<br/>自动演化打不过 test-time scaling"]
  B --> B2["工程刹车:2853 个仓库<br/>90.6% 只有一个 context file"]

战线一:测量——先炸的是榜单

有一篇 5 月的立场论文把这件事说得最硬:《Stop Comparing LLM Agents Without Disclosing the Harness》(arXiv:2605.23950,Zhang 等,2026-05-07)。它做了一个 3×3 受控实验:三个能力接近的前沿模型 × 三个 harness(Minimal / Improved / Full),跑 SWE-bench Verified 的 100 题分层子集,固定种子、50 步预算、每格两次。

正文表格里的数字(我读的是 HTML 全文版,不只是摘要):

H₁ MinimalH₂ ImprovedH₃ Full该模型的 HV (pp²)
GLM-5.152.556.565.529.56
GPT-5.455.058.563.512.17
Kimi K2.652.059.060.513.72
该 harness 下的 MV (pp²)1.721.174.22

平均 HV 18.48 pp² 对平均 MV 2.37 pp²,比值 7.80 倍(我按 18.48/2.37 复算过 = 7.797)。换 harness 让三个模型分别动了 13.0 / 8.5 / 8.5 个百分点,而在固定 harness 里换模型只动 3.0 / 2.5 / 5.0 个百分点。9 组「模型对 × harness 对」的比较里,6 组名次发生了翻转

两个容易被跳过的细节,我认为比主结论更有信息量:

  1. 跨模型方差在 H₂ 最低(1.17)、在 H₃ 最高(4.22)。 也就是说,一个中等 harness 会把模型差异抹平,而带校验机制的完整 harness 反而把模型差异重新暴露出来。这解释了一个常见困惑:为什么有人换了更强的模型没感觉,另一个人换同款模型收益明显——差别可能在他们的 harness 处在曲线的哪一段。
  2. 这套实验总共花了 215.79 美元、2.611 亿 token、84.4 小时串行。 这个量级说明:harness 方差不是「测不起」,是「没人报」。

论文给的解法不是「大家统一用同一个 harness」(统一本身就是一次未申报的设计选择),而是一份披露标准,作者叫 Harness Card,七层:Execution / Tool / Context / Scheduling / Observability / Verification / Governance。我把它压成一张能贴进 README 的表,放在文末「带得走的东西」。

回链:站内 《别再问谁第一:大模型 Benchmark 榜单的正确打开方式》 讲的是「一个模型不该只有一个分数」。这篇是它的下一层:一个模型在一个 benchmark 上也不该只有一个分数,除非你申报了 harness。


战线二:自动搜索——把变量交给机器

既然是变量,就能搜。这条线上最有工程含量的是《Agentic Harness Engineering: Observability-Driven Automatic Evolution of Coding-Agent Harnesses》(arXiv:2604.25850,Lin 等,首版 2026-04-28,v4 2026-05-18),作者把方法叫 AHE。

它先承认了自动改 harness 的三个真实障碍:动作空间散落在很多可编辑组件里、轨迹大到有用信号被淹没、改动的效果无法归因。对应三种「可观测性」:

  • 组件可观测:每个可编辑组件落成文件级表示,动作空间变显式、可回滚。
  • 经验可观测:把海量原始轨迹压成分层可下钻的证据库。
  • 决策可观测:每次改动必须自带一个预测,下一轮的任务级结果来判它对不对——作者的说法是让每次改动成为「可证伪的契约」。

摘要里报的数字:Terminal-Bench 2 的 pass@1 十轮迭代后 69.7% → 77.0%,超过人工设计的 Codex-CLI(71.9%),也超过 ACE、TF-GRPO 这类自我演化基线;把演化出的 harness 冻结、不再演化直接搬到 SWE-bench-verified,聚合成功率领先且比种子 harness 少用 12% token;换到另外三个模型族上迁移涨 +5.1 到 +10.1 个百分点

最该被记住的是它的消融结论:收益来自 tools、middleware 和长期记忆,而不是 system prompt。 作者的解读是「结构性的 harness 事实可迁移,散文级的策略不可迁移」。这条如果成立,对日常写 AGENTS.md 的人既是坏消息也是好消息——反复润色提示词里的行为守则,收益上限低于把同一条守则做成一个工具或一段 middleware。它也给站内那句旧话补上了一个消融实验级别的证据:「提示词里的规则是恳求,harness 里的规则是物理法则」(见 《什么才是好的 Harness》)——原来那是个论断,现在有了「改 prompt 不涨、改 tools/middleware 才涨」的对照。

同一条战线上另外两篇,我只核到方法、没核到数字,按此标注:

  • HARBOR: Automated Harness Optimization(arXiv:2604.20938,Sengupta & Wang,2026-04-22)把 harness 调参形式化成「混合变量、成本不均的受约束带噪贝叶斯优化」,求解器叠了 block-additive SAAS 代理模型 + 成本感知多保真采集 + TuRBO 信任域。它的核心主张很直接:一旦 flag 空间超过几个 bit,自动搜索就压过手工堆叠。摘要页没有给任何准确率或成本数字,只描述了实验结构(四轮人工调参对比一次端到端运行);作者自己划的适用边界是「flag 空间有界 + 任务集可复现」。注意它和下一节那个执行框架 Harbor 同名不同物。
  • HarnessBridge(arXiv:2606.12882,Wang 等,2026-06-11)走得更远一步:不搜配置,而是把 harness 本身学出来——把 agent 与环境的接口看成双向投影,观测投影把原始轨迹压成决策相关状态,动作投影把提议动作变成可执行转移或「有轨迹依据的拒绝」,端到端训练。摘要只有定性说法(在 Terminal-Bench 2.0 和 SWE-bench Verified 上「匹敌或超过」专用 harness,同时显著降 token 和轨迹长度),未给数字。

回链:站内 《会话内 RSI 深读》 讲的是自我提升里「把哪个对象定义成可变的」这个选择。AHE 恰好是把可变对象从 context(经验手册)上提到了 harness 文件层。那篇里 ACE 的失败模式(第 61 步重写手册,上下文从 18,282 token 塌到 122,准确率跌破不自我改进的基线)在这里的对应物是:harness 改动如果没有可证伪的预测和回滚,同样会一步塌掉。AHE 的「决策可观测」就是针对这个洞设计的。


战线三:训练——harness 会被吃进权重

前两条战线都还把 harness 当推理期的壳。第三条最狠:《The Interplay of Harness Design and Post-Training in LLM Agents》(arXiv:2606.25447,Kim 等,2026-06-24)把 harness 做成 ALFWorld 上的可控设计维度,然后测它和后训练的交互。

它的三个 harness 差别小到令人不适(工具 schema 全程固定):

工具描述每步历史里的 Valid tools:Carrying:
h-low一行
h-mid一行
h-high带前置条件、工具间关系、在任务中的角色

零样本情况下,就这点差别:GPT-5 Mini 从 28.1 → 68.3(+40.2);Qwen2.5-7B-Instruct 从 7.4 → 29.0。在 Pick 2 这个子任务上,GPT-5 Mini 从 17.1 → 61.0。

后训练之后(正文表格):

h-lowh-midh-high
3B + GRPO56.061.769.7
7B + GRPO55.676.277.9
7B + GiGPO81.083.086.9

导语里那 14.1 分就是加粗的两格之差:3B 配 h-high 打赢 7B 配 h-low。而且这不是能事后补的便宜——只在评测时套上好 harness「几乎拿不回收益」,7B+GRPO 的训练期优势是 h-mid +20.7、h-high +22.5。

最能改变认知的是分布外那组。他们把工具 schema 改版:v1.1 只改名字和参数名,v2.0 把 13 个工具合并成 5 个、用一个离散 action 参数区分。结果:

  • 7B + GRPO + h-low 在 v2.0 上掉到 2.7 分——比没训练过的基座模型(13.5)还低 10.8 分。 后训练在这里是负收益。
  • 7B + GiGPO 从同分布掉到 v2.0:h-high 只掉 17.3(86.9 → 69.6),h-mid 掉 45.2,h-low 掉 47.8。
  • 工具调用合法性(7B + GiGPO 在 v2.0 下):h-high 有 95.7% 的调用格式合法,其中 34.9% 在当前状态下不可执行;而 h-mid 和 h-low 分别有 75.1% 和 81.2% 直接返回「工具格式非法」。典型失败是编出不存在的名字,比如喊 GoToLocation("shelf 1")goto_dresser(),而 v2.0 里该走 ReceptacleControl

我的解读(这是观点,不是论文原话):h-low 训练实际上把「猜工具名」这个策略奖励进了权重。 因为每步观测里没有合法工具集,模型只能靠记忆里的名字去赌;赌对了拿奖励,这条捷径就被固化。等 schema 一变,捷径全废,而它已经没有别的行为可退回——所以比没训练更差。h-high 之所以抗跌,是因为它训的是「先读当前可用工具再选」这个动作,而这个动作在新 schema 下依然有效。

对读者的行动含义很具体:如果你要 fine-tune 或 RL 一个 agent,harness 必须先冻结并版本化。改 harness 不是改配置,是改训练分布。 这条我没亲手复现,是从论文数字推出的工程结论。


战线四:两个必须承认的刹车

一个持怀疑态度的读者读到这里应该反问:既然效果这么好,为什么我周围没人在自动演化 harness?两个刹车都是真的。

学术刹车:可能只是搜得更多而已

《Rethinking the Evaluation of Harness Evolution for Agents》(arXiv:2607.12227,Wang 等,2026-07-14 首版,v2 2026-08-27)直接冲战线二。它指出两个方法论问题:

  1. 搜索混淆:harness 演化本身就是一个反复评估、修改候选的搜索过程。那它就该在匹配的反馈预算和推理预算下,跟朴素的任务级搜索(test-time scaling)比——否则分不清收益来自更好的 harness 设计,还是仅仅来自搜得更多。
  2. 同集调优、同集报数:拿一个公开 benchmark 的单元测试当搜索信号,再在同一个 benchmark 上报最终成绩,改进有过拟合到这个任务集的风险。

它在 Terminal-Bench 2.1 上用 GPT-5.4 和 Claude Opus 4.6 做对照,结论是自动 harness 演化「并不稳定地优于简单的 test-time scaling,且泛化有限」。摘要没有给具体数字,代码在 GitHub 上(rethinking-harness-evolution)。

值得指出的是,第 2 点其实是一条早就被提出的原则被实证打脸:Lilian Weng 在《Harness Engineering for Self-Improvement》里明确要求评估器必须留在自我改进循环之外(站内深读:《当 Harness 本身成为被优化的对象》)。「拿 benchmark 的单元测试当搜索信号、再在同一 benchmark 上报数」正是把评估器拽进了循环里。这条战线的问题不在于自动化不该做,而在于自动化跑得比它的评测规范快。

我的立场:这条批评在「同集报数」这一点上站得住,但 AHE 有一个数字不容易被它击穿——跨模型族 +5.1 到 +10.1 个百分点的迁移,以及冻结 harness 搬到另一个 benchmark 上仍然领先且省 12% token。 纯粹的任务集过拟合不该迁移得这么整齐。所以我现在的判断是:自动演化的收益上限被高估了,但它不为零;真正待补的是「在完全 held-out 的任务族上报数」这个规范。

工程刹车:中位数仓库连第二层都没打开

另一篇是实证的:《Harness Engineering for Agentic AI Coding Tools: An Exploratory Study》(arXiv:2602.14690,Galster 等,首版 2026-02-16,v5 2026-06-30,前身发在 AIware 2026),扫了 2853 个 GitHub 仓库,把仓库级配置机制归成八种:Context Files、Settings、Skills、Subagents、Commands、Hooks、Rules、MCP。八种里没有任何一个工具全支持。

采纳情况(论文只对深挖的三种给了明确计数):

机制仓库数产物数
Context Files2586(90.6%)4768 个文件
Skills158601 个(均值 3.8,中位数 2)
Subagents131450 个(均值 3.44,中位数 2)

再往里一层:601 个 skill 里 514 个(85.5%)不带任何附加资源——没有 scripts/、没有 references/,就是一份静态说明;references/scripts/ 各只出现在 35 个(5.8%)里。没有一个仓库用上 Claude Code 的 subagent 持久记忆。 工具分布上 Claude Code 1297 个仓库、Copilot 957 个,还有 493 个(17.3%)只放一个 AGENTS.md 就完事。机制间的共现强度(Cramér’s V)里最高的是 Settings–Hooks 0.36。

把两篇放一起看,落差很刺眼:前沿在搜索七层 harness 的联合配置,而中位数仓库只打开了第一层。 我的判断是这不是懒——是缺反馈信号。论文里那些 harness 收益都是对着一个能算 pass@1 的任务集测出来的,而绝大多数仓库本地没有这样的任务集,改了 harness 也不知道是好是坏,于是只能停在「写点规矩进 context file」这个不需要证据的层次。这也顺便解释了 Skills 为什么倾向静态说明而不是可执行脚本:静态文字不需要验证。


工具层:变量化的地基是 Harbor

值得单独点出来的是,测量这件事今年之所以能做,是因为有了执行层的抽象。Terminal-Bench 2.0 与 Harbor 同期发布(Merrill & Shaw;基准论文 arXiv:2601.11868,2026-01-17,85 位作者)。基准本身是 89 道终端任务,每题自带环境、人写解法和验证测试,前沿模型与 agent 的成绩「低于 65%」。

而 Harbor 是把原来的 Terminal-Bench harness 重写成了一个通用件,官方说明的三个动机正好对上本文主线:容器评测太慢,要横向扩到云上上千个容器;开发者不只想测量,还想用 SFT、RL、提示优化去改进 agent;框架和基准太碎,需要能跨部署复用的工具。换句话说,Harbor 提供的是「任何能装进容器的 agent 都能被换进来」的插槽——harness 变成可替换件,才谈得上做 3×3 受控实验。

一个边界,按二手标注:据 Polar 论文(arXiv:2605.24220,NVIDIA 等,2026-05-26)所述,Harbor 用各家原生配置启动 harness、不提供模型协议网关,所以换模型受原生 harness 支持范围限制(例如把某个开源 checkpoint 塞进 Claude Code 需要一个 Anthropic 兼容端点)。这一条我只核到了 Polar 的标题与作者,正文未读通,请自行核实。

想系统扫这个领域的话,人民大学那边维护了一份 502 篇引用的阅读清单 RUCAIBox/awesome-agent-harness(配套论文《Agent Systems with Harness Engineering》,页面上给的是 OpenReview 而非 arXiv 号),分类骨架是:harness 演化史(动作接口 → 工作区持久化 → 跨会话用户态)、harness 设计(agent 工作流 / 记忆系统 / 技能库 / 多 agent 编排)、面向 harness 的模型适配(上下文工程 / agentic 训练)、分领域基准、未来方向。它的第三章正好对应本文战线三。


带得走的东西

一、一张能贴进 README 的 Harness Card(据 arXiv:2605.23950 七层压缩)

发布任何 agent 分数时,至少填满这七行;缺哪行就说明哪行没控制。

最小必填
Execution运行时/沙箱、最大步数、单步与整任务超时、评测入口
Tool工具清单与数量、schema 风格、错误返回格式、哪些 middleware 对模型不可见
Context上下文上限、排序策略、压缩/摘要方式、检索方式、缓存策略
Schedulingagent 主循环、停止条件、重试与升级策略、回滚
Observability记了什么轨迹、检查点、可否事后审计
Verification输出解析、schema 校验、自检、是否跑测试、最终补丁校验
Governance权限模型、允许/拒绝清单、副作用边界、人审点

配套的报数规范同样值得抄:至少 2×2 的模型 × harness 网格,固定任务顺序、环境、评测脚本、API 参数和停止规则,报每个模型的 HV、每个 harness 的 MV、HV/MV 比、名次翻转次数。

二、四条战线的一页速查

战线代表工作最硬的一个数对我意味着什么
测量arXiv:2605.23950HV/MV = 7.80×;6/9 名次翻转没有 Harness Card 的对比结论,先降级为「趋势」而不是「排序」
自动搜索arXiv:2604.25850(AHE)69.7 → 77.0,跨模型族 +5.1~+10.1优先把守则做成工具/middleware,而不是继续润色提示词
训练arXiv:2606.254473B 赢 7B 14.1 分;h-low 遇改版掉到 2.7要训练就先冻结并版本化 harness
刹车arXiv:2607.12227 / arXiv:2602.14690匹配预算下不稳定占优;90.6% 仓库只有 context file别急着上自动演化;先给自己造一个能算 pass@1 的小任务集

三、一个约 19 美元的亲手验证实验

上面所有数字我都只核到了论文页面(部分是 HTML 全文、部分是摘要),没有任何一个是我亲手复现的。所以给一个成本最低的自测:

  1. 挑 20 道你自己项目里的真任务,写好能自动判对错的验证脚本(这一步最贵,但它正是上面「工程刹车」诊断出的那个缺失前提)。
  2. 造两个 harness,只改一处:工具描述从一行改成带前置条件与工具间关系(对应论文的 h-low → h-high 那两行差别)。其余全部固定。
  3. 两个模型 × 两个 harness × 20 题 × 2 次 = 160 次运行。
  4. 算 HV/MV 比,看名次是否翻转。

成本估算(我用 python3 -c 验算过):参照论文的 3×3×100×2 = 1800 次运行花了 215.79 美元 / 84.4 小时 / 2.611 亿 token,160/1800 = 8.89%,线性外推约 19 美元、7.5 小时、2320 万 token。这是外推不是实测,实际数字取决于你的任务长度和模型单价——但量级说明这个实验属于「一个下午 + 一杯咖啡钱」,不属于「实验室级投入」。

如果你的 HV/MV 也明显大于 1,那么在你的项目里,下一步该调的不是模型。


诚实的提醒

  • 本文所有数字均为核实过的来源(当场检索、逐条回查 arXiv 页面),没有一条是我亲手测出的。其中 arXiv:2605.23950 与 arXiv:2606.25447 的表格数据读的是 HTML 全文版;arXiv:2604.25850、2602.14690 的数字来自摘要与 HTML 正文;arXiv:2604.20938、2606.12882、2607.12227 的摘要未给具体数字,本文已在对应段落逐一标注。
  • 关于 Harbor 换模型受限那条,来自 Polar 论文的转述,我未读通其正文,属二手信息。
  • 「h-low 把猜工具名奖励进权重」是我的解读,不是论文原话;论文报的是失败现象(编造不存在的工具名)和分数,因果解释由我补的。
  • 四条战线的划分是我的提炼,不是领域公认分类;RUCAIBox/awesome-agent-harness 的官方骨架分成演化史 / 设计 / 模型适配 / 基准 / 未来方向五块,与本文视角不同。

参考来源

工程实践与工具

arXiv 论文

  • arXiv:2605.23950 — Stop Comparing LLM Agents Without Disclosing the Harness(HV/MV = 7.80×,Harness Card)
  • arXiv:2606.25447 — The Interplay of Harness Design and Post-Training in LLM Agents(h-low/mid/high,OOD 崩塌)
  • arXiv:2604.25850 — Agentic Harness Engineering: Observability-Driven Automatic Evolution(AHE,69.7 → 77.0)
  • arXiv:2607.12227 — Rethinking the Evaluation of Harness Evolution for Agents(搜索混淆与同集报数)
  • arXiv:2602.14690 — Harness Engineering for Agentic AI Coding Tools(2853 仓库,八种机制)
  • arXiv:2606.12882 — HarnessBridge: Learnable Bidirectional Controller for LLM Agent Harness
  • arXiv:2604.20938 — HARBOR: Automated Harness Optimization(贝叶斯 flag 空间搜索)
  • arXiv:2601.11868 — Terminal-Bench:89 道终端任务,前沿成绩低于 65%
  • arXiv:2605.24220 — Polar: Agentic RL on Any Harness at Scale(仅核到标题与作者)

站内相关