论文精读 已修订

CoderForge-Preview 精读:258K 轨迹如何把 Qwen3 从 23% 推到 59.4%

Together AI 的 CoderForge-Preview 是目前最大的开源编码 Agent 轨迹数据集。精读其数据管线、训练方法、关键设计决策,并分析其三个自承认的局限如何指向下一代数据合成的方向。

CoderForge Coding Agent SWE-bench 轨迹数据 SFT 数据合成 Rejection Sampling

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-Smith148,00157%通过 bug 注入自动生成的任务。规模最大,但任务类型单一(bug fix)
SWE-Rebench77,16930%SWE-bench 的扩展版,基于真实 PR。跨语言支持更好
R2E-Gym32,96413%基于 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/fail
  • finish_reason: string —— 记录终止原因(成功/超时/错误等)

推测 reward 综合了测试通过率、轨迹长度、工具使用效率等因素。

3.3 Tokenized 版本

提供了 Qwen Coder tokenizer 预处理好的版本(303GB),包含 input_ids 和 labels,可以直接用于训练。这降低了复现门槛。


四、核心结果分析

4.1 主结果

模型训练数据SWE-bench Verified
Qwen3-32B(基线)无23.0%
+ CoderForge SFT155K 轨迹59.4%
提升+36.4pp

这个提升幅度是惊人的——纯 SFT 就把一个 32B 模型的 coding agent 能力提升了 36 个百分点。

4.2 对比同期方案

方案训练方法数据规模SWE-bench Verified
CoderForgeSFT155K 轨迹59.4%
SWE-smith (SWE-agent-LM-32B)SFT5K 轨迹~40.2%
DeepSWERL (GRPO)从 SFT 起步~40%
R2E-GymSFT + RL8.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

  1. 258K 轨迹 + 纯 SFT = +36pp。在 coding agent 数据领域,规模仍然是最重要的变量。
  2. Rejection sampling 是目前最可靠的轨迹质量过滤方法。测试通过 = 行为正确,信号清晰且自动化。
  3. 单一 scaffold 是一个被低估的风险。59.4% 的成绩在换 scaffold 后可能大幅下降。
  4. 失败轨迹被浪费了。这是 SFT 范式的固有局限,RL 是自然的下一步。
  5. CoderForge 的三个局限指向了下一代数据合成的方向:多 scaffold、非 bug fix 任务、交互式轨迹。

参考

  1. Together AI, CoderForge-Preview: SOTA Open Dataset for Training Efficient Agents, 2026.02
  2. HuggingFace, togethercomputer/CoderForge-Preview — 数据集主页与 README
  3. Knowlyr, W14 AI 数据情报 — CoderForge 行业分析
  4. SWE-bench, arXiv:2310.06770 — 基准测试
  5. SWE-smith, SWE-bench/SWE-smith-trajectories — 5K 轨迹对比;官方发布 SWE-agent-LM-32B 达 40.2% SWE-bench Verified
  6. R2E-Gym, R2E-Gym — 8.1K 任务环境
  7. DeepSWE, together.ai/blog/deepswe — RL 训练 Coding Agent
  8. HarnessForge v2 — 轨迹优先的三阶段方案