多 Harness 强化学习:同一权重如何在 4 种 Agent 框架下从 42% 跃升至 54% · 干货攻略
- 链接: https://x.com/adithya_s_k/status/2105684965891703141
- 分类: x-tips
- 来源: X @adithya_s_k
- 作者: Jay
- 更新: 2026-10-09
- 仓库: adithya-s-k/FineEnvs
这是什么
FineEnvs Multi-Harness RL 是 Adithya S K(@adithya_s_k)于 2026 年 10 月 1 日发布的一套开源实践,完整仓库位于 adithya-s-k/FineEnvs,配套文章见 HF Space · multi-harness-rl。
它的核心命题是:训练数据和算法不是瓶颈,Harness(智能体框架)才是。
所谓 Harness,指的是包裹在模型外部的那一层代码+配置——包括上下文组织、工具调用分发、响应解析、重试逻辑和停止规则。同一个模型权重,在不同 Harness 下跑,可以产生高达 30pt 的性能差异。例如 GLM-5.2 在 SWE-bench Pro 上:同一个模型,在某个 Harness 下 23%,在另一个下 52%,差了 29pt(Harness 排名也随模型变化——Codex 对 GLM-5.2 排第二,对 Gemma 4 26B-A4B 排第九)。
FineEnvs 的 05 号项目展示了如何同时在多个 Harness 上训练模型,让模型学会的技能不局限于某一个框架,从而实现跨 Harness 泛化。
为什么值得关注
谁分享的
Adithya S K 是 RL for LLMs 领域活跃的工程型研究者,他的 FineEnvs 项目专注于把 RL 环境做成可复现的实战模板,在 Hugging Face 社区有较高认可度。
解决什么问题
问题一:单 Harness 训练的过拟合。 如果只在 OpenCode 上训练,模型学会了 OpenCode 的 prompt 格式、工具命名和交互模式。一旦换到 Claude Code 或 Codex,原有的「技能」就变成「坏习惯」——调用不存在的工具、发出 Harness 无法解析的参数。
问题二:Harness 之间不可迁移的 API 方言。 OpenCode、Claude Code、Codex、Mini-SWE-Agent 各自有一套 API 格式和交互协议,直接混用几乎不可能。
问题三:没有公开的跨 Harness RL 训练基础设施。 过去没有人在不做任何源码修改的情况下,把 RL 训练接入真实生产级 Harness。
核心数据(全部来自官方来源)
以下数字均来自 FineEnvs 官方 RESULTS.md 及配套文章:
| 指标 | 数值 | 来源 |
|---|---|---|
| 基线 pass@1(LFM2.5-2.6B) | 42.18%(421/998 任务) | RESULTS.md |
| 多 Harness RL 训练后 pass@1(step 1000) | 54.2% | RESULTS.md |
| 工具调用节省(多 Harness 成功解题中) | 31.07% | RESULTS.md |
| 工具调用节省(仅 OpenCode 训练中) | 11.39% | RESULTS.md |
| SFT(3,189 条轨迹,27B teacher) | 47.5%(瓶颈) | AlphaSignal 报道引用 |
| 多 Harness RL 最终表现 | 54.6% | AlphaSignal 报道引用 |
| 仅 OpenCode 训练在自己 Harnesses 下峰值 | 58% | AlphaSignal 报道 |
| 各 Harness 基线差异幅度 | ~30pt(Mini-SWE-Agent 52% vs OpenCode 24%) | RESULTS.md pilot 数据 |
核验过程
官方来源
- FineEnvs GitHub README(05-multi-harness-rl/README.md):包含完整训练脚本说明、奖励函数设计(correctness × efficiency bonus)、评估设置、Async GRPO 配置细节。奖励函数原文:
python
bonus = 0.1 * 15 / (15 + tool_calls) if tool_calls > 0 else 0
reward = correctness * (1 + bonus)
正确解题得 1 分,正确且节省工具调用可额外获得最多 0.1 的效率 bonus。
-
RESULTS.md:包含 pilot 实验数据和历史运行数据。历史运行明确记录: - 基线:421/998 = 42.18%(2 pairs ungraded) - Harbor OpenCode-only step-1000:52.3%,工具节省 11.39% - Harbor 多 Harness step-1000:54.2%,工具节省 31.07%
-
AlphaSignal 报道(交叉验证):独立媒体确认了 42%→54% 的数字、31% 工具节省、SFT 47.5% 瓶颈、capture proxy 工作原理,与官方数据一致。
交叉验证结论
所有关键数字(42.18%、54.2%、31.07%)均可在 FineEnvs RESULTS.md 中找到原文对应,交叉验证无冲突。SFT 瓶颈 47.5% 来自 AlphaSignal 报道(非官方文档直接引用,原帖未提供论文),已标注。
关于「30pt 差异」:官方 RESULTS.md pilot 数据中,OpenCode 基线 24% vs Multi-harness RL 端到端对比不在同一维度;AlphaSignal 报道明确提到 GLM-5.2 跨 Harness 有 29pt 差异,FineEnvs 内部 pilot 数据(Mini-SWE-Agent 52% vs OpenCode 24%)差距约 28pt,两组数据方向一致,原帖的「30pt」应指跨 Harness 差异量级,已在正文中说明为近似值。
上手步骤
环境准备
需要 Python 3.12、两张 H100/H200 GPU(一张跑 vLLM,一张跑训练),或使用 Hugging Face Jobs 云端运行。
# 克隆仓库
git clone https://github.com/adithya-s-k/FineEnvs.git
cd FineEnvs/05-multi-harness-rl
# 安装依赖(自动装 TRL + OpenEnv)
# 详见 REPRODUCE.md
三种训练模式
仓库提供三个训练脚本,分别对应不同的 Harness 接管程度:
| 脚本 | Harness 角色 | Trainer |
|---|---|---|
train/whitebox.py |
TRL 直接接管工具,SETA 执行 | GRPOTrainer |
train/opencode.py |
原生 OpenCode 在 sandbox 内跑(已废弃) | AsyncGRPOTrainer |
train/multi_harness.py |
Harbor 托管 OpenCode/Claude Code/Codex/Mini-SWE-Agent | AsyncGRPOTrainer |
推荐:多 Harness 训练(multi_harness.py)
# train/multi_harness.py 核心配置
HARNESSES = ("opencode", "claude_code", "codex", "mini_swe_agent")
# 每个任务组轮流使用四种 Harness 中的一种
# 8 个 rollouts 共享同一任务,TRL 用 GRPO 比较组内相对 reward
训练数据来自 SmolDataEnvs(04 号项目):5,394 个数据分析任务,来自真实 Kaggle notebook,答案可精确比对,无 LLM 参与评分。
评估
# 评估 checkpoint 100/200/...
python eval/evaluate.py --checkpoint checkpoint-100 --harnesses opencode claude_code codex mini_swe_agent
# 默认并发 35,每个 harness 跑 1,000 attempts
核心奖励逻辑
GRPO 组内相对更新,同组 8 个 rollouts 比较相对 reward。当 8 个全部正确时,正确性 reward 无方差,工具效率 bonus 驱动学习更短的成功轨迹:
reward = correctness * (1 + 0.1 * 15 / (15 + tool_calls))
坑与适用边界
⚠️ 训练门槛高
需要两张高端 GPU,或接受 HF Jobs 的排队时间。不是所有团队都能快速复现。
⚠️ 4 种 Harness 性能差异极大
Mini-SWE-Agent 基线 52% vs OpenCode 基线 24%,差距本身就超过很多模型的绝对收益。如果只在自己选中的 Harness 上评估,很可能高估效果。 跨 Harness 公平评估才是真实泛化能力的试金石。
⚠️ 仅 OpenCode 训练会伤害其他 Harness
AlphaSignal 报道明确指出:OpenCode-only 训练后在自己环境峰值 58%,但在 Claude Code 和 Codex 下表现差于基线。多 Harness 训练解决了这个问题,但代价是峰值低于单 Harness 最优。
⚠️ 白盒(whitebox)训练已过时
README 明确标注 native opencode_env 已废弃(OpenEnv 0.7.0),新项目应使用 Harbor。
适用边界
- 适合场景:需要在多种 Agent 框架上部署同一模型权重;已有自己的 RL 训练 pipeline,想接入真实 Harness 而非简化环境。
- 不适合场景:没有 GPU 资源;任务无法被确定性验证(RL 需要精确 reward);只需要单 Harness 极致性能。
一句话结论
同一个 2.6B 模型权重,跨 4 种 Agent Harness 联合训练后 pass@1 从 42% 升到 54%,解题所需的工具调用减少 31%——关键不是模型,而是训练时用的 Harness 数量。
参考链接
- X 原帖:https://x.com/adithya_s_k/status/2105684965891703141
- GitHub:https://github.com/adithya-s-k/FineEnvs
- HF Space(文章):https://huggingface.co/spaces/FineEnvs/multi-harness-rl
- HF 训练集:https://huggingface.co/collections/FineEnvs/smoldataenvs-multi-harness-rl-6abdfaaa8d74dacd481d5212
- AlphaSignal 报道(交叉验证):https://alphasignal.ai/news/hugging-face-and-liquid-ai-s-lfm2-5-jumps-12-points-across-four-agent-harnesses