CoderForge-Preview 精读:258K 轨迹如何把 Qwen3 从 23% 推到 59.4%
Together AI 的 CoderForge-Preview 是目前最大的开源编码 Agent 轨迹数据集。精读其数据管线、训练方法、关键设计决策,并分析其三个自承认的局限如何指向下一代数据合成的方向。
CoderForge-Preview 精读:258K 轨迹如何把 Qwen3 从 23% 推到 59.4%
一句话总结:用强模型(Qwen3-Coder-480B)在 51K 任务上生成轨迹 → rejection sampling 过滤 → 纯 SFT 微调弱模型(Qwen3-32B),SWE-bench Verified 从 23.0% 到 59.4%。没有 RL,没有花哨的架构,就是”强模型生成 + 弱模型蒸馏”。
一、基本画像
| 维度 | 数据 |
|---|---|
| 发布方 | Together AI(2026 年 2 月) |
| 数据规模 | 413,278 条轨迹(其中 258,134 条去重,155,144 条通过测试验证) |
| 任务来源 | 51,000 个任务,来自 1,655 个 GitHub repo |
| 任务源分布 | SWE-Rebench (77K) + SWE-Smith (148K) + R2E-Gym (33K) |
| 生成模型 | Qwen3-Coder-480B |
| 训练方法 | 纯 SFT(无 RL) |
| 训练目标 | Qwen3-32B |
| 核心结果 | SWE-bench Verified:23.0% → 59.4% pass@1 |
| 排名 | ≤32B 开放权重模型第 2,开放数据模型第 1 |
| 数据集大小 | 原始 ~93GB,tokenized ~304GB |
| 开源 | HuggingFace,完全开放 |
二、数据管线拆解
2.1 整体流程
51K 任务(三个来源)
│
▼
Qwen3-Coder-480B 生成轨迹
· R2E-Gym / SWE-Rebench:每个任务生成 8 条
· SWE-Smith:每个任务生成 4 条
│
▼
Rejection Sampling(测试验证)
· 每条轨迹在 Docker 沙箱中执行
· 运行 repo 原有测试
· 只保留通过全部测试的轨迹
│
▼
155,144 条通过验证的轨迹
│
▼
Reward 打分 + 过滤(reward ≥ 1)
│
▼
纯 SFT 微调 Qwen3-32B
2.2 三个任务来源的特征
| 来源 | 轨迹数 | 占比 | 特点 |
|---|---|---|---|
| SWE-Smith | 148,001 | 57% | 通过 bug 注入自动生成的任务。规模最大,但任务类型单一(bug fix) |
| SWE-Rebench | 77,169 | 30% | SWE-bench 的扩展版,基于真实 PR。跨语言支持更好 |
| R2E-Gym | 32,964 | 13% | 基于 backtranslation 生成,任务设计更多样 |
观察:三个来源都是”从 repo 中提取/合成单点任务”的范式。没有跨 PR 的复合任务,没有长程开发任务。
2.3 Rejection Sampling 的关键设计
每个任务生成多条轨迹(4-8 条),只保留通过测试的那些。这意味着:
- 成功率约 60%(258K 总轨迹中 155K 通过 → ~60%)
- 480B 模型的成功率已经很高——说明这些任务对强模型来说不算太难
- 失败的 ~100K 条轨迹被丢弃——这些失败轨迹中可能有有价值的探索过程,但当前方案没有利用
2.4 单一 Scaffolding
所有轨迹使用同一个 scaffold 和固定的工具集生成。README 明确指出这是一个局限:
“Models trained on this dataset may be less capable on tasks outside that scope… when deployed with a different scaffold, tools, prompt template, or tool-call format.”
这意味着训练出的模型是”记住了一种特定的工作方式”,而不是”学会了如何用任何工具解决问题”。
三、训练方法
3.1 纯 SFT,没有 RL
这是一个重要的设计选择。CoderForge 没有用 GRPO、PPO 或任何 RL 方法——纯粹的监督微调。
为什么纯 SFT 就够了?
因为数据本身已经经过了 rejection sampling。只保留通过测试的轨迹 = 只保留”正确行为”。SFT 学习这些正确行为,不需要 RL 来区分好坏。
但这也意味着:模型学到的是”怎么做对”,没有学到”怎么从做错中恢复”。这和 HarnessForge v2 想解决的问题形成了互补。
3.2 训练数据混合
filtered_reward1 split 包含 155,144 条轨迹,是从三个来源中筛选 reward ≥ 1 的合集。这个 reward 的具体计算方式博客没有完全公开,但从字段设计看:
reward: float64—— 连续值,不是二元的 pass/failfinish_reason: string—— 记录终止原因(成功/超时/错误等)
推测 reward 综合了测试通过率、轨迹长度、工具使用效率等因素。
3.3 Tokenized 版本
提供了 Qwen Coder tokenizer 预处理好的版本(303GB),包含 input_ids 和 labels,可以直接用于训练。这降低了复现门槛。
四、核心结果分析
4.1 主结果
| 模型 | 训练数据 | SWE-bench Verified |
|---|---|---|
| Qwen3-32B(基线) | 无 | 23.0% |
| + CoderForge SFT | 155K 轨迹 | 59.4% |
| 提升 | +36.4pp |
这个提升幅度是惊人的——纯 SFT 就把一个 32B 模型的 coding agent 能力提升了 36 个百分点。
4.2 对比同期方案
| 方案 | 训练方法 | 数据规模 | SWE-bench Verified |
|---|---|---|---|
| CoderForge | SFT | 155K 轨迹 | 59.4% |
| SWE-smith (SWE-agent-LM-32B) | SFT | 5K 轨迹 | ~40.2% |
| DeepSWE | RL (GRPO) | 从 SFT 起步 | ~40% |
| R2E-Gym | SFT + RL | 8.1K 任务 | ~46% |
CoderForge 的优势很明显:规模碾压。155K 条高质量轨迹 vs SWE-smith 的 5K 条,数量级差距直接转化为性能差距。
4.3 隐含信息
规模仍然是关键变量。 CoderForge 没有做什么特别精巧的事情——就是用最强的模型(480B)生成最大量的数据(258K 条),然后暴力 SFT。在 coding agent 训练数据领域,我们还远没有到”数据质量 > 数据数量”的拐点。
五、三个自承认的局限
这是 CoderForge README 中最坦诚也最有价值的部分。
5.1 脚手架锁定(Scaffold Lock-in)
“All trajectories were generated using a single scaffold and a fixed set of tools.”
问题的本质:模型学会的不是”如何解决 coding 问题”,而是”如何在这个特定的 scaffold 里解决问题”。换一个工具集、换一个 prompt 格式、换一个 tool-call 协议,性能可能显著下降。
这意味着:59.4% 的成绩是在”scaffold 不变”的前提下取得的。真实部署环境中,scaffold 几乎一定和训练时不同。
未来方向:在多种 scaffold 下生成轨迹(Together AI 的 Next Steps 也提到了这一点)。但这会成倍增加数据生成成本。
5.2 任务范围偏窄(Bug Fix 偏向)
“Models trained on this dataset may be less capable on tasks outside that scope, such as feature implementation, refactors, or design-heavy changes.”
问题的本质:三个任务来源(SWE-bench、SWE-Smith、R2E-Gym)都偏向 bug fix。这不是偶然的——bug fix 任务最容易自动化验证(有没有通过测试),而 feature 实现、重构等任务的验收标准更模糊。
这意味着:训练出的模型擅长”修 bug”,但不一定擅长”从头实现一个新功能”或”重构一个模块”。而后者在真实开发中更常见、更有价值。
和 HarnessForge v2 的关系:v2 基于 release feature 的里程碑驱动,天然覆盖 feature 实现、重构等任务类型——正好填补 CoderForge 的盲区。
5.3 缺乏用户交互
“Real coding-agent usage involves continuous user interaction throughout the trajectory, not just initial instructions. This interactive supervision is largely absent.”
问题的本质:CoderForge 的轨迹是”给一个任务描述 → Agent 自主完成”的模式。但真实场景中,用户会在过程中给反馈:“不是这个方向”、“考虑下并发场景”、“先把测试写了再改代码”。
这意味着:模型没有学过”怎么利用中途反馈调整方向”。这在 Claude Code、Cursor 等产品中是核心能力——用户在过程中不断给指导,Agent 需要消化并调整。
和 HarnessForge v2 的关系:v2 的 Mentor 渐进提示机制正好模拟了这种交互——Dev 卡住时收到提示,需要理解提示并调整方向。
六、深层思考
6.1 “强模型蒸馏到弱模型”是当前最有效的范式
CoderForge 的核心逻辑:
Qwen3-480B 生成高质量轨迹 → SFT 训练 Qwen3-32B → 32B 获得接近 480B 的行为能力
这不是什么新发现——knowledge distillation 的思路。但在 coding agent 领域,它的效果出奇地好。原因可能是:coding 任务的 reward 信号非常清晰(测试通过/不通过),rejection sampling 的过滤效率极高。
但这个范式有一个天花板:32B 模型的性能上限取决于 480B 模型的能力。480B 模型做不到的事(比如真正的长程规划),32B 无论怎么蒸馏也学不会。
6.2 规模 vs 质量——CoderForge 选了规模
CoderForge 用 480B 模型生成了 258K 条轨迹,过滤到 155K 条。这些轨迹的质量上限受限于:
- 480B 模型的能力(已经很强了)
- 单一 scaffold(限制了行为多样性)
- bug fix 偏向(限制了任务多样性)
但它用规模弥补了质量的不足——155K 条”还行”的轨迹,效果好于 5K 条”精品”轨迹(SWE-smith)。
这说明:在 coding agent SFT 数据领域,我们还没有触及”数据量饱和点”。更多数据仍然能带来更好的效果。这对 HarnessForge v2 是好消息——如果管线能自动化跑通,规模就不是问题。
6.3 失败轨迹的浪费
CoderForge 生成了 258K 条轨迹,但只用了 155K 条通过测试的。被丢弃的 ~100K 条失败轨迹中:
- 有些可能在前 80% 的步骤都是对的,最后一步出了错
- 有些可能展示了有价值的探索模式,只是没找到最终答案
- 有些可能是因为环境问题失败(依赖缺失、超时),和模型能力无关
纯 SFT 只能用成功轨迹。但如果引入 RL 或对比学习,失败轨迹也可以利用。Together AI 在 Next Steps 中提到了 “agentic RL”——这很可能就是下一步。
6.4 预训练污染问题
CoderForge 没有讨论预训练数据污染。但考虑到:
- 任务来源是 1,655 个 GitHub repo(多是知名项目)
- Qwen3 的训练数据几乎一定包含了这些 repo 的代码
- 生成轨迹的 480B 模型可能”记住了”很多 bug fix 的答案
那么 59.4% 的成绩中有多少是”真正学会了解决问题”、多少是”记住了已知 bug 的修复方式”?这个问题 CoderForge 没有回答。
七、和 HarnessForge v2 的关系
CoderForge 的三个局限恰好对应 HarnessForge v2 的三个差异化方向:
| CoderForge 局限 | HarnessForge v2 应对 |
|---|---|
| 脚手架锁定 | v2 不绑定特定 scaffold——Dev 使用标准 CLI 工具,不依赖特定框架 |
| Bug fix 偏向 | v2 基于 release feature 里程碑,天然覆盖 feature 实现、重构等全谱系 |
| 缺乏交互 | v2 的 Mentor 渐进提示机制模拟真实的用户-Agent 交互 |
但也要坦率承认:
| 维度 | CoderForge 优势 | HarnessForge v2 劣势 |
|---|---|---|
| 规模 | 155K 条已验证 | Phase 1 只有几百条 |
| 验证程度 | 已证明 SFT 有效(+36pp) | 尚未验证 RL 效果 |
| 数据可用性 | 完全开源,立即可用 | 需要搭建管线 |
务实的判断:HarnessForge v2 不应该试图”替代”CoderForge,而应该”补充”它——产出 CoderForge 覆盖不了的那类数据(长程、交互式、非 bug fix)。两者结合训练可能效果最好。
八、关键 Takeaways
- 258K 轨迹 + 纯 SFT = +36pp。在 coding agent 数据领域,规模仍然是最重要的变量。
- Rejection sampling 是目前最可靠的轨迹质量过滤方法。测试通过 = 行为正确,信号清晰且自动化。
- 单一 scaffold 是一个被低估的风险。59.4% 的成绩在换 scaffold 后可能大幅下降。
- 失败轨迹被浪费了。这是 SFT 范式的固有局限,RL 是自然的下一步。
- CoderForge 的三个局限指向了下一代数据合成的方向:多 scaffold、非 bug fix 任务、交互式轨迹。
参考
- Together AI, CoderForge-Preview: SOTA Open Dataset for Training Efficient Agents, 2026.02
- HuggingFace, togethercomputer/CoderForge-Preview — 数据集主页与 README
- Knowlyr, W14 AI 数据情报 — CoderForge 行业分析
- SWE-bench, arXiv:2310.06770 — 基准测试
- SWE-smith, SWE-bench/SWE-smith-trajectories — 5K 轨迹对比;官方发布 SWE-agent-LM-32B 达 40.2% SWE-bench Verified
- R2E-Gym, R2E-Gym — 8.1K 任务环境
- DeepSWE, together.ai/blog/deepswe — RL 训练 Coding Agent
- HarnessForge v2 — 轨迹优先的三阶段方案