去年讨论Agent落地时,焦点常常集中在上下文工程上。大家琢磨怎么设计 Few-shot 示例,如何优化 RAG 检索的文本片段。但随着 Agent 任务复杂度的急剧攀升,控制数据流向、调度工具和处理异常的底层脚手架代码,其重要性往往超过了单纯的文本拼接,对系统整体性能的影响更为深远。这促使行业的焦点从“在提示词里塞什么”转向了“如何通过逻辑去获取和处理信息”,也就是走向了 驾驭工程。
今天要介绍的这项名为《Meta-Harness: End-to-End Optimization of Model Harnesses》的研究,来自斯坦福大学和麻省理工学院,Dspy 项目的第一作者 Omar Khattab 也参与了其中。

这项工作的核心可以用一句话概括:他们实现了Harness的自动化。该系统不满足于让 Agent 仅仅优化提示词或技能,而是通过直接读取底层文件系统和完整的代码执行轨迹,自行优化并重写其自身的脚手架代码。实验表明,经过 Agent 优化后的自身性能,在某些任务上比 Claude Code 这样的强基线高出6倍。
这意味着未来的 AI 应用开发可能逐步告别人工编写Harness,Agent 框架将从静态的工具库,演变为能根据任务分布进行自我演化与优化的动态系统。
项目地址: https://github.com/stanford-iris-lab/meta-harness-tbench2-artifact
什么是Harness?
在一个 Agent 系统中,模型的表现不仅取决于其内部的权重参数,还在极大程度上依赖于它的 Harness。Harness是包裹在固定大语言模型周围的框架代码,它决定了系统在运行过程中需要存储哪些信息、何时检索信息以及如何将这些信息组织并呈现给模型。
举个例子,开发一个编码 Agent 时,Harness 的设计决定了是将整个代码库塞进提示词,还是先让模型执行 grep 命令搜索相关文件。保持同一个 LLM 不变,仅仅改变其外围的 Harness,甚至能在同一个基准测试上产生高达 6倍 的性能差距。
现有优化方法的痛点
尽管 Harness 如此关键,但目前无论在工业界还是学术界,其设计和优化仍高度依赖 人工工程。工程师需要手动检查失败案例、调整启发式规则,并在有限的几种设计方案中反复迭代试错。
最近虽然出现了一些“文本优化器”(如 OPRO、TextGrad、GEPA 等),试图利用 LLM 来迭代改进提示词或代码,但它们在优化 Harness 时面临严重的“水土不服”,主要原因在于 反馈信息的过度压缩:
- 无记忆性或极短上下文: 许多现有方法在每次迭代时,仅向优化器提供极其有限的上下文(例如100到30,000个Token),通常只包含标量分数或简短的LLM生成摘要。
- 丢失因果归因能力: Harness 的决策往往具有长程依赖性。例如,第一步决定存储某个变量,可能会导致第十步的推理彻底失败。如果仅仅告诉优化器“任务失败了”或提供一个简短摘要,它根本无法追踪下游失败与早期 Harness 决策之间的因果关系。

比较了不同文本优化方法的历史访问方式与每轮上下文规模。Meta-Harness 是唯一采用“完整历史 + 全量日志/分数”的方案。
为了解决上述问题,研究者提出了 Meta-Harness。这是一个运行在代码空间的外层循环系统,专门用于搜索和优化 LLM 应用的 Harness 代码。

Meta-Harness 的外层搜索循环。提案智能体读取历史候选的代码、分数和执行轨迹,生成新 Harness,评测后再把新日志写回文件系统。
系统的数学目标
给定一个固定的语言模型 $M$ 和任务分布 $X$。对于一个给定的 Harness $H$ 和具体的任务实例 $x \sim X$,系统会执行一个交互轨迹 $\tau \sim p_M(H, x)$。任务特定的奖励函数 $r(\tau, x)$ 会对这个轨迹进行打分。Meta-Harness 的优化目标就是找到能够最大化期望最终奖励的 Harness $H^{*}$:

Meta-Harness 的设计哲学是:与其硬编码复杂的搜索启发式规则,不如给予一个强大的“提案智能体”充分的历史信息访问权限,让它自己去诊断问题并提出解决方案。
- 智能体提案者: 使用 Anthropic 的 Claude Code(基于 Opus-4.6 模型)作为具备编程能力的智能体来生成新的 Harness。它不仅能生成文本,还能调用开发者工具直接修改和查阅代码。
- 完整历史的“文件系统”访问: 这是 Meta-Harness 最具突破性的设计。每次迭代中,对于每个被评估过的历史候选 Harness,系统都会在文件系统中完整保存其源代码、评估分数以及详细的执行轨迹。提案者不会把海量日志一次性塞进上下文,而是像人类程序员一样,使用
grep 和 cat 等命令在文件系统中选择性检索、阅读和诊断。单次评估可能产生高达 10,000,000 个Token的诊断信息。
- 代码空间搜索: 通过阅读执行轨迹,提案者可以推断出 Harness 失败的根本原因,并在算法结构层面修改 Harness,输出完整的 Python 程序。
实验一:在线文本分类
在第一个场景中,LLM 需要不断接收带新标签的样本,持续更新记忆,并在保留的测试集上进行分类。基础模型为 GPT-OSS-120B。
实验设置与对比基线
研究者在三个高难度数据集上评估:预测刑事指控的 LawBench、预测疾病的 Symptom2Disease 以及预测化学反应前体的 USPTO-50k。
基线方法包括零样本、少样本、以及当前最先进的两个人工设计的 Harness:ACE 和 MCE。同时,还与 OpenEvolve、TTT-Discover、GEPA 等文本优化器进行了公平的计算量匹配对比。
结果


- 显著超越现有文本优化器: Meta-Harness 仅用4次评估就达到了其他优化器最终的最佳准确率,最终收敛时准确率比基线高出10个百分点以上。
- 消融实验证明“执行轨迹”的绝对价值: 关键消融实验显示,只给提案者“分数”,最高准确率仅41.3%;给“分数+摘要”,准确率反而降至38.7%;但给予完整执行轨迹的 Meta-Harness,最高准确率飙升至56.7%。这证明摘要会丢失诊断错误所必需的细节。

在线文本分类中的消融实验。只给分数,或给“分数+摘要”,都明显弱于直接开放原始执行轨迹。
- 更少上下文,更高准确率: Meta-Harness 发现的最佳方案在测试集上达到了 48.6% 的准确率,比 ACE 和 MCE 分别高出 7.7 和 8.6 个百分点。更惊人的是,它实现这一成绩仅消耗 11.4K 的上下文 Token,而 ACE 需要 50.8K。
发现的Harness策略剖析
Meta-Harness 探索出了一个在精度与上下文成本之间权衡的帕累托前沿。
- 低成本策略 - 草稿验证: 首先检索5个最相似的历史样本,让模型给出“初始草稿标签”;然后,专门检索支持与反对该标签的例子各5个,要求模型重新思考。这种双重调用策略非常节省 Token。

草稿验证策略流程图
- 高精度策略 - 标签引导检索: 构建一个复杂的单次 Prompt:先列出所有合法输出标签;再为每个标签提取最具代表性的样本以提供全局覆盖;最后,通过 TF-IDF 相似度,将高度相似但标签不同的样本配对展示,建立敏锐的局部决策边界。

标签引导检索策略流程图
这两种截然不同的复杂算法,完全是由模型通过查看失败案例、自动编写代码“进化”出来的。
实验二:检索增强的数学推理
解决奥林匹克级别数学题时,引入相关解题思路理论上应有帮助。但以往研究表明,朴素的密集检索往往无法匹配复杂逻辑,甚至导致性能倒退。
实验设计
研究者构建了超50万道数学题的大型语料库,要求 Meta-Harness 搜索能提升大模型在250道高难题上表现的检索机制。
自动演化出的路由策略
经过40次迭代,Meta-Harness 自动编写出一个包含四个分支的 BM25 路由检索系统,结构精巧:
- 组合数学路由: 取回20个结果,去重到8个,根据词汇匹配度和难度重排,保留前3个。
- 几何路由: 检索1个高难度固定参考题,外加2个原始BM25近邻。研究发现保留原始结构匹配比重排更有效。
- 数论路由: 检索12个结果,重排时为那些“开头就声明解题技术”的答案加分。
- 默认路由: 获取10个结果,并根据检索分数集中程度,自适应决定最终展示给模型的例子数量。

自动演化出的数学检索 harness。一个词法路由器先判断题型,再调用对应的 BM25 检索与重排策略。
代码中所有的正则匹配触发词、去重阈值、重排权重,均由 Meta-Harness 外层循环自动调试生成。
跨模型泛化性能
这套发现的 Harness 在200道完全未见的 IMO 级别试题上测试,并应用于五个搜索阶段从未见过的模型上。结果显示,它成功实现了跨模型迁移,平均准确率比无检索基线高出4.7个百分点,彻底避免了传统密集检索的性能倒退问题。

IMO级数学题主结果。该检索 harness 在5个未见过的模型上平均带来4.7个百分点提升。
实验三:TerminalBench-2上的智能体编程
在 TerminalBench-2 这种要求Agent通过命令行进行多步长程交互的极端困难基准上,Meta-Harness 再次展现了其威力。
压倒性的成绩
通过初始化两个强基线,Meta-Harness 展开代码搜索。最终发现的 Harness 在使用 Claude Opus 4.6 模型时达到了 76.4% 的通过率,超越了人工设计的 Terminus-KIRA,在排行榜上名列第二。在使用较弱的 Claude Haiku 4.5 模型时,改进更为显著:达到了 37.6% 的通过率,远超第二名,登顶榜单第一。

TerminalBench-2 排行结果。Meta-Harness 在 Opus 4.6 上超过 Terminus-KIRA,在 Haiku 4.5 上排名第一。
定性分析:提案者的“因果推理”过程
论文附录详细记录了 Claude Code 作为提案者时的思考轨迹,解释了 Meta-Harness 与简单“随机变异”的本质不同:
- 前几次迭代: 提案者最初提出的修改混杂了系统Bug修复和Prompt指令调整,导致分数暴跌。
- 第三次迭代: 通过查阅执行轨迹,提案者进行了因果推理,明确指出失败的根本原因是Prompt中关于“清理”的指令导致必要文件被提前删除,而Bug修复被这种有害修改“混淆”了。回退Prompt修改后,分数回升。
- 第七次迭代: 在多次修改控制流失败后,提案者另辟蹊径,提出纯附加式的修改——“环境自举”:在Agent主循环开始前,预先运行Shell命令收集操作系统版本、安装的语言、包管理器等信息,作为“环境快照”注入首个Prompt。这个小改动消除了模型初期“盲人摸象”的时间,在步数受限的任务中至关重要。

TerminalBench-2 上发现的最终 harness。核心增益来自红色部分的 environment bootstrap,它在主循环开始前注入环境快照。
这段历史证明,如果不提供详细的执行轨迹,优化器绝对无法推导出“Prompt中多写一句清理指令导致文件被删”这种长程因果关系。
论文的启发与实践建议
《Meta-Harness》论文证明了一个极具潜力的方向:随着编程智能体能力的跨越式发展,原本由资深工程师手动完成的“框架调优、日志分析、Bug排查、代码重构”流程,可以端到端地交由系统自动化完成。
其成功核心在于:
- 文件系统级别的历史查阅: 放弃过度压缩的反馈,允许智能体像人类一样阅读源代码和执行轨迹。
- 长程归因能力: 智能体能够从执行日志中抽丝剥茧,发现前期设计缺陷导致的后期崩溃。
- 代码空间表达: 优化输出的是真实、可读、包含复杂控制流的 Python 程序,表现出极强的泛化能力和可解释性。

提案智能体的文件访问统计。中位数每轮读取82个文件,代码与执行轨迹占比近80%,说明它确实在利用完整历史。
实践建议
对于想要应用类似思路的开发者,论文给出了宝贵经验:
- 编写优秀的能力指令: 指导提案者的 Prompt 应专注于界定其权限和格式要求,不要干涉其诊断逻辑,放权让它自己决定看什么日志。
- 从难题入手: 构建包含困难样本的搜索集,如果初始基线已完美,搜索将失去意义。
- 确保日志的机器可读性: 将执行轨迹和代码保存为良好的层级结构格式(如JSON),便于智能体使用
grep 等工具高效搜索。
- 前置轻量级验证: 在新生成的 Harness 投入昂贵基准测试前,运行一个几秒钟的极小验证脚本拦截语法错误,避免资源浪费。
结语
Meta-Harness 的出现,为 Agent 开发的自动化补齐了关键一环。大模型自身能力的演进依赖算力和数据,而其能力的充分释放则越来越依赖这层动态的、可自我优化的脚手架。当 AI 开始接管自身的控制流和调度逻辑时,开发者或许能从枯燥的打补丁、写正则和调优 Prompt 中解放出来。未来的 Agent 开发可能会变得更像一种元编程:你只需定义边界和提供底层工具接口,剩下的系统外围代码,交给机器在试错中自行编译和演化就足够了。
这项研究在 开源实战 领域也极具启发性,展示了如何通过自动化手段探索和优化复杂系统的设计空间,而不仅仅是调参。对于所有致力于构建更智能、更健壮LLM应用的开发者和研究者而言,这种从“调整模型权重”向“优化系统外围代码”的视角转移,无疑具有深远的意义。