同一个模型,同一套权重,跑在 Mini-SWE-Agent 里能拿62%,换到 Claude Code 里只剩33%。分数差了一倍,模型本身没动过一行。

这个落差来自 Hugging Face 的一次实验。他们把 Claude Code、Codex、Hermes、Pi、opencode 等编码工具直接变成了强化学习环境——不改工具,也不改训练代码。任何开放模型、任何任务集,全部开源。

打开网易新闻 查看精彩图片

问题出在训练和部署的错位上。模型平时在真实工具里干活,训练时却往往被塞进一个没人真正发布过的脚手架里。想让模型在真实工具里训练,通常的做法是把这个工具重新实现成一个环境,工程量不小。

解法是代理,不是重写

Hugging Face 的做法是加一层捕获代理。工具以为自己正在和一个模型 API 对话,实际上对面是这层代理。它支持编码智能体常用的四种格式:OpenAI Chat Completions、OpenAI Responses、Anthropic Messages、Gemini。

代理把请求转发给 vLLM,同时记录下 vLLM 采样时的精确 token ID 和 logprobs,再把 TRL 能训练的序列交出去。工具本身就成了环境。目前有10 个工具跑在这套流程上,没有一个被修改过。

因为奖励由自己控制,还能塑造工具原本没要求的行为。他们给"用更少工具调用完成任务"加了一点小奖励:在模型本来就能解出的任务上,调用次数减少了31%,每个工具里都成立,Codex 下大约减半。

三种训练路径的实测差距

测试用的是 Liquid AI 的 LFM2.5-2.6B,三条路线结果不同:

  • 只在单个工具里训练:主要在该工具里变好,OpenCode 从34%升到58%
  • 同时在 4 个工具里训练:4 个全都变好,从42%升到54%
  • 改用 Qwen3.8-27B 的3,189条 rollout 做 SFT:停在47.5%,低于两次强化学习的结果。

多工具同时训练没有出现此消彼长,反而四个方向一起涨。而用更大模型的数据做监督微调,成绩卡在两次 RL 之下。

捕获代理在 OpenEnv 里,训练器在 TRL 里,任务、SFT 数据、训练代码和全部7 个训练好的模型都已开放,可复现。下一步是更大的模型和更大规模的训练。