@omarsar0: CMU 出了一篇关于 harness learning 的炸裂论文。(收藏起来)另外,注意这个重要的 AI 工程新技能……
摘要
CMU 论文提出 "harness learning":用 RL 训练的提议者模型根据执行反馈修改智能体的可执行 harness,而不改动求解器权重,从而实现跨未见任务的可泛化测试时适配,4B 提议者模型表现超过其 35B 教师模型。
查看缓存全文
缓存时间: 2026/10/04 11:11
CMU 的一篇论文,关于 harness learning 的。(加个书签)另外要注意这个重要的新型 AI 工程技能——通过编辑 agent 的 harness 代码而不是修改权重来改进 agent。我看到这种趋势正在迅速扩大。作者用强化学习训练了一个 proposer 模型,让它阅读任务、当前的 harness 以及一份执行报告,然后写出对 harness 的一次代码编辑。奖励就是修改后的 harness 的得分。求解器(solver)模型从头到尾都不变。一个训练好的 4B proposer 在单步修订任务上超过了它的 35B 老师,其中包括它在训练中从未见过的任务族。在 HotpotQA 上训练的 proposer 能持续改进 MuSiQue 和 2WikiMultihopQA 上的 harness。 论文:https://arxiv.org/abs/2609.35738 论文对话:https://academy.dair.ai/papers/harness-learning-enables-generalizable-test-time-adaptation-2609.35738…
Harness Learning 实现可泛化的测试时适配
来源:https://arxiv.org/html/2609.35738
Alvin Zhang, Xuecheng Liu*, Zixuan Wang* Fahim Tajwar, Daman Arora, Ruslan Salakhutdinov† † 致谢:同等贡献 † 致谢:项目负责人 Yuda Song † 致谢:同等指导 Andrea Zanette
摘要
语言模型 agent 由它的模型和它的 harness 共同定义——harness 是那个组织模型调用、工具使用和信息流的可执行程序。由于不同的任务需要不同的方式来组织这些操作,因此 harness 需要依据手头任务的反馈进行适配。我们提出 harness learning(harness 学习),训练一个 proposer 模型,利用执行反馈来修订 solver 的 harness。我们把这一过程形式化为可执行程序上的元学习(meta-learning),其中 harness 的修订充当基于梯度的适配中的权重更新。我们用强化学习训练 proposer,以修订后 harness 的任务性能作为奖励。在测试时,proposer 利用在一个新任务上连续执行所得的反馈来持续改进 harness,而完全不做任何参数空间的更新。在推理和多跳问答上的实验表明,harness learning 提升了修订的质量,而且这种测试时适配的能力能够迁移到未见过的任务上。针对单步修订训练的策略可以在多轮中持续改进 harness,而针对修订序列训练的收益则因设置而异。这些发现指出了一条通往持续学习 agent 的路径——这类 agent 能把积累的经验转化为可泛化的改进。
1 引言
harness 是一个可执行程序,负责组织对基础模型的调用以及与工具的交互(Yang et al., 2024;Khattab et al., 2024)。它决定了模型能看到什么、可以使用哪些工具,以及执行如何推进。由于这些选择会强烈影响性能(Shinn et al., 2023;Yang et al., 2024),对 harness 进行适配,就提供了一条在不改变模型参数的前提下改进模型能力利用方式的路径(Zhang et al., 2025b;Lou et al., 2026)。执行反馈可以为模型调用、工具使用和中间输出的选择提供指导,但要找到有效的 harness 修订,往往需要在测试时反复试错,而且在一个任务上有效的修订未必能迁移到另一个任务上。因此我们提出这个问题:模型能否学会根据执行反馈修订 harness,并且这种方式能够泛化到新任务?我们把这个问题称为 harness learning,并视其为可执行程序上的元学习(Duan et al., 2016;Finn et al., 2017)。外层循环从执行结果中训练一个修订模型,我们称之为 proposer;内层循环则使用 proposer 根据执行反馈来适配 harness。因此,训练学到的是一个可复用的修订流程,它可以迁移到未见过的任务上,而无需在测试时更新模型参数(Baxter, 2000;Andrychowicz et al., 2016)。
我们通过训练 proposer 去编辑可执行的 harness 代码来实现 harness learning(图 1)。给定一个任务描述、当前的 harness 以及一份执行报告,proposer 生成一处代码修改。我们用强化学习训练 proposer,以生成的 harness 的性能作为奖励,并且可以选择用监督微调进行初始化。在测试时,同一个 proposer 可以被反复应用,利用每一次执行的反馈来指导下一次修订。
我们在推理和多跳问答上评估 harness learning。在 Reasoning Gym(Stojanovski et al., 2025)上,训练提升了在被同时排除出监督学习和强化学习的任务族上的修订质量;在单步修订中,训练后的 4B proposer 平均表现超过了 35B 的老师。在多跳问答中,在 HotpotQA(Yang et al., 2018)上训练的 proposer 能迁移到 MuSiQue(Trivedi et al., 2022)和 2WikiMultihopQA(Ho et al., 2020)。在这两种设置中,训练后的 proposer 都能在测试时适配的连续轮次中持续改进 harness。在 QA 中,即使一个只用种子 harness 输入训练过的 proposer,也仍然能持续改进修订后的 harness,这表明它在适配情境和任务之间具有泛化能力。
我们做出以下贡献。
在测试时学会适配可执行的 harness。 我们把 harness learning 作为可执行程序上的元学习提出:模型从执行结果中学会如何修订那个组织模型调用和工具使用的 harness。在测试时,模型利用执行反馈为新任务适配 harness,而不需要任何参数更新。
泛化到未见过的任务。 我们展示,通过 harness 修订实现的测试时适配能力,能够迁移到训练期间未见过的推理任务和问答基准上。
迭代式测试时适配。 我们展示,针对单步修订训练的 proposer,可以在测试时适配的连续轮次中持续改进 harness。我们分析了训练如何改变修订的可靠性、辅助信息的结构,以及生成式工具的使用方式。
图 1:Harness learning。 proposer 读取任务描述、当前 harness h_{t-1} 及其执行报告,然后写出一处代码编辑 y_t,这里是在加入答案校验和重试。运行修订后的 harness h_t 会得到一个奖励,并为下一轮提供反馈。训练只更新 proposer,测试时两个模型都保持冻结。图 2 详述了训练过程。
2 相关工作
Harness 优化
自动化 agent 设计优化语言模型的管线和工作流(Khattab et al., 2024;Zhang et al., 2025b),其中面向 harness 的方法利用执行反馈来修订那些支配 agent 行为的程序(Lee et al., 2026;Lou et al., 2026)。同期工作也在训练专门的模型来构建和修订 harness(Shao et al., 2026;Zhang et al., 2026a)。Harness-R1 通过监督初始化加强化学习训练一个编辑器,并冻结 solver——这一训练配方与我们的相似。JIT-Agent 学习任务条件下的 harness 生成、修复与演化。我们的研究把 harness 修订框定为一个习得的适配流程,并考察连续多轮执行反馈能否提升那些在训练中被排除的任务族上的性能。
元学习
元学习利用跨任务的经验来学习一个初始化或一个适配流程(Duan et al., 2016;Finn et al., 2017;Hospedales et al., 2022)。AdaptFlow 学习一个共享的工作流初始化(Zhu et al., 2025),而 The Last Harness 则在 harness 演化蓝图上提出一个外层循环(Seong et al., 2026)。我们的形式化把可执行的 harness 代码当作被适配的对象,并把 proposer 训练为适配规则。把 harness 代码当作被适配的对象,使得内层循环可以改变控制流、工具接口以及模型调用的序列;proposer 则从执行反馈中学习如何做出这些离散的改动。在测试时,proposer 和 solver 都保持冻结,开发集问题上的分级执行反馈引导着连续的 harness 修订。TTHE 也用冻结的模型适配可执行的 harness,以无标注的执行轨迹作为反馈(Nie et al., 2026)。附录 A 讨论了更广泛的适配方法与评估协议。
3 预备知识
3.1 Harness
给定一个语言模型,harness 是那个在任务全程中编排模型调用的可执行程序。harness 为每一次模型调用构造上下文、控制调用何时发生、执行工具请求,并引入环境反馈以支持迭代式问题求解。harness 的设计决定了模型如何与它的环境交互。例如,一个编码 agent 的 harness 可以暴露查看文件、编辑代码和运行测试的工具,然后把这些产生的观察结果返回给模型(Yang et al., 2024)。harness 可以被改动,而模型的参数保持不变。
3.2 带可验证奖励的强化学习
一个策略 \pi_\theta(y \mid x) 是一个自回归语言模型,把上下文 x 映射到一个 token 序列 y = (y_1, \dots, y_{|y|})。在带可验证奖励的强化学习中,一个程序化的评分器对回复或其执行结果进行评估。训练最大化在提示分布 \mathcal{D} 上的期望奖励: \mathcal{J}(\theta) = \mathbb{E}_{x \sim \mathcal{D}}\, \mathbb{E}_{y \sim \pi_\theta(\cdot \mid x)}\big[r(x, y)\big]. \tag{1}
GRPO
组相对策略优化(Group Relative Policy Optimization,Shao et al., 2024)在同一个上下文下、从 \pi_{\theta_{\text{old}}} 采样得到的一组响应 \{y_i\}_{i=1}^G 内部对奖励做归一化。令 r_i = r(x, y_i),则 y_i 的每一个 token 都会接收到组归一化的优势 \hat{A}_i = (r_i - \operatorname{mean}_j r_j) / (\operatorname{std}_j r_j + \delta)。
(以下原文片段残缺)
保留 harness 的分支流程如下:令 h^{\star}_{t} 表示当前保留的 harness—— h^{\star}_{t} = \begin{cases} h^{\prime}_{t}, & \text{若 } J(h^{\prime}_{t}; Q^{\text{dev}}) > J(h^{\star}_{t-1}; Q^{\text{dev}}), \\ h^{\star}_{t-1}, & \text{否则。} \end{cases} \tag{7} 在每一次比较内部,各方法共享同一个种子 harness 和初始执行报告。之后的每一轮都使用来自所保留 harness 的新反馈,我们会在每一轮之后测量它的留出集得分。附录 E.1 和 E.2 给出了修订模板、执行报告和分支指令。我们会为每一个提议打分,包括得分为零的 harness,而种子不计入提议数量。编辑内容只从最终答案中解析;被拒绝的编辑会收到错误反馈,并可在尝试预算内重试。编辑失败以及声明“不改动“的提议,都保留其父 harness 的得分。对于单步修订,我们报告留出集得分的均值和八次中最好值;对于多步修订,我们报告开发集所选 harness 的得分(表 9 和表 13)。表 10 把编辑失败与得分为零的 harness 区分开来,附录 C.1 考察了对编辑失败处理方式的敏感性。
未见任务族会排除所有 SFT 和 RL 任务族。表 9 报告了每一个被评估的任务族、它的训练暴露情况,以及它被从主图中排除的原因。主图排除了五个对 4B proposer 和老师来说都难以用算法式 harness 解决的未见任务族:knight_swap、letter_jumble、modulo_grid、sokoban 和 ab(以 † 标注)。在全部 26 个未见任务族上,Base 的平均得分为 0.282,SFT 为 0.415,单步 RL 为 0.528,老师为 0.501。
种子 harness 只调用一次 solver 并提取其答案。固定的工具循环基线最多提供五轮 Python 执行,并在所有任务族间共享。老师使用相同的修订与打分协议,以及相同的反馈报告。单步实验的结果包含种子基线。多步曲线绘制的是保留 harness 的得分(式 7),而表 17 的多步列报告的是跨轮次的最佳提议;在任何任务族的平均值上,这两个得分之差最多为 0.002。图 4 在共享的未见任务族上比较了两种协议,表 9 和表 14 给出了逐任务族的结果。总体的不确定性为跨任务族的一个标准误,它在每个任务族内部对重复运行取平均后计算;逐任务族的阴影区表示多次运行之间的范围。
修订比较的范围
单步与多步评估在提议预算和提示方式上并不相同。独立提议使用分支指令,并重新生成种子报告;顺序修订则共享一份固定的初始报告,随后使用来自所保留 harness 的反馈。我们对顺序修订与独立修订的比较并没有隔离出反馈的贡献,因为这些协议在父 harness 和候选选择上也存在差异。附录 C.2 详述了 Reasoning Gym 的任务族子集,附录 D.4 描述了对应的 QA 比较与提议预算。组合实验比较了标准提示与在提示中附加辅助工具指令的做法(附录 E.3)。结构化组合指的是 harness 把辅助工具集成进 solver 的工具循环,功能化组合则额外要求某个辅助工具必须对答案有所贡献。表 18 报告了审计计数。
B.2 SFT 语料与训练
SFT 使用表 4 中任务族的首轮老师修订,只保留那些带来改进的……(原文残缺)
相似文章
@rohanpaul_ai:Johns Hopkins 与 Carnegie Mellon University 新论文:小模型也能学会改进 agent 的 harness……
一篇 Johns Hopkins 与 Carnegie Mellon University 的论文表明,4B 的编辑模型可以从失败报告中学会改写 agent 的 harness 代码,这种能力能迁移到未见过的任务上,平均编辑得分甚至超过了其 35B 的老师模型。
@omarsar0:Microsoft 及其合作者发表了一篇关于演进智能体框架(agent harness)的新论文。从已发表的研究中演进框架是一个非常棒的想法——这也是我过去几个月一直在测试的方向。
来自 Microsoft 和 UCSB 的研究人员提出了 ScholarEvolve 框架,通过挖掘已发表的 AI 研究中的改进策略来演进智能体框架,在模型保持不变的情况下,在 AppWorld 和 Tau2-Bench 上取得了显著提升。
@omarsar0: // 自我束具:能自我改进的束具 // (收藏这个)我们今天依赖的大多数智能体框架…
本文介绍了自我束具(Self-Harness),一种新的范式,其中基于LLM的智能体能够迭代地改进自身的操作束具——包括提示、工具和控制流程——无需人类工程师或更强大的外部智能体,在多个模型上取得了显著的性能提升。
@omarsar0:大家,构建你自己的框架。这是来自NVIDIA关于自进化代理框架的绝佳论文。(收藏它…)
论文介绍了SoL-Pi,一种自动化框架发现方法,可将token使用量减少近一半,并将API成本削减约三分之一,同时在基准测试中保持性能,使用诸如GPT-5.6 Sol和Opus 5的模型。
来自 Meta 的一篇关于智能体框架(agent harness)优化的优秀论文。Meta-Harness 式的搜索方法只使用一个开发集和一个提议……
# Meta(联合 Duke 与 UC Davis)提出用于智能体 harness 优化的「自改进分支混合」框架 Meta 联合杜克大学(Duke)与加州大学戴维斯分校(UC Davis)提出了一种 **Mixture of Self-Improving Branches(自改进分支混合)** 框架,用于优化智能体 harness(运行框架)。该方法将原本单轨迹的 **Meta-Harness** 搜索拆分为多个**自适应分支**:每个分支拥有不断演进的开发子集(development subsets)和提案策略(proposal policies),并引入一个**路由器(router)**,针对每个输入动态选择表现最佳的分支。 该框架在多个基准上取得了显著提升: - **Olympiad 级别数学任务**:相对提升最高可达 **+34.8%** - **Terminal-Bench 2.0**:提升 **+11.6%** - **SWE-bench Lite**:提升 **+3.8%**