Paper Report

Meta-Harness: End-to-End Optimization of Model Harnesses

用 coding agent 自动搜索、修改、评估 LLM 应用 harness,把人工 harness engineering 转化为可执行的代码空间优化问题。

核心对象优化模型外层 harness:prompt construction、retrieval、memory、agent loop 和环境信息。
关键信号不压缩成短摘要,而是保留源码、分数和完整 execution traces。
主要结果文本分类 48.6,高于 ACE 40.9;数学平均 +4.7;Haiku TerminalBench-2 达到 37.6。
主要风险依赖强 proposer,TerminalBench 同集 search/eval,成本和泛化仍需审慎看。

1. 论文基本信息

论文标题Meta-Harness: End-to-End Optimization of Model Harnesses
作者Yoonho Lee, Roshen Nair, Qizheng Zhang, Kangwook Lee, Omar Khattab, Chelsea Finn
机构Stanford, KRAFTON, MIT
版本arXiv:2603.28052v1,2026 年 3 月 30 日
项目与代码项目页:https://yoonholee.com/meta-harness/;artifact:https://github.com/stanford-iris-lab/meta-harness-tbench2-artifact
汇报人待填写

本文提出 Meta-Harness:一个用 coding agent 自动搜索、修改、评估 LLM 应用 harness 的外循环系统。论文的核心判断是,LLM 系统效果不只取决于模型权重,也取决于外层代码如何存储信息、检索信息、组织 prompt、控制工具调用和 agent loop。过去这些 harness 大多靠人手工调,Meta-Harness 则把 harness engineering 转化为“在代码空间中搜索更优 harness”的问题。

Figure 1搜索速度与 TerminalBench-2 结果预览
Meta-Harness search progress and TerminalBench-2 result
Figure 1 给出论文最直接的结果预览:左图显示 Meta-Harness 在文本分类 harness 搜索中比 OpenEvolve、TTT-Discover 等文本优化方法更快达到高分;右图显示在 TerminalBench-2 的 Claude Haiku 4.5 设置下,自动发现的 harness 超过了多个手写 agent harness。

2. 提纲 / 背景

2.1 Harness 为什么重要

论文中的 harness 指包在固定 LLM 外面的代码系统。它决定模型每一步看到什么、哪些历史被存储、如何检索上下文、如何调用工具、何时停止、如何更新状态。换句话说,harness 不是模型本身,但它直接影响模型能不能把能力稳定发挥出来。

作者引用的背景判断是:在同一个 benchmark 上,只改变模型外层 harness,就可能造成 6 倍性能差距。这说明很多 agent 失败不是模型参数单独造成的,而是外部运行系统没有把信息、工具和反馈组织好。

2.2 传统 harness engineering 的问题

传统做法主要靠人工:研究者或工程师看失败轨迹,猜测是哪段 prompt、memory、retrieval、tool loop 或状态更新出问题,然后手动改代码。这个过程有效但慢,而且很依赖人的经验。

已有的 prompt optimization / text optimization 方法也不完全适合这个问题。它们通常只给优化器一个标量分数、短文本反馈、固定摘要或最近几个候选。对普通 prompt 也许够用,但对 harness 不够,因为 harness 的错误常常跨越很多步:一个早期的存储或检索策略,可能在很多轮之后才导致失败。

Table 1文本优化方法的反馈规模对比
Text optimization method comparison
Table 1 对比了几类文本优化方法的反馈形式。Meta-Harness 的差异在于,它不是把每次评估压缩成短摘要,而是把候选代码、分数和完整执行轨迹都写进文件系统,让 proposer agent 自己决定要查哪些历史信息。

2.3 本文定位

既然 harness 对性能这么关键,能不能让另一个 agent 自动改 harness,而不是继续由人手工调?

这篇论文可以看成前面 Agent Harness Survey 中“自动化 harness engineering”方向的具体实证工作。Survey 给出 harness 领域的架构图和问题地图;Meta-Harness 则进一步把自动优化做成一个可运行系统。

Agent Harness Survey

回答 harness 是什么、有哪些组件和挑战,提供领域地图。

AutoHarness

让模型为具体环境合成 action legality / policy 代码,更偏规则和策略代码。

Meta-Harness

让 coding agent 自动搜索整个 harness code,包括上下文、检索和 agent loop。

3. 研究问题与目标

如何用一个外层 agent 自动搜索任务特定 harness,使固定底层模型在目标任务分布上取得更高 reward 或更好的 accuracy / pass rate?
表示层harness 用什么形式被搜索?本文选择单文件 Python 程序,也就是 code-space search。
反馈层优化器看到什么历史经验?本文让它通过文件系统访问源码、分数和 execution traces。
搜索层谁提出新 harness?本文使用 coding agent proposer,而不是固定 mutation 规则。
评估层根据任务指标选择候选,例如准确率、上下文成本、数学 pass@1 和 TerminalBench pass rate。

论文的目标包括:证明 harness 可以作为独立优化对象;证明完整历史日志和 execution traces 比压缩摘要更适合 harness search;在文本分类、数学推理和 agentic coding 三个任务域验证;并展示自动发现的 harness 是可读、可检查、可迁移的代码策略。

4. 核心方法 / 模型

4.1 方法总览:用一个 harness 优化另一个 harness

Meta-Harness 本身也是一个 harness,只不过它包裹的不是普通任务模型,而是一个用于改代码的 proposer agent。它的外循环很简单:提出候选 harness、评估候选、保存日志、再基于历史日志提出下一个候选。

Figure 2Meta-Harness search loop
Meta-Harness search loop
左侧文件系统保存所有历史候选的源码、execution traces 和分数;中间的 proposer 读取这些文件后生成新 harness;右侧用固定 LLM 和任务集评估新 harness;评估结果再写回文件系统。

4.2 形式化目标

论文把 harness 看成一个有状态程序。给定固定模型 M、任务分布 X、任务样本 x,harness H 会构造 prompt、接收模型输出、更新状态,并产生一条 rollout trajectory tau。任务奖励函数 r(tau, x) 评价这条轨迹。

H* = arg max_H E_{x ~ X, tau ~ p_M(H, x)} r(tau, x)

如果有多个目标,比如准确率和上下文成本,就不强行合成一个分数,而是用 Pareto frontier 保留非支配候选。这个形式化把“调 prompt / 调 memory / 调 retrieval / 调 agent loop”统一成了一个优化问题。

4.3 外循环算法

输入:任务集 X,固定 LLM M,proposer P,迭代次数 N
初始化:若干有效 harness H_0,空文件系统 D

for 每个初始 harness:
    在任务集上评估
    把源码、分数、执行轨迹写入 D

for t = 1 ... N:
    proposer P 查询文件系统 D
    P 读取历史源码、分数、失败轨迹和日志
    P 提出一个或多个新 harness
    对每个通过接口校验的新 harness:
        运行评估
        把新源码、分数、执行轨迹写入 D

返回:所有候选中的 Pareto frontier

这里的关键设计是:外循环本身不规定 parent-selection、mutation、crossover 或固定反思模板。proposer 可以自由查看任意历史候选,自己判断应该基于哪个候选改、改局部逻辑还是重写整个程序。

4.4 为什么要用文件系统,而不是把历史塞进 prompt

Meta-Harness 的核心不是“上下文更长”,而是“历史经验可被选择性访问”。一次 harness 评估可能产生上百万甚至千万 token 的日志,不可能全部塞进一个 prompt。作者让 proposer 通过 grepcat 等开发者工具按需查看文件。

完整历史源码、分数、prompt、模型输出、状态更新、工具轨迹
按需检索proposer 用开发者工具查局部证据
失败归因判断问题来自 prompt、retrieval、state 还是 loop
代码修改局部补丁或重写 harness 结构
继续评估新候选变成下一轮历史经验

论文在 TerminalBench-2 搜索日志中统计,proposer 每轮中位数读取 82 个文件,其中约 41% 是历史 harness 源码,40% 是执行轨迹。这说明它确实在使用外部历史,而不是只做局部随机改动。

4.5 关键实现细节

本文实验中的 harness 通常是单文件 Python 程序,修改任务相关的 prompting、retrieval、memory 和 orchestration 逻辑。proposer 使用 Claude Code + Opus-4.6。底层被优化的模型 M 在不同任务中不同,但始终冻结。

proposer 只看 search set 结果,不看 test set。每个 search run 通常评估约 60 个 harness,运行 20 轮左右。这个设置说明 Meta-Harness 更接近“自动工程搜索”,不是训练底层模型,也不是用测试集直接调参。

4.6 发现的文本分类 harness

在线文本分类任务中,Meta-Harness 发现了一组 memory-based harness。它们都维护过去标注样本的记忆,但使用不同方式构造当前 query 的上下文。

Figure 5Draft verification classification harness
Draft verification classification harness
低上下文成本版本:先检索 top-5 相似样本让模型给 draft label;再基于这个 draft label 检索 confirmers 和 challengers,让模型决定保持还是修正。第二次检索依赖模型当前猜测,因此能暴露针对当前错误假设的反例。
Figure 6Label-primed query-anchored classification harness
Label-primed query-anchored classification harness
高准确率版本:先给出所有合法标签作为 label primer,再为每个标签选一个 query-relevant coverage example,最后加入局部 contrastive pairs。这个 harness 更贵,但能让模型同时看到完整 label space 和局部决策边界。
Table 9文本分类发现的 Pareto variants
Pareto-optimal discovered text classification variants
Table 9 说明 Meta-Harness 找到的不是单个点,而是一条准确率和上下文成本之间的 Pareto frontier。最低成本的 Draft Verification 平均准确率 40.1、上下文成本 5.4K;主文选用的 Label-Primed Query 平均准确率 48.6、上下文成本 45.5K 字符。

4.7 发现的数学检索 harness

数学推理任务中,Meta-Harness 没有简单地“多检索几个例题”,而是发现了一个按题型路由的 BM25 检索策略。

Figure 8Discovered math retrieval harness
Discovered math retrieval harness
输入问题先经过 lexical router,被分到 combinatorics、geometry、number theory 或 algebra/other。不同路线使用不同检索数量、去重、rerank 和保留样本数。这说明检索增强数学推理的关键不只是“有没有 retrieval”,而是检索策略是否和题型结构匹配。

4.8 发现的 TerminalBench-2 harness

TerminalBench-2 中,Meta-Harness 基于 Terminus-KIRA 做搜索,最终发现的有效改动非常朴素:在 agent loop 开始前先收集环境快照,并把它注入初始 prompt。

Figure 9Discovered TerminalBench-2 harness
Discovered TerminalBench-2 harness
快照包括当前工作目录、/app 目录内容、可用语言和版本、包管理器、内存等。这个 bootstrap 不改变模型能力,但减少 agent 开局 2 到 4 轮探索环境的成本。对于依赖特定工具、库或文件结构的长程终端任务,这种节省可能直接影响 pass / fail。

5. 实验结果与分析

5.1 在线文本分类主结果

文本分类实验沿用在线学习式设置:模型一个个接收标注样本,更新 memory,再在 held-out test set 上预测。使用的数据集包括 LawBench、Symptom2Disease 和 USPTO-50k。底层分类模型是 GPT-OSS-120B。

Table 2 + Figure 3文本分类主结果与 Pareto frontier
Text classification result and Pareto frontier
Meta-Harness 平均准确率达到 48.6,高于 ACE 的 40.9 和 MCE 的 40.0;同时上下文成本是 11.4K tokens,低于 ACE 的 50.8K 和 MCE 的 28.5K。Figure 3 进一步说明,Meta-Harness 找到了一条更好的 accuracy-context Pareto frontier,而不是单纯靠堆更多上下文提升准确率。

5.2 为什么 raw traces 重要

作者做了一个关键消融:proposer 能看到的信息越完整,search 效果越好。

Table 3Proposer information ablation
Ablation of proposer information
只看分数的设置 median accuracy 是 34.6;分数加摘要是 34.9;完整 Meta-Harness 看到 raw execution traces 后,median accuracy 达到 50.0,best accuracy 达到 56.7。摘要不能替代原始轨迹,因为摘要可能压掉诊断失败原因所需的细节。
Table 4Text optimizer comparison
Text optimizer comparison on search set
在同样 proposal evaluation budget 下,Meta-Harness 的 median / best accuracy 是 50.0 / 56.7,高于 GEPA、Best-of-N、OpenEvolve 和 TTT-Discover。论文还报告 Meta-Harness 用约 0.1 倍 evaluation 就达到这些 text optimizer 的最终效果。

5.3 OOD 文本分类泛化

作者还在 9 个搜索期间没见过的文本分类数据集上测试发现的 harness。Meta-Harness 平均准确率 73.1,高于 ACE 的 70.2 和 few-shot baselines。这个结果说明发现的策略不只是记住三个 search dataset 的局部模式,至少在同类文本分类任务上有一定泛化。

这个泛化仍然是任务族内部泛化:它证明的是“文本分类 harness 策略可以迁移到其他文本分类数据集”,不是证明同一个 harness 能跨到数学、coding 或多工具 agent 场景。

5.4 检索增强数学推理

数学任务使用 50 万以上已解题语料作为 retrieval corpus,在 250 道 Olympiad-difficulty search set 上搜索检索 harness,再在 200 道未见过的 IMO-level 问题上评估。搜索时用 GPT-OSS-20B 选择 harness,最终同一个检索 harness 在 5 个 held-out models 上评估。

Table 6Retrieval-augmented math result
Retrieval-augmented math result
Meta-Harness 在 5 个模型上都超过 no retriever,平均从 34.1 提升到 38.8,提升 4.7 个点。它也略高于固定 BM25 retrieval 的 37.5。Dense retrieval 和 random few-shot 在部分模型上反而退化,说明检索策略本身需要 task-specific 地设计。

5.5 TerminalBench-2 agentic coding

TerminalBench-2 包含 89 个长程终端任务。论文以 Terminus 2 和 Terminus-KIRA 作为初始强 baseline,在同一个 benchmark 上做 search 和 final evaluation,并额外做人工检查和 regex 审计,排查 task-specific string leakage。

Table 7TerminalBench-2 result
TerminalBench-2 result
Claude Opus 4.6 设置下 Meta-Harness 达到 76.4% pass rate,高于 Terminus-KIRA 的 74.7%,但低于 ForgeCode 的 81.8%。Claude Haiku 4.5 设置下,Meta-Harness 达到 37.6%,高于 Goose 的 35.5 和 Terminus-KIRA 的 33.7。
TerminalBench-2 的 search 和 final evaluation 是同一批 89 个任务,虽然作者做了泄漏检查,但它不是严格 held-out benchmark。因此它更像 benchmark-specific discovery,而不是完全泛化评估。

5.6 实验结论汇总

问题证据结论
自动搜索 harness 是否有效文本分类 48.6,高于 ACE 40.9 / MCE 40.0在 context-management 类任务上有效
完整日志是否必要raw traces 消融 50.0 median,分数/摘要只有约 34-35轨迹细节是核心信号
数学检索是否能被优化IMO-level 平均 +4.7 points over no retriever检索策略需要按题型设计
Agent coding 是否受益Haiku 4.5 上 37.6,高于 Goose 35.5harness 小改动也可能影响长程任务
结论是否完全泛化TerminalBench 同集 search/eval,proposer 只测 Claude Code Opus-4.6泛化范围仍需更严格验证

6. 总结

本文的贡献可以概括为四点。

第一,提出 Meta-Harness:用 coding agent 自动优化 harness code,把 harness engineering 从人工经验过程转成可执行的外循环搜索。

第二,强调完整历史经验的重要性。不同于只看分数、短摘要或最近候选的文本优化器,Meta-Harness 把所有源码、分数和执行轨迹放进文件系统,让 proposer 自己选择性读取。

第三,在三个不同任务域验证了这个思路:在线文本分类、检索增强数学推理和 TerminalBench-2 agentic coding。结果显示,自动发现的 harness 可以超过多种手写 baseline 或固定优化方法。

第四,发现的 harness 是可读代码,而不是不可解释参数。文本分类中能看到 draft verification、label primer、contrastive pairs;数学中能看到题型路由和 per-route 检索策略;TerminalBench 中能看到环境 bootstrap。这让人可以检查、复用和批判这些策略。

当 coding agent 足够强时,agent 系统外层的 prompt、memory、retrieval、tool loop 和环境 bootstrap 都可以成为自动搜索对象。改进 LLM agent 不一定只靠更强模型,也可以靠自动改“模型外面的运行程序”。

7. 个人思考与展望

7.1 优点

Meta-Harness 的优点是问题抓得准。当前 LLM agent 的很多性能差异确实来自 harness,而不是模型权重本身。把 harness 当成可优化代码对象,比只说“prompt engineering 很重要”更具体,也更容易实验验证。

第二个优点是反馈通道设计合理。文件系统不是一个炫技设计,而是很贴合 coding agent 的工作方式:读文件、搜日志、比较版本、改代码、跑评估。相比把所有历史压成一个 prompt,这种方式更接近真实软件工程调试。

第三个优点是结果有可解释性。尤其是 TerminalBench 的 environment bootstrap,虽然简单,但很符合长程 agent 任务的实际瓶颈:模型经常先花几轮查环境,导致预算被浪费。自动搜索能发现这种小但有效的工程改动,说明方法不只是在调 prompt 文案。

7.2 局限性

依赖强 proposer

论文主要使用 Claude Code + Opus-4.6。如果换成弱 coding agent,是否还能稳定搜索出好 harness,需要额外验证。

评估成本不低

每次候选 harness 都要跑任务评估。它更适合高价值、可重复使用的 harness,而不是每个小任务临时跑一遍。

泛化证据有限

TerminalBench 不是严格 held-out;更强结论需要独立任务、独立模型和跨 benchmark 验证。

此外,自动 harness search 仍然需要人工设定边界。人要定义任务接口、评价函数、初始 harness、可修改文件范围和安全约束。它不是完全自动科研,而是把人最费时间的反复调试环节交给 agent。

7.3 和前两篇的关系

Agent Harness Surveyharness 是什么、有哪些组件和挑战
AutoHarness让模型为环境合成规则 / 策略代码
Meta-Harness让 coding agent 自动搜索整个 harness code
共同线索把能力提升放到模型外部系统中实现
研究机会可复用 harness 库、跨任务迁移、自动评估

7.4 可追问的问题

  • 如果 proposer 换成不同模型,Meta-Harness 的收益曲线会怎样变化?
  • 能不能把多个任务上发现的 harness 抽象成 reusable harness library?
  • 文件系统历史会不会越来越大,导致 proposer 检索和判断成本上升?
  • 如何防止 proposer 学到 benchmark-specific hack,而不是真正可泛化的 harness pattern?
  • 未来是否可以 co-evolve harness 和 model weights,让外部策略和内部能力一起优化?

总体来看,这篇值得重点读。它不是单纯提出一个 agent 框架,而是把“harness 影响模型性能”这件事变成了可搜索、可评估、可复用的工程优化问题。它的结论还不能证明 harness search 可以替代所有人工设计,但已经足够说明:在强 coding agent 出现之后,自动 harness engineering 会成为一个很现实的研究方向。