我们把 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 从未要求的行为。我们为用更少的工具调用解决任务添加了一个小的奖励:在它已经能解决的任务上,模型现在在每个 harness 中都少用 31% 的调用,在 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

