蚁工厂
26-10-03 17:19 微博认证:科技博主

多 Harness 强化学习终极指南
地址:huggingface.co/spaces/FineEnvs/multi-harness-rl
huggingface的一篇长文~
同一个模型,在不同的 Agent Harness中可能表现得截然不同。现在,我们可以直接在 Claude Code、Codex 等用户实际使用的 Harness 中通过强化学习训练模型,并让模型在多种 Harness 上同时获得提升。

---------------
如果你使用 AI 编程,很可能已经通过不同工具使用过同一个模型,比如在 Claude Code、Cursor、Pi 或 Cline 中使用 Claude 模型。你可能也注意到,同一个模型在这些工具里的行为并不完全一样:它的规划方式不同,会选择不同的工具,而且某项任务在一个工具中可以顺利完成,在另一个工具中却可能陷入困境。

这种差异是可以量化的,而造成差异的关键之一,就是包裹在模型外部的程序——也就是 Agent Harness。

Harness 负责驱动 Agent 的运行循环,决定模型可以使用哪些工具、模型会看到什么上下文、如何解释模型返回的内容,以及什么时候结束任务。换掉 Harness,就等于改变了模型看到的信息以及它能够执行的操作,因此最终结果也会发生变化。

例如,在 SWE-bench Pro 上,同一个 GLM-5.2 模型在一种 Harness 中的成绩只有约 23%,而换到另一种 Harness 后可以达到约 52%。而且不存在一个对所有模型都最好的 Harness:某个 Harness 对一种模型效果很好,对另一种模型却可能表现很差。

这个问题对于自行部署的开放权重模型尤其重要。如果模型从未在你使用的 Harness 中训练过,它可能会调用不存在的工具,或者生成 Harness 无法解析的输出。而只在一个 Harness 中训练也不能完全解决问题,因为模型可能学会那个 Harness 特有的使用习惯,换到其他 Harness 后仍然表现不佳。

一种解决思路,是直接让模型在这些真实 Harness 中进行训练,并通过针对多步工具调用的强化学习来优化它。这种方法被称为 Agentic Reinforcement Learning(智能体强化学习,Agentic RL)。

本文研究的核心问题是:能否拿一个较小的开放模型,让它直接在 Claude Code、Codex、OpenCode 等人们实际使用的 Harness 中训练,并最终让它在所有这些环境中的能力都得到提升?

这些 Harness 都保持原样运行——它们本来并不是为了强化学习训练而设计的,作者也没有修改它们的代码。

为实现这一目标,本文介绍了一个开放框架:使用 OpenEnv 连接训练系统和 Agent 环境,由 Harbor 提供任务与 Sandbox(沙箱),再使用 TRL 完成强化学习训练。

文章分为两部分。第一部分介绍 Harness、Agentic RL 和 RL Environment 等基础概念,并讨论为什么模型需要跨多个 Harness 进行训练;第二部分介绍作者构建的具体框架,以及他们如何使用该框架,让一个小型开放模型 LFM2.5-2.6B 同时在四种 Harness 中接受训练。

实验中,在四种 Harness 上取平均后,该模型在未见测试任务上的成功率从约 42% 提升到了 54%;对于原本就能够解决的任务,模型所需的工具调用次数减少了约 31%。

相比之下,如果模型只在 OpenCode 中训练,提升主要集中在 OpenCode 本身,在另外三个没有参与训练的 Harness 中提升明显较小。

作者还将强化学习与监督微调(SFT)进行了比较:他们使用更大模型生成的成功 Agent 轨迹进行 SFT,而在这组实验中,其效果不如多 Harness 强化学习。

发布于 山东