DockSmith: Scaling Reliable Coding Environments via an Agentic Docker Builder

StepFun · Jiaran Zhang† · Luck Ma† · Fanqi Wan · Di Qi · Xu Zhao · Jieyi Hou · Zhe Xie · Mengqiang Ren · Xin Wu · Zhewei Huang · Liangyu Chen · Qi Han* · Xiangyu Zhang* · 2026-01-31 (v1) · 2026-04-28 (v2)
arXiv:2602.00592 · PDF · HF Model (anonymous) · HF Dataset (anonymous, Apache-2.0) · GitHub 未确认
关键词: Docker env builder · execution-grounded SFT · SWE-Factory · loop-detection · cross-task memory · Qwen3-Coder-30B-A3B · Multi-Docker-Eval · SWE-bench Verified/Multilingual · Terminal-Bench 2.0

速读卡片 (TL;DR)

一句话: DockSmith 是 StepFun 出品的专吃 Docker 环境构建任务的 agentic 模型 — base 是 Qwen3-Coder-30B-A3B-Instruct(30B 总参 / 3B 激活的 MoE),训练数据是 SWE-Factory 控制流跑出来的 Docker 构建 trajectory,再加两个 augmentation:loop-detection controller(打破 agent 之间的重复循环)+ cross-task success memory(把已验证 Dockerfile/eval script pair 当 demo 跨任务复用)。在 Multi-Docker-Eval 上拿到 39.72% Fail-to-Pass + 58.28% Commit Rate,超过此前 37.7% F2P 的开源 upper bound;同时 OOD 在 SWE-bench Verified (+2.25)、SWE-bench Multilingual (+2.34)、Terminal-Bench 2.0 (+3.37) 上都有可观涨幅。论文的核心 thesis 是:把"装环境"从 preprocessing 提升到 first-class agentic 任务,会反哺 SWE/Terminal 的通用 agent 能力

39.72%
Multi-Docker-Eval Fail-to-Pass · 开源 SOTA(+20.3 pp over base)
58.28%
Multi-Docker-Eval Commit Rate · 高于 Kimi-K2-0905 (55.49%)
30B-A3B
Qwen3-Coder MoE / SFT only / 2 epoch / 32K seq
3 OOD bench
SWE.V +2.25 · SWE.M +2.34 · Terminal-Bench 2.0 +3.37

立场: 本文和 #22 TOUCAN(真 MCP server SFT)、#20 SETA(Docker terminal RLVR)、#23 EnvScaler(程序化合成 env)合起来正在把"环境是 agent 训练的核心 supervision 源"这件事推到工业流水线层面。DockSmith 的特殊位置是:它不造新 env、也不发明新 RL 算法,而是把 SWE-Factory 的 Docker-building loop 做 SFT 蒸馏出来,核心 thesis 接近 #29 EnvTuning 的"tune the environment" — 但 DockSmith 是反过来 "把环境构建本身当 agent 训练目标"。


1 · Motivation — 为什么 Docker 装环境是 SWE agent 训练的瓶颈

1.1 论文 abstract 原文(verbatim)

"Reliable Docker-based environment construction is a dominant bottleneck for scaling execution-grounded training and evaluation of software engineering agents. We introduce DockSmith, a specialized agentic Docker builder designed to address this challenge. DockSmith treats environment construction not only as a preprocessing step, but as a core agentic capability that exercises long-horizon tool use, dependency reasoning, and failure recovery, yielding supervision that transfers beyond Docker building itself. DockSmith is trained on large-scale, execution-grounded Docker-building trajectories produced by a SWE-Factory–style pipeline augmented with a loop-detection controller and a cross-task success memory. Training a 30B-A3B model on these trajectories achieves open-source state-of-the-art performance on Multi-Docker-Eval, with 39.72% Fail-to-Pass and 58.28% Commit Rate. Moreover, DockSmith improves out-of-distribution performance on SWE-bench Verified, SWE-bench Multilingual, and Terminal-Bench 2.0, demonstrating broader agentic benefits of environment construction." — arXiv:2602.00592 abstract

1.2 SWE agent 训练的"装环境瓶颈"是什么?

过去 2 年的 SWE agent 训练数据(SWE-bench / SWE-Smith / SWE-Gym / Multi-SWE-Bench / SWE-Factory)有一条共同的瓶颈:

"In practice, Docker-based environment setup is highly failure-prone... even for strong models, including Claude-4-Sonnet and Gemini-2.5-Flash: on Multi-Docker-Eval ... such models struggle to reliably pass environment setup and validation" — §1 引言

具体痛点用论文 §1 的原话:

1.3 与 SWE-Factory / SWE-bench / SETA 的关系

工作身份对装环境的处理与 DockSmith 的关系
SWE-bench (Princeton, 2023) 事实标准 SWE eval bench 预先 maintainer 手工/脚本构建 ~2,300 docker images,作为 frozen ground truth DockSmith 拿 SWE.V 当 OOD bench 之一
SWE-Factory (Guo et al., 2025; arXiv:2506.10954) SWE 训练数据自动化 factory 4-agent 多智能体迭代构建 Docker env(Context Retrieval / Dockerfile / Eval Script / Test Analysis)+ binary file recovery + exit-code based parsing DockSmith 直接继承这个 pipeline,只在上面加 loop-detection + cross-task memory
Multi-Docker-Eval (Fu et al., 2025; arXiv:2512.06915) 专为 Docker 构建任务设计的 bench 39 repo × 9 language,success 由 build-成功 + 测试可执行共同定义 DockSmith 的主战场;论文核心结果都在这里
#20 SETA (CAMEL-AI, 2026-01) Terminal agent 训练 env 400+ Docker 合成任务 + AReaL GRPO RLVR,目标是训 terminal-bench 能力 近邻路线;SETA 用 Docker 当训练 sandbox,DockSmith 训"如何造 Docker"
DockSmith 专吃 Docker 构建的 agentic 模型 SFT distillation from SWE-Factory rollouts(+ 两项 augmentation) 把 SWE-Factory 的能力"内化"到 30B-A3B 模型权重里

所以 DockSmith 的系谱位置很清晰:它是 SWE-Factory pipeline 的产物(trajectories)→ 训练成模型权重 → 反向喂回 SWE-Factory 当更强 builder 的闭环里"模型化"这一步。

1.4 论文自述的"environment construction 是 agentic capability"论证链

论文 §1 的论证逻辑值得拆开看,因为这是它和单纯"做个 SOTA"工作的区别:

  1. Premise A:装环境本身是 long-horizon reasoning + tool use + failure recovery;
  2. Premise B:这些技能正好是 SWE/Terminal agent 的核心 capability;
  3. Hypothesis:那么用 Docker-building trajectory 训练应该会 transfer 到下游 SWE/Terminal 任务;
  4. Empirical evidence:Table 8 显示 Docker:SWE 混训在 1:0.5–1:1 时,SWE.V/SWE.M/Terminal 全都涨,Terminal 涨最多 (+3.37 pp)。

这个 thesis 其实和 #29 EnvTuning(ICLR 2026)的"环境维度才是 agent 训练的真信号"互为镜像:EnvTuning 说"tune env 不 tune agent",DockSmith 说"把 env 构建当 agent 训练目标"。两者都是把 environment 当核心 supervision 源,只是切入角度相反。


2 · 方法 — DockSmith pipeline 全景

2.1 完整管线:三阶段 + 两扩展

① Data Sourcing GitHub repos (≥500★/≥200 fork) 10 langs · >15K repos merged PRs · LM 改写 desc · ~200K 实例 ② Agentic Docker-Building Pipeline (SWE-Factory + 2 ext) Context Retrieval Agent Dockerfile Agent Eval Script Agent Test Analysis Agent [ext1] Loop Detector 监控 agent 调用模式; 检测到死循环 → 强制切换 [ext2] Cross-task Memory 已验证 (Dockerfile, eval) pair 跨任务当 demo 复用 ③ Model Training (SFT on Qwen3-Coder-30B-A3B-Instruct) Trajectory Filter discard 重复 agent 调用 discard turn 过长 trajectory cross-language balancing (per-lang token 限额) Complexity Curriculum Score = 0.5·L + 5·R + 3·P (L=lines, R=RUN, P=pkg) 分 Easy/Medium/Hard 1:2:2 比例采样 Joint Training Docker traj + Nex Agent-SFT token-level mixing SWE:Docker = 1:0.5 / 1:1 最佳 mix
DockSmith 的端到端流水线。① Data Sourcing 阶段从 GitHub 拉 ~200K 实例;② SWE-Factory 4-agent loop 跑出 Docker-building rollouts,DockSmith 在此加 loop detector + cross-task memory;③ SFT 阶段用 trajectory filter + complexity curriculum + joint training 把 ~30K 高质量 trajectory 蒸馏到 Qwen3-Coder-30B-A3B-Instruct。

2.2 Phase ① Data Sourcing — 三步过滤

Repository Selection: ≥500 star, ≥200 fork,10 大语言(Python / PHP / TypeScript / Go / C++ / JavaScript / Java / Rust / C / Ruby)→ >15,000 repos
PR Crawling: 只留 merged + 有 substantive code changes + 有 test-related modifications 的 PR;关键防 contamination 步骤是 repository-level dedup against all eval benchmarks(SWE-bench / SWE-bench Multilingual / Multi-Docker-Eval / Terminal-Bench 涉及的 repo 整体踢掉)。
Quality Enhancement: 用 LM 改写过短或模糊的 PR description,保持原技术意图但补充细节。最终得到约 200,000 高质量实例

2.3 Phase ② SWE-Factory pipeline + 两扩展

2.3.1 SWE-Factory 4 个专门 agent(继承)

Agent职责
Context Retrieval Agent通过迭代工具调用 inspect 仓库,收集环境相关信号: dependency manifest / build script / CI config / test entry points。
Dockerfile Agent基于上下文与执行反馈,合成或 patch Dockerfile。
Eval Script Agent生成一个 executable 脚本,负责配置 container 工作区 + 调用目标 test 命令。
Test Analysis Agent执行 Docker build + test pipeline,把 raw log 蒸馏成结构化 failure summary 给下轮 repair 用。

2.3.2 [扩展 1] Loop-Detection Controller

论文 §2.2 原文:

"In practice, iterative multi-agent repair may devolve into a repetitive failure mode where the same subset of agents is invoked without measurable progress. We introduce a loop-detection controller that monitors recent agent-invocation traces alongside execution failure signatures. When repeated activation of an identical agent combination fails to improve outcomes for several rounds, the controller intervenes by enforcing diversification — such as activating alternative agents or strategies — to break deadlocks and reduce wasted iterations."
读后注: 这个 controller 在论文里没有给出具体阈值或算法伪码 — 只有"monitors recent agent-invocation traces" + "fails to improve outcomes for several rounds"这样的口语化描述。从 trajectory filter §2.3.1 中"discard rollouts that repeatedly invoke the same agent module"这一句反推,loop-detection 很可能就是简单的 N-gram 模式匹配(agent 调用序列 N-gram 出现 ≥k 次 + failure signature 不变 → 触发),不是学出来的判别器。

2.3.3 [扩展 2] Cross-Task Success Memory Pooling

论文 §2.2 原文:

"SWE-Factory maintains a memory pool of validated environment solutions. We augment this mechanism to support cross-task retrieval, enabling previously verified (Dockerfile, eval script) pairs to serve as lightweight demonstrations for new repositories."

注意三点细节:

2.4 Phase ③ Model Training — SFT only,no RL

Base model: Qwen3-Coder-30B-A3B-Instruct(30B 总参 / 3B 激活的 MoE,Apache-2.0)。
Optimizer: global batch 32, lr 1e-5, 2 epoch。
Max seq: 32K(Docker-only)/ 64K(混训 SWE 时,要装 long SWE-solving trajectory)。
训练方式:SFT on Docker-building trajectories — no RL, no DPO, no GRPO。论文里"acceptance shaping"和"complexity curriculum"都是数据筛选 / 采样策略,不是 RL reward。

2.4.1 Cross-Language Balancing

原文观察: 长尾语言(Rust / PHP)indiscriminate upsampling 会引起 distribution shift 反而劣化。因此采用保守平衡:保留主流语言(Python / C/C++)的核心分布,长尾在 per-language token 限额下 controlled 加入。

2.4.2 Trajectory Filtering(Acceptance Shaping)

把以下三类轨迹删掉:

2.4.3 Complexity-Based Curriculum Sampling

这是论文里唯一的公式(eq. 1):

Score(d) = 0.5 · L(d) + 5 · R(d) + 3 · P(d)

论文解释为什么 R/P 权重大:"additional build steps and dependencies typically introduce more failure modes and longer error chains than Dockerfile length alone"。然后按这个 Score 分 Easy/Medium/Hard,用 1:2:2 比例采样 — 故意让训练接触更多硬实例。

2.4.4 Joint Training with Coding Trajectories

这是论文 §2.3.2 提的关键 trick: 在 Docker traj 旁边混入 Nex Agent-SFT 数据集(Cai et al., 2025 - arXiv:2512.04987)的 general SWE/coding 轨迹。混合方式是 token-level mixing — SWE token 预算固定,Docker token 预算可变。结果(§3.3 + Table 8)显示:

SWE:Docker ratioSWE.V (49.65 base)SWE.M (31.83 base)Terminal (10.67 base)
Only SWE49.6531.8310.67
1 : 0.12550.70 (+1.05)34.17 (+2.34)10.67 (+0.00)
1 : 0.2550.80 (+1.15)32.83 (+1.00)11.80 (+1.12)
1 : 0.551.75 (+2.10)33.33 (+1.50)14.04 (+3.37)
1 : 151.90 (+2.25)33.92 (+2.09)11.38 (+0.70)
1 : 249.55 (−0.10)31.75 (−0.08)11.52 (+0.84)

关键 read:

2.5 Trajectory Filtering 消融(论文 Table 4)

这是控制训练预算严格相等下的消融,所有 variant 用相同 token 数 + 相同 epoch:

VariantEasy F2PHard F2PAvg F2P
Baseline(随机采样的 resolved trajectory)45.2728.9632.24
+ Acceptance Shaping (AS)46.7730.8334.03 (+1.79)
+ Complexity Curriculum (CC)45.2730.0933.13 (+0.89)
+ AS + CC47.2631.8434.93 (+2.69)

两者作用是互补:AS 提高单条 trajectory 质量(去冗余),CC 提高训练分布覆盖(平衡难度)。Hard bucket 在 CC 上涨幅最大(+1.13)印证 CC 的目标 — 让模型多见硬实例。


3 · Multi-Docker-Eval — 这是什么 benchmark

3.1 出处与规模

Multi-Docker-Eval (MDE): Fu et al., 2025, arXiv:2512.06915(论文里引用为 "Multi-Docker-Eval: A 'shovel of the gold rush' benchmark on automatic environment building for software engineering")。

关键参数(摘自 DockSmith §4 + MDE 引文上下文):

这点必须强调: Multi-Docker-Eval 是 独立第三方 benchmark,不是 DockSmith 论文里自创的 — 这避免了"自评 bench 自己 SOTA"的循环论证嫌疑。但反过来,MDE 本身是 2025-12 才出的,SWE-Factory pipeline 也是 MDE 作者的相关工作(Fu et al. 与 Guo et al. 都涉及 SWE 训练 infra 圈),所以 评测协议层面的 alignment 客观上对 DockSmith 比较友好。

3.2 两个核心指标

Fail-to-Pass (F2P):the proportion of tasks where the configured environment successfully transitions tests from a failing to a passing state
这个指标和 SWE-bench 的 FAIL_TO_PASS 概念同源 — 任务 ground-truth 包含一组"基线就 fail / fix 后该 pass"的测试,模型构造的环境必须让它们全部 transit。
Commit Rate:the fraction of instances where the agent submits a solution for evaluation, reflecting model confidence rather than ground-truth correctness
这是提交率 — 模型"自己认为做完了"的比例,衡量 agent 的放弃倾向。F2P ≤ Commit Rate 永远成立。Commit Rate 高且 F2P 低意味着过度自信;反之意味着太保守

3.3 还有几个 process metric

论文 Table 1 同时报告 3 个 process metric 用来评估效率 + 资源开销:

这三项的意义是检验 DockSmith 是否"用更多算力换性能" — 数据看 DockSmith 输入 token 比基线 Qwen3-Coder-30B-A3B (150.10) 多约 38%,但 output token 反而少一半(26.38 vs 13.75 ❌等等基线是 13.75,DockSmith 高一倍),Docker 次数 1.13 也只略多。整体是可接受的 effectiveness-efficiency 平衡


4 · 实验结果

4.1 主表:Multi-Docker-Eval 全模型横评(Table 1)

ModelF2P (%)Commit (%)Avg inAvg outAvg docker
Open-source
DeepSeek-v3.137.7252.89158.1117.151.02
DeepSeek-R126.6541.72138.0560.101.02
GPT-OSS-20B17.1729.44184.2358.370.87
GPT-OSS-120B27.0037.72128.3130.170.83
Kimi-K2-090537.6255.49113.027.921.01
Kimi-K2-thinking36.5352.69162.1259.401.05
Qwen3-235B-A22B23.6534.53101.4638.871.00
Closed-source
Claude-Sonnet-435.5347.41182.8515.011.17
GPT-5-Mini34.1349.60339.94103.320.95
Gemini-2.5-Flash29.4440.62153.4332.600.97
Our Method (base = Qwen3-Coder-30B-A3B-Instruct)
Qwen3-Coder-30B-A3B-Instruct(base)19.4634.13150.1013.750.93
DockSmith39.7258.28207.6826.381.13

关键观察:

4.2 语言级 F2P 拆解(Table 2)

ModelPythonJSJavaC++CGoRubyRustPHP
DeepSeek-v3.147.8645.8314.2918.8933.3357.5051.6720.8342.22
Kimi-K2-090547.0149.1712.3812.2234.1761.6751.6722.5036.67
Claude-Sonnet-441.8848.338.5718.8932.5066.6743.3318.3330.00
GPT-5-Mini43.5949.1714.2915.5629.1748.3349.1716.6734.44
Qwen3-Coder-30B(base)23.9311.676.676.6720.0035.0031.6725.006.67
DockSmith51.2851.6719.0515.5620.0063.3357.5030.0041.11

DockSmith Python / JS / Java / Go / Ruby / Rust 全部第一;但C 反而退步(base 20.00 → DockSmith 20.00,无改善),C++ 只 +8.89 pp 涨幅有限。论文自我解释 — "low-level systems languages (C/C++, Java, Rust) remain bottlenecked by compiler toolchains and system dependencies";即编译工具链依赖丰富的语言是 Docker 构建难点,SFT 数据稀缺,模型学不到细粒度修复模式。

4.3 OOD transfer:三大 SWE/Terminal benchmark

这是 DockSmith 论文 thesis 的核心 OOD 证据 — 把 Docker traj 当 supervision 信号,看是否 transfer 到下游 agentic tasks。论文 §3.3 + Table 8 给出绝对分:

Mix ratioSWE-bench VerifiedSWE-bench MultilingualTerminal-Bench 2.0
Only SWE (baseline)49.6531.8310.67
SWE : Docker = 1:0.12550.7034.1710.67
SWE : Docker = 1:0.2550.8032.8311.80
SWE : Docker = 1:0.551.7533.3314.04
SWE : Docker = 1:151.9033.9211.38
SWE : Docker = 1:249.5531.7511.52

读 OOD 结果:

关于 Terminal-Bench 2.0 的横向对比(交叉链接 #20 SETA):TB2.0 当前榜首是 Claude Sonnet 4.5 + CAMEL agent 框架的 46.5%(SETA 团队);DockSmith 在 TB2.0 上的 14.04%裸 model 跑(无 agent framework + 用 Qwen3-Coder-30B-A3B + 自动 evaluation)。两者不可直接比 — agent framework 加成是 TB2.0 上的 ~30 pp 量级差距。

4.4 Docker-only vs Mixed-training 对照(Table 3)

论文 §3.3 还做了反向消融 — 加 SWE 数据对 Docker 任务有没有帮助:

Training DataSWE.VSWE.MTerminalMDE F2P
Docker only33.5018.257.1634.43
Docker + 0.5×SWE47.4531.0010.1135.63

结论:加 SWE 数据 所有 4 个 bench 都涨,包括 MDE 本身(+1.20 pp)。这说明 纯 Docker 训练会过拟合到 Docker-specific 行为,SWE 数据提供的 general edit-run-debug pattern 是必需的。这是和很多"专家模型"工作不同的有意思之处 — DockSmith 不是越专越好,而是专家 + 通用混合最强

4.5 错误分析(Table 5 + Figure 3)

MetricBaselineDockSmithΔ
Total Errors3,7572,161−42.5%
Avg Errors / Trajectory11.816.67−43.5%
Critical Errors2,4541,468−40.2%
Minor Errors1,303693−46.8%
By Pipeline Stage
Dockerfile Generation1,434765−46.7%
Eval Script Handling936536−42.7%
Test Analysis1,102544−50.6%
Context Retrieval285316+10.9%

关注两个细节:

Figure 3 进一步把错误细分到 type level,DockSmith 最大改善:

4.6 错误传播分析(Figure 4 + Table 6/7) — 为什么 transfer 有效

论文 §3.5.2 用一个 4 层 error taxonomy(shell / env / runtime / logic)做跨任务的错误传播矩阵。每个 entry (i, j) = 当前层 i 出错后,下一步在 j 层再出错的概率。结论:

读后: 这一节其实是论文最有信号量的部分 — DockSmith 的真正"transfer mechanism"不是"会写 Dockerfile",而是"装环境的过程教会模型 don't panic + 在错误层级里坚持修复"。这是和 RL agent 训练中 reward shaping 的隐性同构 — long-horizon perseverance 才是 transfer 的实际信号载体。

5 · 与本系列既有工作的连接

DockSmith 在本仓库的 31 篇 agent 笔记里处于"环境是核心 supervision 源"这条主线上。下面用一张图把它的位置标清楚:

"环境 × Agent 训练"四象限 (Real ↔ Synthetic) × (Tool ↔ System env) ← Real env Synthetic env → ↑ Tool / API ↓ System / OS Real env · Tool/API #22 TOUCAN — 495 真 MCP server / 1.5M SFT #25 MCP-Universe — 11 server eval framework #19 MCP-Atlas — 36 server / 220 tool #28 BFCL — function call 事实标准 #03 Agent-World — 1,978 real env 特征:tool schema 来自真协议,response 真执行 Synthetic env · Tool/API #18 AWM (Snowflake) — code-driven 35K tool #23 EnvScaler — Python class = env / 191 env #13 RLAnything — env+policy+reward 联合 #29 EnvTuning — tune env 不 tune agent #06 AgentGym-RL — ScalingInter-RL 课程 特征:env 用代码模拟,可受控、可重置 Real env · System/OS #20 SETA — 400 Docker terminal task / RLVR #14 ClawGUI — MobileWorld Docker GUI #17 UI-TARS-2 — 230B MoE GUI agent #31 Prime Intellect Hub — Docker sandboxes SWE-bench / TB2.0 / SWE-Smith — 真 repo 特征:真 OS / Docker / 容器副作用真发生 本文所在象限 #32 DockSmith SWE-Factory pipeline 跑真 Docker 但用 trajectory 当 SFT 数据 → 环境构建本身是任务 特殊:Real System env 的 trajectory 蒸馏到 SFT,30B-A3B 内化 填补 "环境构建 = first-class 任务" 空白
DockSmith 在本仓库 31 篇 agent 笔记构成的四象限里,位于"Real System env"的 trajectory SFT 蒸馏角落 — 这个角落此前是空白,SETA(#20)做的是 terminal agent 训练,而 DockSmith 做的是 Docker builder 训练,任务方向相反但都在 OS-system 真环境维度。

5.1 横向对比表

论文环境类型训练方式base / 规模评测开源
#22 TOUCAN 495 真 MCP server SFT (multi-teacher distill) Qwen2.5-32B, 1.5M traj BFCL V3 / τ² 全开源
#23 EnvScaler 程序化合成 Python class SFT + Reinforce++ Qwen3-Thinking 8B BFCL-MT MIT 全开源
#18 AWM code-driven 全合成 GRPO Qwen3 4/8/14B BFCL V3 全开源
#20 SETA 400 Docker 合成终端任务 AReaL GRPO RLVR Qwen3-8B Terminal-Bench 2.0 Apache-2.0
#14 ClawGUI MobileWorld Docker GUI RL MobileWorld 17.1%
#25 MCP-Universe 11 真 MCP server GRPO + verl (有 RL 训练栈) self-bench Apache-2.0
#29 EnvTuning BFCL V3 环境增强 GRPO + 4-stage curriculum Qwen2.5-7B / Llama-3.1-8B BFCL V3 / V4 MIT
#31 Prime Intellect Hub 1,000+ env hub verifiers SDK + prime-rl Qwen3-0.6B 起 multiple MIT + Apache
#32 DockSmith SWE-Factory + 真 Docker SFT only(无 RL) Qwen3-Coder-30B-A3B Multi-Docker-Eval / SWE.V / SWE.M / TB2.0 匿名 HF release

5.2 与 #29 EnvTuning 的有意思镜像

DockSmith 和 #29 EnvTuning(ICLR 2026)代表"环境视角"的两个对偶切片:

5.3 和 #20 SETA / Terminal-Bench 2.0 的细节

DockSmith 把 TB2.0 当 OOD bench 之一(#20 SETA 把 TB2.0 当主战场)。两者具体数字:


6 · 开源现状 — 实地清点

6.1 论文自报的 release statement

论文 abstract 末尾说:

"Our model and Docker-building trajectories are publicly available at here." (原文 §abstract 最后一句)

注意 "at here" — 这是 LaTeX 模板里 \href{here}{here} 占位符没填,即论文里的 link 是空的。这是匿名审稿/早期 preprint 的常见痕迹。

6.2 实地搜索结果

资源状态详情
GitHub stepfun/DockSmith 未确认 API 搜 stepfun + DockSmith 关键词 0 结果;StepFun 官方 GitHub 没有 DockSmith repo(截至 2026-05-18)
HF org stepfun-ai/DockSmith 未确认 stepfun-ai org 下没有 DockSmith 模型;org 已发 Step-3.5-Flash / Step-Audio / NextStep-1 系列,但 DockSmith 不在
HF model 8sj7df9k8m5x8/DockSmith 已找到 匿名账号上传 · 2026-01-27 · qwen3_moe safetensors · 标签缺失 · 下载数仅 1 · 推测是论文匿名审稿配套 release;
huggingface.co/8sj7df9k8m5x8/DockSmith
HF dataset 8sj7df9k8m5x8/docker_building_training 已找到 同一匿名账号 · 2026-03-31 · Apache-2.0 · 39,719 samples / 2,876 unique instances · 9 个 JSON shard + 9 个 index · 下载数 64;
huggingface.co/datasets/8sj7df9k8m5x8/docker_building_training
Reproducibility code 未确认 未找到训练脚本 / pipeline 实现 / loop-detection 算法 / cross-task memory 检索代码

6.3 匿名 HF 账号 8sj7df9k8m5x8 是什么

这个账号名是典型的随机字符串 — 看起来是 arXiv preprint 配套的匿名审稿账号。账号下只有这一个 model + 一个 dataset,创建时间(2026-01-27)和 v1 提交时间(2026-01-31)只差 4 天,且都直接以 "DockSmith" / "docker_building_training" 命名,极不可能是无关第三方。

读者警告:这意味着正式开源 repo 未公开。HF 上的匿名 release 通常会在 conference accept 之后由 StepFun 团队迁移到正式 org(参照 INTELLECT-3 / Kimi-K2 等先例)。当前下载的 model + dataset 应视为 preview release,缺少:
  • 训练代码(SFT 配置 / hyperparameter / curriculum 实现);
  • SWE-Factory pipeline 的 DockSmith 分支(loop-detection + cross-task memory 实现);
  • 评测脚本(Multi-Docker-Eval 调用 + SWE-bench 接入);
  • 数据 license 的明确归属(虽然 dataset 标 Apache-2.0,但底层 GitHub repo 的 license — repo 内代码 / Dockerfile / commit message — 没有 derivative work 的明确说明)。

6.4 数据集内部结构(根据 HF README)

Total samples: 39,719
Unique instances: 2,876(即一个 repo issue 对应 ~14 个 trajectory)
Files: 1.json … 9.json(sample shard,每个 sample 是一个 chat messages list)+ 1.index.json … 9.index.json(每 shard 的 index,字段 sample_id / instance_id / agent_type / source_file / num_assistants)
License: apache-2.0
Language: en

agent_type 这个字段可以看出,数据集已经按 SWE-Factory 4 个 agent 拆分 — 即每个 sample 是单个 agent 的多轮交互而不是整条 trajectory。2,876 instance × 4 agent ≈ 11,500,论文里说 30K instance + 4 agent 应得到 ~120K trajectory — 所以 HF 上 39,719 个 sample 应该只是过滤后 SFT subset 的一部分,而非全部训练数据。这是另一个 release 不完整的信号。

6.5 复现可行性 checklist

组件是否可复现缺什么
Base modelQwen3-Coder-30B-A3B-Instruct(Apache-2.0,HF 上可直接下)
SFT 数据部分HF dataset 是 subset / 缺训练全量(论文 200K → 30K filtered → ? )
SWE-Factory pipeline部分SWE-Factory 原版可在 arXiv:2506.10954 找到,DockSmith 的两扩展未公开实现
训练脚本SFT 配置 / curriculum 采样代码 / joint training mix 实现
评测 Multi-Docker-Eval第三方需要等 MDE 作者(Fu et al. arXiv:2512.06915)release
Eval SWE-bench VerifiedSWE-bench 官方 Apache-2.0
Eval Terminal-Bench 2.0arXiv:2601.11868 / harness 公开
Eval SWE-bench MultilingualarXiv:2504.02605

结论: 当前状态下 "完整复现"是不可能的,但"用 Qwen3-Coder-30B-A3B + HF 上的 39K SFT subset 跑 SFT 再用现成 MDE/SWE-bench 评测"这个 lite-reproduce 路径是可行的。预期能达到 论文 39.72 F2P 的 70-80%(因为 SFT subset 不完整)。


7 · 局限 / 个人 take

7.1 论文的真实贡献是什么?

剥掉宣传性表述,DockSmith 实际贡献是 3 件:

  1. 把 SWE-Factory pipeline 的输出当 SFT 数据,蒸馏到 30B-A3B 模型权重里 — 这本质是 distillation;
  2. 两个 pipeline-level augmentation(loop-detection + cross-task memory)— 都是 engineering 优化,不是新算法;
  3. 实验上证明装环境训练 transfer 到 SWE/Terminal — 这是论文 thesis 的原创性所在,但属于工程发现,不是新方法。

所以 DockSmith 的论文价值是系统性 + 实证性,不是算法性。它把过去散落的 intuition(装环境很重要,但又只是 preprocessing)系统化、量化、跑出来给大家看。

7.2 真正的 limitation

7.2.1 Multi-Docker-Eval 的 self-eval bias 隐患

MDE(Fu et al., arXiv:2512.06915,2025-12)和 SWE-Factory(Guo et al., arXiv:2506.10954,2025-06)虽然不是 StepFun 自家工作,但都在 SWE 训练 infra 这个小圈子里。DockSmith 直接复用 SWE-Factory pipeline 跑 MDE bench — 评测协议 alignment 自然非常完美。这不是狭义的 "self-eval bias",但确实使对比基线的劣势被放大(其他模型如 DeepSeek-v3.1 / Claude-Sonnet-4 都是 zero-shot 跑 SWE-Factory framework,而 DockSmith 是专门为这个 framework 训练的)。

更公允的对比方式应该是:把 DockSmith 接到一个不同的 Docker-building scaffold(比如 ExecutionAgent / Repo2Run / SetupAgent)上看是否还保持 SOTA。论文没做这个实验。

7.2.2 30B-A3B 的"开源"主张需要打折

论文反复强调 "open-source state-of-the-art",但实际:

结论:DockSmith 的 "open-source" 主张当前只能算"artifact-partial" — model weight + 部分 SFT subset 可下载,但不是 reproducibility-grade open-source(对比 TOUCAN #22 的 Apache 数据 + MIT 代码 + 27 个 HF ckpt 全栈商用 friendly)。

7.2.3 Cross-task success memory — 启发式还是学到的?

论文 §2.2 只说 "previously verified (Dockerfile, eval script) pairs to serve as lightweight demonstrations",没给 retrieval 算法、没给 ablation(memory on/off 对最终结果影响多少)。这是一个明显的消融缺口:

个人推测:cross-task memory 极有可能是简单的 metadata lookup(按主语言 + 主框架 match),不是学出来的检索器。如果是 learned retrieval,论文一定会单独 ablation 出来 sell。

7.2.4 OOD claim 的污染风险

论文 §2.1 说做了 "repository-level deduplication against all evaluation benchmarks" 防 contamination — 但这只能保证 repo 没重叠但 SWE-Factory 的 pipeline 数据本身就是从 GitHub merged PR 拉的,而 SWE-bench / SWE-bench Multilingual / Terminal-Bench 2.0 的任务也是从 GitHub 公开仓库制定的 — 即两者数据生成过程在源数据维度有结构性同构。这种"软污染"在编程领域是普遍存在的,DockSmith 没有比同类工作做得更糟,但 +2.25/+2.09/+3.37 这种小数量级涨幅的 OOD claim 应该带着这层警觉来读:可能有一部分涨幅是源数据相关性贡献的,而不是单纯"装环境训练 transfer"。

7.2.5 SWE.V / SWE.M / TB2.0 绝对分数都不高

DockSmith 的 OOD 涨幅是百分点级而非数量级:

即论文 OOD 部分的"transfer 信号是真实的"这个 claim 成立,但"DockSmith 是个强 SWE/Terminal agent"这个隐含 claim不成立。两者要分清。论文 §5 conclusion 措辞已较谨慎("improves out-of-distribution performance"而非"achieves SOTA"),但 abstract 的措辞容易被误读。

7.2.6 没有 RL,SFT 上限到顶了吗?

整个 DockSmith 训练管线是 纯 SFT。考虑到:

论文没有探索 RL — 这是一个未完成的实验维度。猜测原因有二:(1) Docker-building rollout 太长(单个 trajectory 可达 50 steps),GRPO 在长 horizon 上 sample efficiency 差;(2) StepFun 当前可能更看重蒸馏出快速可部署的 SFT 模型,RL 留作后续。但RL × Docker-building 是显然的下一步,谁先做完会拿到更大 jump。

7.2.7 C 语言 / C++ / Java 编译工具链的 systematic 失败

从 Table 2 看,DockSmith 在 C 语言上 base 已经是 20.00,DockSmith 还是 20.00(无改善),C++ 6.67 → 15.56(+8.89 pp,但绝对值还是很低),Java 6.67 → 19.05(+12.38 pp,但与 Python 的 51.28 相比还是低)。这是 Docker-building 的结构性难点: 编译工具链(gcc 版本 / glibc ABI / cmake 设置 / Maven cache / Gradle wrapper)的失败模式高度长尾,SFT 数据稀缺、修复路径多分支。这暗示Docker 训练的"语言不均衡"是固有的,加更多 C/C++ 数据未必 scale。

7.3 个人 take

DockSmith 是个干净的"工程化 + 实证化"工作 — 不发明新算法,但把 SWE-Factory 流水线的产出工业化、SFT 化、benchmark 化。它的核心价值不在 model weight,而在 thesis 验证:装环境 trajectory 训练 transfer 到 SWE/Terminal,且 transfer 信号通过 within-layer persistence 落实(Figure 4 + Table 6/7)。

对本仓库读者最有用的 takeaway:
  • 如果你在做 SWE/Terminal agent 训练,Docker-building trajectory 是被严重 under-utilized 的 SFT signal(论文 Table 8 显示 1:0.5 mix 在 TB2.0 上拿 +3.37 pp);
  • 装环境的 "within-layer persistence" 才是 transfer 的真信号载体 — 不是 Dockerfile 写得多,而是教会模型"错了不要乱跳,在同一层继续修";
  • 对照 #20 SETA + #29 EnvTuning + DockSmith,可以预见下一代 SWE agent 训练栈会是: SWE-Factory(Docker-building SFT 冷启)+ SETA(terminal Docker RLVR)+ EnvTuning(env feedback shaping)+ general SWE traj(joint mix at 1:1)。

7.4 待验证问题清单

  1. Loop-detection controller 的具体算法(N-gram 阈值? 学习的判别器?)— 论文未给;
  2. Cross-task memory 的 retrieval 算法(BM25 / embedding / metadata match?)— 论文未给;
  3. Loop-detection on/off 的 ablation — 论文未给;
  4. Cross-task memory on/off 的 ablation — 论文未给;
  5. 正式开源 repo / 权重的 timeline — StepFun 是否会在 ICML / NeurIPS 2026 cycle 内做迁移;
  6. Cai et al. (2025) "Nex-N1: Agentic models trained via a unified ecosystem for large-scale environment construction" arXiv:2512.04987 — 这是 SFT joint-training 用的 Nex Agent-SFT 数据集来源,是 StepFun 自家相关工作?需要交叉读;
  7. DockSmith 是否能反过来 boost SWE-Factory 本身的数据生成 yield — 闭环验证;
  8. 对 C/C++/Java 等长尾语言的极限提升路径是什么 — 加 toolchain-specific 训练 data? RL?。

引用建议: 如果你在做 SWE / agent 训练相关工作,DockSmith 的 § 3.5.2 错误传播分析(Figure 4 + Table 6 + Table 7)值得单独引用 — 它是目前为止少见的把"agent transfer 的真实信号"拆到 within-layer persistence 颗粒度上的实证 study

笔记完成 · 2026-05-18 · 笔记 #32 · 返回 README