Hugging Face 团队把 Claude Code、Codex、Hermes、Pi、opencode 等编码 harness 变成 RL 环境,无需改动 harness 或训练代码,全部开源。
原文给出把真实编码 harness 直接变成 RL 环境的代理方案,并附开源代码与训练数据,可据此复现多 harness 训练流程。
我们把 Claude Code、Codex、Hermes、Pi、@opencode 以及其他编码 harness 变成了 RL 环境。无需改动 harness,无需改动训练代码。任何开放模型、任何任务集,完全开源,朋友们!
同一个模型,同样的权重:在 Mini-SWE-Agent 下为 62%,在 Claude Code 下为 33%。但要在真实 harness 内部训练,通常意味着要把它重新实现为一个环境,所以大多数模型都是在没人真正发布的脚手架里训练的。
解决办法是代理,而不是重写。harness 以为自己在和一个模型 API 对话。它实际上是在和一个捕获代理对话,该代理支持编码智能体使用的 4 种格式(OpenAI Chat Completions、OpenAI Responses、Anthropic Messages、Gemini),转发给 @vllm_project,记录 vLLM 采样出的精确 token ID 和 logprobs,并把 TRL 可以训练的序列交给它。harness 变成了环境。目前有 10 个 harness 通过它运行,没有一个被修改。
而且因为你能控制奖励,你可以塑造 harness 从未要求过的行为。我们为用更少工具调用解决任务加了一个小奖励:在它已经解决的任务上,模型现在使用的调用次数减少了 31%,在每个 harness 中都是如此,在 Codex 下大约减少一半。
在 @liquidai 的 LFM2.5-2.6B 上测试:
→ 在一个 harness 中训练:主要在该 harness 中更好(OpenCode 34% → 58%)。
→ 同时在 4 个中训练:在全部 4 个中都更好(42% → 54%)。
→ 改为对来自 Qwen3.8-27B 的 3,189 条 rollout 做 SFT:在 47.5% 处趋于平稳,低于两次 RL 运行。
一切都是开放且可复现的:OpenEnv 中的捕获代理、TRL 中的训练器、任务、SFT 数据、训练代码以及全部 7 个训练好的模型。接下来是更大的模型和更大规模的运行。
完整指南:https://huggingface.co/spaces/FineEnvs/multi-harness-rl
来源:clem 🤗 · x.com