Harness-R1:不改模型权重,RL驱动专职工程师修复Runtime提升9.3分

Harness-R1: Learning to Edit Executable Runtime Harnesses from Agent Failure Trajectories

大模型智能体(Agent)一旦部署到复杂的现实或模拟环境中,往往会暴露出各种意料之外的系统性缺陷:工具调用参数写错、环境状态追踪丢失、陷入无效死循环,或者在遭遇异常后彻底无法恢复。面对这些不断积累的失败交互轨迹,业界的常规解法通常走向两个极端:要么耗费算力对底座模型进行全量微调或在线强化学习;要么依赖固定的静态工程管线,依靠人工设计的反思机制或提示词进行修补。

ArXiv URL:https://arxiv.org/abs/2608.02276

然而,这两条路径都有明显的短板。微调底座模型成本高昂,且难以频繁适应环境接口的细微变动;而静态的工程框架(Agent Harness)往往缺乏弹性。更关键的是,如果直接让前沿闭源大模型(如 GPT-4 等)去给运行框架“写补丁”,通常会出现“看似逻辑自洽,一跑就报错或性能暴跌”的尴尬局面。

来自上海交通大学、小红书和东南大学的研究团队提出了一种全新的解决思路:Harness-R1。该研究并没有试图继续修改任务执行者的底座模型,也没有寄希望于大模型那未经闭环验证的代码生成能力,而是将“根据失败轨迹重构运行时(Runtime)”抽象为一个专职的强化学习任务。他们训练了一个独立的 9B 参数“Harness 工程师”,让其在目标 Agent 权重完全冻结的前提下,通过真实重跑产生的成败反馈来进化自身的修补策略。

实验结果令人瞩目:在 WebShop、ALFWorld 和 DBBench 三个不同维度的交互基准上,Harness-R1 让冻结的 Qwen3.5-9B 目标智能体的任务成功率从 44.3% 直升至 53.6%(绝对提升 9.3 个百分点),大幅击败了以固定提示词调用的前沿大模型。更重要的是,哪怕目标模型本身已经过充分的有监督微调,专职工程师依旧能在此基础上再为系统带来 5.0 个百分点的额外增益。这一成果展示了 Agent 进化的一条全新路径:不改决策中枢,通过强化学习动态演化外部运行时系统。

为什么大模型修不好自己的“脚手架”?

所谓 Agent Harness,是指包裹在底座决策模型外部的代码与逻辑运行时环境。它负责为模型组装上下文、解析与转发工具调用、校验即将执行的动作,并在环境报错时提供兜底与恢复机制。可以说,底座模型决定了 Agent 的“智商”,而 Harness 则构成了它感知与操纵现实世界的“躯干与中枢神经系统”。

长期以来,社区普遍认为给 Agent 增加诸如 Self-Refine 或 ReAct 等通用脚手架,总能带来正向收益。但论文中的对照实验给出了残酷的结论:固定规则的 Self-Refine 在三个基准测试中均导致奖励下降,平均性能下滑 2.5 个百分点;让 GPT-5.5、GLM-5.2 等前沿大模型直接看失败轨迹并输出代码补丁,其表现也极其不稳定,甚至在部分任务上直接让基线性能崩盘。

出现这种现象的核心原因在于缺乏执行反馈的文本自洽陷阱。前沿模型在修改代码时,追求的是文字层面的合理性与语法的可执行性,但运行时的修改涉及复杂的跨生命周期依赖。一个轻微改变上下文组装方式的补丁,可能会诱导底座模型产生幻觉;一个过于严苛的工具参数校验规则,可能让原本可行的非常规路径直接中断。如果修改方案没有经过真实环境的“原题重跑”,静态代码无论看起来多么精妙,在实际运行时都可能是致命的毒药。

要彻底解决这一问题,修补运行时本身就必须变成一种以真实任务增益为奖励的在线策略(Policy)。这正是 Harness-R1 的核心立足点:放弃不可控的一次性大模型生成,专门训练一个能够从真实执行结果中持续学习的“运维工程师”。

Harness-R1 整体框架图

专职工程师:从失败数据包到可执行补丁

Harness-R1 的整体设计由两个相互解耦的实体构成:一个是负责在环境中执行任务的目标智能体(Target Agent $A$),另一个是负责为其编写运行时补丁的 Harness 工程师(Harness Engineer $H_{\theta}$)。在整个训练与适配过程中,目标 Agent 的模型权重始终处于冻结状态。

系统首先让未打补丁的基础 Agent 在任务批次 $B={x_i}_{i=1}^n$ 中运行,记录其基线轨迹与奖励值 $R_i^0$。一个确定性的特征提取器会过滤掉所有成功样本,将那些发生交互崩溃、死循环、工具误用或超时的失败轨迹压缩为高密度的“失败数据包(Failure Packet)” $s_B$。该数据包完整剥离了冗余信息,保留了关键任务约束、导致失败的动作序列以及关键的环境状态变化。

专职工程师模型在接收到失败数据包后,会生成一段结构化的运行时代码补丁 $P$。这段补丁并不替换底座模型的权重,而是精准挂载到 Agent 运行生命周期的四个关键钩子函数上:

第一个钩子位于回合启动阶段(Episode-start),补丁在此处可以对初始任务目标进行语义重整或注入专用的先验上下文;第二个钩子位于决策前处理阶段(Pre-decision),负责在模型生成动作前清洗观测历史、压缩关键状态或重构提示词视图;第三个钩子位于动作介入阶段(Pre-action mediation),补丁在这里拦截模型生成的原生动作,执行格式修正、参数边界校验或阻断已知的死循环模式;第四个钩子则位于反馈后恢复阶段(Post-feedback recovery),一旦环境抛出异常报错或执行无果,该模块负责重写环境反馈,为模型提供具备引导性的纠错信号。

这种生命周期全覆盖的插桩设计,使补丁获得了极大的表达自由度,同时也对补丁的严谨性提出了极为严苛的要求:任何一处钩子报错,整个 Agent 的多轮循环就会瞬间瓦解。

以真实增益为指引的端到端强化学习

为了让一个仅有 9B 参数的小模型学会给复杂的运行时写补丁,Harness-R1 采用了“冷启动有监督微调(SFT)+ 基于成败结果的在线群体相对策略优化(GRPO)”的两阶段训练范式。

冷启动阶段旨在让工程师模型建立关于“什么是合法且不导致性能回退的代码补丁”的基础认知。研究者利用强大的教师模型针对独立的失败任务集生成候选补丁,但这些候选并非全盘接收,而是必须在冻结的目标 Agent 上进行真实的执行与回归测试,只有那些确保能够被正确加载、运行无异常且没有引发基线性能衰退的样本,才会被收录到冷启动数据集 $\mathcal{D}_{\mathrm{SFT}}$ 中,用以初始化工程师策略参数 $\theta$。

在完成冷启动后,系统进入核心的在线强化学习阶段。此时,工程师模型面对新的失败数据包 $s_B$,通过当前策略采样出 $K=8$ 个不同的候选补丁 ${P_1, \dots, P_K}$。每一个补丁被独立编译并加载到目标 Agent 的运行时中,随后目标 Agent 必须在同一个任务批次 $B$ 上进行完全重跑

系统此时评估的是该批次内平均任务奖励的绝对增量:

\[\Delta_{B}(P) = \frac{1}{n}\sum_{i=1}^{n}\left(R_{i}^{P}-R_{i}^{0}\right)\]

如果补丁解析失败、代码抛出异常、出现死循环,或者在重跑中发生退化,该补丁获得的奖励 $r(B, P)$ 直接被置为零;只有当补丁顺利跑完全部流程并带来实际成功率提升时,才赋予正向的环境增量奖励。通过在同一个失败数据包衍生出的 8 个候选补丁间计算经验均值 $\mu_B$ 与标准差 $\sigma_B$,系统将绝对增量归一化为相对优势:

\[\widehat{A}_{k}=\frac{r_{k}-\mu_{B}}{\sigma_{B}}\]

基于该优势值,算法通过截断的比率机制更新工程师模型参数,而在此期间,目标 Agent 仅作为不变的环境评判者存在。这种设计彻底摆脱了传统自然语言反馈的模糊性与不可靠性,将强化学习的优化梯度完全锚定在代码修改带来的端到端现实收益上。

实验验证:全面击败静态提示词与前沿大模型

为了检验该架构的真实威力,论文在三个具有截然不同交互特征的基准上进行了深度验证:侧重多轮网页检索与意图对齐的 WebShop、侧重文本具身多步骤状态追踪与室内操作的 ALFWorld,以及高度依赖严格 SQL 语法解析与数据库交互的 DBBench。

在以原生 Qwen3.5-9B 作为目标 Agent 的主实验中,Harness-R1 展现出了压倒性的优势。未经任何优化的基线系统在三个基准上的平均成功率仅为 44.3%,在经历了纯 SFT 初始化的工程师干预后,成功率提升至 46.5%;而经过在线 GRPO 充分进化的 Harness-R1 工程师,一举将平均成功率推高至 53.6%,实现了 9.3 个百分点的跨越式增长。特别是在状态空间巨大、极易出现执行中断的 ALFWorld 场景中,成功率更是从 40.6% 跃升至 53.2%。

相比之下,那些未经过执行闭环训练的对照组则相形见绌。如前所述,人工提示词策略 Self-Refine 让成功率跌落至 41.8%;哪怕是让调用成本极高的前沿旗舰模型直接扮演工程师角色,最强的 GLM-5.2 也仅取得 48.8% 的平均成功率,不仅落后于 Harness-R1 近 5 个百分点,且在 WebShop 等任务上还出现了负优化。这充分证明:在系统级代码重构这一高精度场景中,通过在线 RL 获得的闭环调优经验,远比单纯堆砌通用模型参数量更为关键。

共演化效应:当目标 Agent 本身也在进化

一个不可忽视的工程疑问是:如果底座决策模型本身能力变强了,优化外围的运行时还有意义吗?换言之,Harness 优化是否只是一种在“小模型脑力不足时临时垫脚”的妥协?

本文给出了极具说服力的否定回答。研究团队对目标 Agent Qwen3.5-9B 本身进行了直接的任务微调(SFT),使其自身的内生能力大幅增强,在无任何补丁协助下的平均基线成功率从 44.3% 上升到了 59.2%。随后,团队使用 Harness-R1 的整套范式,针对这个更加强大的目标模型重新训练了一个专属的工程师。

结果表明,专职工程师在这个强大的目标 Agent 身上,再度斩获了 5.0 个百分点的净收益,将整体成功率直接拉升到 64.2%。这揭示了一个深具潜力的技术图景:智能体中枢与外围运行时的“共演化(Co-evolution)”。底座模型的强化可以解决单步语义理解与基础推理问题,而专职工程师则能够针对更强模型表现出的新失败盲区,量身定制出更高阶的环境容错、状态过滤和生命周期干预策略。两者非但不冲突,反而在不同层面上形成了良性互补。

跨模型泛化与少样本迁移

除了为特定模型定制专属补丁,训练好的 Harness 工程师是否具备泛化能力,能够看懂未见过的模型犯下的错误?

研究团队设计了一个覆盖 21 种目标模型配置的泛化矩阵,涵盖了完全未参与训练的多种模型架构与尺寸。在测试中,这些全新的目标模型遇到失败时,将其产生的轨迹丢给未经微调的同一套 Harness-R1 工程师,由工程师现场生成定制补丁并部署执行。

在总共 63 组“目标模型-基准任务”的交叉评测中,Harness-R1 在 56 组上实现了显著的正向提升,4 组持平,仅有的 3 组负向波动幅度极小($\le 2.0$ 个百分点)。在所有 20 个完全未见过的目标配置下,平均成功率净增 7.06 个百分点。在少样本迁移实验中,工程师仅仅观察了来自某个任务的 10 条稀疏失败记录,所生成的补丁直接应用到包含 1,270 个未见任务的庞大集合中,依然展现出稳定的泛化增益。这表明该工程师习得的不是死记硬背的代码模板,而是一种深刻理解“异常轨迹特征与代码补丁因果关系”的高阶编程与调试策略。

解构补丁:究竟是哪个生命周期环节在起作用?

为了进一步探究运行时修补的底层动力机制,研究人员进行了一组细致的生命周期消融实验。在保持目标 Agent 和补丁生成逻辑不变的前提下,依次屏蔽补丁在四个钩子上的功能。

数据表明,完整补丁介入能够带来 8.9 个百分点的综合增益。当剥离掉“动作介入(Pre-action mediation)”机制时,整体收益剧降 3.9 个百分点;而剥离掉“反馈后恢复(Post-feedback recovery)”时,收益同样发生 3.3 个百分点的崩塌。相对而言,回合启动和决策前的修改对整体影响较为温和(分别造成 0.9 和 0.6 个百分点的下滑)。

更深层的洞察在于,不同任务环境对生命周期修补的需求呈现出强烈的异构性:

这种动态分工进一步印证了静态固定脚手架的局限性:任何试图用一套固定的 ReAct 模板或固定的反思流程通吃所有场景的做法,都注定无法应对真实世界环境的多样挑战。

从“代码生成”到“以环境结果为锚点的系统进化”

Harness-R1 的深层价值,不仅在于为大模型智能体提升了几个百分点的评测分数,更在于它为“AI 改善 AI(AI improving AI)”提供了一个极其务实且鲁棒的方法论样本。

长久以来,自动化软件工程(SWE-Agent 等)和代码生成领域多将注意力放在代码本身的静态测试通过率或文本相似度上。而在 Agent 运行时的语境下,代码本身只是一种手段,其终极目标是作为隐性中介,促成宿主模型在复杂世界中达成目标。Harness-R1 证明了:不需要直接触碰沉重的底座模型权重,将外部运行时视为一个可微调、可演化的控制平面,并完全利用环境的真实重跑结果作为强化学习的闭环奖励,同样能够激发出极其强大的系统级自愈能力。

随着大模型被集成进越来越复杂的企业级软件管线,系统面临的接口变动、容错处理和长程执行问题将愈发严峻。类似 Harness-R1 这种“专职运行时工程师”的角色,或许会成为未来复杂 Agentic 架构中的标准配置:一个模型在台前专注业务推理,另一个经过强化学习洗礼的工程师在幕后实时重构神经元与真实世界之间的数字通道。