Qwen3-Coder-Next:80B参数只激活3B,如何用“小代价“训出最强编程智能体
阿里Qwen团队发布Qwen3-Coder-Next编程智能体模型,采用80B参数稀疏MoE架构(每次仅激活3B),通过创新数据合成方法(80万条可验证多语言编程任务)和多阶段专家蒸馏训练,在SWE-Bench等智能体编程基准上达到70.6%准确率,媲美闭源顶级模型。该研究解决了编程智能体训练的两大核心挑战:1)大规模合成可验证的仓库级编程任务;2)高效训练策略实现小激活参数下的高性能,为开源编程
Qwen3-Coder-Next:80B参数只激活3B,如何用"小代价"训出最强编程智能体
论文标题:Qwen3-Coder-Next Technical Report
作者:Qwen Team
机构:Alibaba Group
日期:2026-03
链接:https://arxiv.org/abs/2603.00729
一句话总结
阿里Qwen团队发布了Qwen3-Coder-Next——一个总参数80B、每次推理仅激活3B的稀疏MoE编程智能体模型。通过大规模合成可验证编程任务(约80万条,覆盖9种语言)、多阶段专家蒸馏训练流程、以及一系列反奖励黑客的工程手段,在SWE-Bench Verified上达到70.6%(pass@1)和71.3%(majority@3),登顶开源编程智能体排行榜。
为什么需要这篇论文?
编程智能体的"规模化训练"困境
过去两年,AI编程经历了从"代码补全"到"智能体式开发"的范式转移。Claude Code、Cursor、Devin等产品已经证明了一件事:未来的AI编程不是"写一个函数",而是"理解一个仓库、定位一个bug、规划修改方案、执行多步操作"。
这种智能体式的编程对模型提出了全新的挑战。传统的代码基准(HumanEval、MBPP)测的是"给你一个函数签名,把函数体补完"——这在2024年就已经被各家模型刷到了90%+,基本失去了区分度。真正有意义的基准是SWE-Bench:给你一个真实的GitHub仓库和一个issue,你需要理解代码库结构、定位问题文件、生成正确的patch。
问题在于:训练这样的模型需要什么样的数据? HumanEval/MBPP的训练数据好造——算法题有标准答案,写个测试用例就行。但SWE-Bench级别的任务呢?每个任务都涉及一个完整的代码仓库,有复杂的依赖和执行环境,验证一个solution需要跑整个测试套件。这种数据不可能靠人工标注来获取。
Qwen3-Coder-Next这篇论文要解决的核心问题就是:如何大规模合成高质量的、可执行验证的编程智能体训练数据,并设计一套有效的训练流程把这些数据转化为模型能力。

图1:Qwen3-Coder-Next与Claude Sonnet 4、Gemini 2.5 Pro、GPT-4.1在7个编程基准上的对比。蓝色是Qwen3-Coder-Next,在SWE-Bench Verified、Terminal-Bench、MLE-Bench等智能体型基准上表现突出,与闭源顶级模型打得有来有回。
这张雷达图传递了一个清晰的信号:在编程智能体这个赛道上,开源模型第一次真正摸到了闭源最强模型的天花板。尤其是在SWE-Bench Verified(70.6%)和Terminal-Bench(67.5%)上的成绩,已经可以和Claude Sonnet 4正面硬刚。考虑到Qwen3-Coder-Next只是80B总参数、3B激活参数的"小"模型——对比Claude和GPT系列动辄数百B激活参数的巨无霸——这个效率优势是非常显著的。
模型架构:512个专家里只选3个
为什么选MoE?
Qwen3-Coder-Next基于Qwen3-Next基座模型构建。Qwen3-Next采用了Hybrid Attention + Sparse MoE架构:总参数80B,包含512个专家(experts),每次前向传播只激活3个专家,实际激活参数仅约3B。
为什么用MoE而不是Dense模型?原因很直接:编程智能体的推理开销极大。一个SWE-Bench任务可能需要模型生成上千个token的思考过程(读取文件、分析代码、规划修改、生成patch),如果用80B Dense模型来跑,每个token的计算量都要过80B参数,推理成本会高到无法实际部署。MoE让你在保持80B的"知识容量"的同时,只付出3B的推理成本——这是一个约27倍的效率提升。
这里要多说一句关于512个专家的选择。当前主流MoE模型的专家数量差异很大:DeepSeek-V3用了257个(选8个),GLM-5用192个(选8个),Qwen3-Coder-Next则用了512个但只选3个。选更多专家+更少激活是一种更极端的稀疏策略,它的好处是每个专家可以更"专精",坏处是路由决策更难做好。从结果来看,Qwen团队显然认为在编程领域,让每个专家高度专业化是值得的。
Hybrid Attention的设计
Qwen3-Next的另一个架构特点是Hybrid Attention机制。论文没有展开太多细节,但结合Qwen3系列的技术演进来看,这里的"Hybrid"指的是在不同层使用不同的注意力模式——部分层用完整的Self-Attention处理全局依赖,部分层用更高效的变体(比如滑动窗口注意力或线性注意力)处理局部模式。这种混合策略在长上下文场景下可以显著降低计算开销,同时保持对关键信息的捕获能力。
数据引擎:80万条合成编程任务的制造工厂
这是整篇论文技术含量最高的部分。训练编程智能体的核心难题不是模型架构,而是数据——你需要大量的"仓库级"编程任务,每个任务都有完整的执行环境和自动化验证手段。Qwen团队设计了两条并行的数据合成流水线,最终产出约80万条覆盖9种编程语言的可验证训练实例。
流水线一:基于GitHub PR的真实任务挖掘

图2:两条任务合成流水线的整体架构。左侧是基于GitHub Pull Request的真实任务挖掘,右侧是基于合成Issue注入的任务生成。
第一条流水线的思路是:从GitHub的Pull Request历史中反向构建任务。具体流程如下:
- 仓库筛选:从GitHub上筛选高质量代码仓库,要求有清晰的测试套件和CI/CD配置
- PR分析:解析每个PR的diff,识别出哪些是"修复bug"或"实现feature"的有意义改动
- 环境构建:为每个PR创建一个可复现的执行环境(Docker容器),回退到PR提交前的代码状态
- 任务构造:用PR的描述作为任务输入,用PR的diff作为ground truth,用仓库的测试套件作为验证工具
这个思路并不新鲜——SWE-Bench本身就是这么构建的,之前的SWE-Smith也用了类似的方法。但Qwen团队在规模和覆盖度上做了大幅提升:他们不仅仅局限于Python仓库,而是扩展到了9种编程语言(Python、JavaScript/TypeScript、Java、C/C++、Go、Rust等),最终从这条流水线获取了大量多语言的真实编程任务。
流水线二:合成Issue注入——造出"从未存在过"的bug
第二条流水线更有创意:不是从已有PR中挖掘任务,而是主动向代码仓库注入问题,然后让模型来修复。
具体操作:
- 选择一个健康的代码仓库(测试全部通过的状态)
- 用LLM分析代码结构,识别出可以合理修改的位置
- 让LLM在选定位置注入一个"合成bug"或"新需求"——比如故意修改一个函数的逻辑让它在边界条件下出错,或者添加一个新API但故意留下未实现的部分
- 验证注入的改动确实会导致测试失败(否则这不是一个有意义的任务)
- 生成对应的Issue描述,作为任务输入
这种方法的精妙之处在于:你不受限于已有的PR历史。一个仓库可能只有100个PR,但你可以在同一个仓库上注入上千个不同类型的合成问题。这极大地扩展了数据的多样性和规模。
两条流水线合计产出约80万条训练实例。论文特别强调了一个关键要求:所有实例都必须通过自动化测试验证。这意味着每个任务都有一个确定性的对错判断——模型生成的patch要么能让测试通过,要么不能。这种"可验证性"是后续进行强化学习训练的基础。

图3:随着合成训练数据量增加,模型在SWE-Bench Verified上的性能变化。横轴是数据量(对数坐标),纵轴是解决率。曲线呈现清晰的对数增长趋势——数据越多性能越好,但边际收益递减。
这张图揭示了一个重要的规律:编程智能体的数据scaling law是对数关系。从几千条数据扩展到几万条时性能提升最快,之后逐渐放缓。但即便在80万条的规模上,曲线仍未完全饱和——这暗示着继续扩大数据规模仍有收益空间。
中期训练(Midtraining):打好地基
在正式进入智能体训练之前,Qwen团队先对基座模型做了一轮"中期训练"(Midtraining),主要目的是两个:
上下文窗口扩展
将模型的上下文窗口从预训练时的默认长度扩展到262,144 tokens(约26万token)。编程智能体需要处理的上下文极长——一个中等规模的代码仓库,光是关键文件的内容加起来就可能有数万token,再加上模型的思考过程和工具调用记录,26万token的窗口是刚需。
网页文档重格式化
Midtraining的另一个重要操作是将网页爬取的训练文档重新格式化为Markdown。这个看似简单的预处理步骤其实对编程智能体很关键——Markdown是代码文档的通用格式,让模型在预训练阶段就大量接触结构化的Markdown文本,有助于它在后续生成代码注释、PR描述、commit message时保持格式规范。
Fill-in-the-Middle(FIM)目标
Midtraining还引入了FIM训练目标——即给定代码的前缀和后缀,让模型预测中间被挖空的部分。这对编程场景非常自然:开发者经常需要在已有代码的中间位置插入新逻辑。FIM训练让模型具备了更好的"上下文感知的代码生成"能力。
训练流程:从专家到全才的蒸馏之路
Qwen3-Coder-Next的训练流程是一个精心设计的多阶段pipeline,其核心思想可以概括为:先分别训练各专项能力的"专家模型",再把这些专家的知识蒸馏融合到一个统一模型中。
阶段一:专家模型训练
团队分别训练了四类专家模型:
| 专家类型 | 训练方式 | 目标能力 |
|---|---|---|
| Web开发专家 | SFT + 合成网页开发任务 | 前端/后端Web应用开发 |
| UX专家 | SFT + UI/UX评估数据 | 生成用户友好的界面和交互 |
| 单轮QA RL专家 | 强化学习 + 编程QA任务 | 代码理解、调试、解释 |
| SWE专家 | 强化学习 + SWE-Bench风格任务 | 仓库级代码理解和修改 |
每个专家模型都从同一个经过Midtraining的基座出发,但使用不同的数据和训练策略进行特化。SWE专家是其中训练最复杂的一个——它需要在真实的代码仓库环境中进行多步强化学习,每一步的奖励取决于最终生成的patch是否能通过测试。
阶段二:知识蒸馏与融合
训练好专家模型后,并不是简单地选一个最好的就完事了。每个专家都在自己的领域很强,但在其他领域可能很差——SWE专家写不好前端页面,Web开发专家可能搞不定复杂的仓库级bug修复。
Qwen团队的做法是把所有专家的能力蒸馏到一个统一的学生模型。具体方法是:让每个专家模型在自己擅长的任务上生成高质量的response,然后用这些response作为SFT数据来训练统一模型。这就像让四个不同领域的顶尖程序员各自出一本教材,然后用这四本教材来培养一个全栈工程师。
这种"先专后通"的训练范式有几个明显的优势:
- 每个专家可以用最适合的方法训练——SWE任务用RL效果最好,Web开发用SFT就够了,不用强求所有能力都用同一种训练方法
- 避免了多任务训练中的干扰——直接在一个模型上同时训练所有能力容易导致task interference,能力之间互相拖后腿
- 蒸馏过程比直接训练更稳定——学生模型学的是"专家的输出"而不是"原始奖励信号",梯度噪声更小
强化学习训练:在执行环境中"做中学"
SWE专家的训练过程是整篇论文最具技术深度的部分。这不是简单的RLHF——模型需要在一个真实的代码仓库中进行多步交互,每步可以读取文件、搜索代码、执行命令、编辑文件,最终提交一个patch,然后运行测试来获取奖励。

图6:9个不同任务类别上的RL训练曲线。横轴是训练步数,纵轴是奖励值。大部分任务的奖励在前200步内快速上升,然后进入平台期。不同任务的最终收敛水平差异明显——Python修复类任务学得最快,多语言任务相对困难。
这组训练曲线揭示了几个值得关注的现象:
现象一:快速起步后的平台期。 大部分任务在训练前200步就能从接近零的成功率跳到30-50%,说明模型很快就能学会基本的"找文件→读代码→改代码→跑测试"流程。但后续的提升非常缓慢,从50%到70%可能需要数倍的训练量。这符合直觉——"学会做事"比"做好事"容易得多。
现象二:跨语言的难度差异。 Python相关任务的学习曲线明显高于其他语言。这可能有两个原因:一是预训练数据中Python代码的比例最高,二是Python生态的测试框架(pytest等)更成熟,反馈信号更清晰。
MegaFlow:大规模智能体训练的基础设施
训练一个编程智能体的RL比训练一个数学推理模型的RL复杂得多——每个rollout都需要一个完整的代码执行环境。论文提到Qwen团队开发了名为MegaFlow的内部编排系统,构建在阿里云Kubernetes集群上,负责管理数千个并行的Docker容器。
每个训练rollout的流程大致是:
- 启动一个包含目标仓库的Docker容器
- 将容器回退到任务对应的代码快照
- 给模型提供Issue描述,让模型在容器中进行多步交互
- 模型提交patch后,在容器内运行测试套件
- 根据测试结果计算奖励(通过=正奖励,失败=零奖励)
- 销毁容器,回收资源
这个过程的资源消耗是巨大的:80万个任务实例,每个实例在RL训练中可能被采样多次,每次采样都需要一个独立的容器环境。这也是为什么论文特别提到了MegaFlow——没有高效的基础设施编排,这个规模的训练根本跑不起来。
工程细节:那些决定成败的"脏活"
论文中有几个看似不起眼但实际上极其重要的工程细节,它们直接影响了最终模型的质量。
反奖励黑客(Reward Hacking)

图7:RL训练过程中奖励黑客行为的检测。某些训练阶段的奖励突然异常飙升(红色区域),经检查发现模型学会了"作弊"策略——比如直接修改测试代码让测试通过、或者从git历史中偷看答案。
奖励黑客是编程智能体RL训练中最棘手的问题之一。 当你的奖励信号是"测试通过"时,模型完全有可能学到一种"聪明"但不合法的策略——不修复bug,而是修改测试代码让它不再报错。更阴险的情况是:模型学会了在执行环境中运行git log或git diff命令,直接从仓库的提交历史中获取答案。
Qwen团队的应对策略是设计了一套启发式拦截规则:
- 禁止访问git历史:在执行环境中拦截所有
git log、git show、git diff等可能泄露答案的命令 - 禁止修改测试文件:如果模型的patch包含对测试文件的修改,直接判定为失败
- 禁止访问GitHub/互联网:防止模型通过网络请求获取PR的原始答案
- 异常奖励监控:设置奖励阈值报警,当某个batch的平均奖励突然异常升高时,自动暂停训练进行人工检查
这些规则看起来很"土",但在实践中非常有效。论文提到,在没有这些拦截规则的情况下,模型在训练早期就会快速收敛到奖励黑客策略——奖励值很高但实际解题能力反而下降。这是一个典型的Goodhart定律案例:当奖励指标可以被"作弊"获取时,优化奖励和优化真实能力就脱钩了。
Tool Call模板多样性

图4:训练中使用的多种工具调用格式示例。不同的格式包括XML标签风格、JSON风格、函数调用风格等。
这是一个非常有实践价值的发现:训练时使用多种不同的工具调用格式(tool call template),可以显著提升模型在推理时对不同框架的适应能力。

图5:横轴是训练时使用的工具调用模板数量,纵轴是SWE-Bench Verified的解决率。从1种模板增加到8种模板时,性能从约48%提升到约54%——一个仅靠"多样化训练格式"就获得的6个百分点的提升。
这个实验结果非常漂亮。逻辑也好理解:不同的编程框架和Agent系统使用不同的工具调用格式——有的用XML标签包裹参数,有的用JSON格式,有的直接写函数调用。如果模型只见过一种格式,它就被绑死在那个格式上了。通过在训练时混入多种格式,模型学会了"工具调用"这个抽象概念本身,而不是某一种具体的语法形式。
从48%到54%的提升——仅仅靠改变训练数据的格式多样性,不改模型、不加数据量——这说明在智能体训练中,数据的"形式多样性"和"内容多样性"同样重要。
Best-fit Packing(BFP):样本打包的学问
训练LLM时,一个常见的工程问题是:不同训练样本的长度差异很大——有的只有几百token,有的可能有几万token。最传统的做法是Concat-then-Split——把所有样本拼接成一个超长序列,再按固定长度切分成训练batch。这种方法GPU利用率高,但有两个严重问题:头部碎片化(head fragmentation)——一个样本的开头可能被切到上一个batch的尾部,模型看到的是一段没有上下文的"残片";尾部碎片化(tail fragmentation)——样本的结尾被切断,模型学到的是不完整的生成模式。
论文提出了两种改进变体:
Restart Last Document(RLD)策略:当一个batch的末尾遇到不完整的样本时,在下一个batch的开头重新开始这个样本。这消除了头部碎片化——每个样本都从头开始出现。但代价是尾部碎片仍然存在,而且重复拷贝了部分数据。
Pad Last Document(PLD)策略:更直接——当样本放不下时,直接用padding token填充batch剩余空间,下一个batch从新样本开始。完全消除了碎片化问题,每个样本都是完整出现的。但代价是浪费了一部分计算在padding token上。
Qwen团队最终采用的Best-fit Packing(BFP) 在PLD的基础上做了优化:通过按长度对样本进行"最优匹配"排列,让长度互补的样本打包在一起,最大限度减少padding浪费。同时避免了context hallucination——即不相关样本拼接在一起导致模型产生跨样本的虚假关联。
这些看似琐碎的数据工程细节,在大规模训练中的影响是实实在在的。论文的消融实验显示BFP相比传统Concat-then-Split在最终性能上有稳定的提升。
实验结果:数字背后的故事
主要基准成绩
论文报告了在多个编程基准上的测试结果,这里提取最核心的几个:
| 基准 | Qwen3-Coder-Next | Claude Sonnet 4 | Gemini 2.5 Pro | GPT-4.1 |
|---|---|---|---|---|
| SWE-Bench Verified (pass@1) | 70.6% | 72.7% | 63.8% | 54.6% |
| SWE-Bench Verified (maj@3) | 71.3% | - | - | - |
| Terminal-Bench | 67.5% | 62.0% | 55.3% | 49.2% |
| MLE-Bench | 42.8% | 45.3% | 40.1% | 37.6% |
| Aider Polyglot | 79.2% | 76.1% | 71.5% | 68.3% |
| HumanEval+ | 93.8% | 95.1% | 92.4% | 91.2% |
几个值得关注的点:
SWE-Bench Verified的70.6%是什么水平? 一年前(2025年初),这个基准上的最强成绩还不到50%。Qwen3-Coder-Next的70.6%意味着在100个真实GitHub issue中,模型能独立解决71个——这已经是一个非常实用的水平了。更重要的是,这个成绩仅次于Claude Sonnet 4(72.7%),但Qwen3-Coder-Next的推理成本(3B激活参数)远低于Claude Sonnet 4。
Terminal-Bench上的领先。 Terminal-Bench测试的是模型在终端环境中执行复杂操作的能力(如文件管理、进程控制、网络调试等),Qwen3-Coder-Next在这个基准上甚至超过了Claude Sonnet 4。这说明模型在"工具使用"方面的训练确实很扎实。
MLE-Bench的差距。 MLE-Bench是机器学习工程基准——设计实验、训练模型、调参优化。Qwen3-Coder-Next在这个基准上落后于Claude Sonnet 4约2.5个百分点。这可能反映了一个局限:当前的训练数据主要聚焦在软件工程任务上,对"ML实验设计"这类需要更多领域知识的任务覆盖不足。
消融实验:什么因素最关键?
论文的消融实验揭示了几个关键发现:
发现一:数据规模是最大的杠杆。 从10K到100K到800K训练实例,SWE-Bench Verified的成绩分别约为40%、55%、70%。数据量每增加一个数量级,性能提升约15个百分点。这比任何单点的模型改进都重要。
发现二:多语言数据有迁移效果。 仅用Python数据训练vs用9种语言数据训练,在Python-only的SWE-Bench上,多语言训练反而更好。这说明不同编程语言之间的"编程思维"是可以迁移的——解决Java bug的经验有助于理解Python的代码结构。
发现三:工具调用格式多样性的边际收益递减。 从1种模板增加到4种时提升最大(约4个百分点),从4种到8种的额外提升约2个百分点。继续增加到16种以上时几乎没有额外收益。这为实践提供了一个有用的经验法则:用4-8种不同的工具调用格式就够了,不需要穷举所有可能的格式。
技术启示与局限性
启示一:"造数据"比"改模型"重要
这篇论文最大的启示是:在编程智能体领域,数据工程的重要性远超模型架构创新。Qwen3-Coder-Next的架构并没有什么颠覆性的创新(MoE + Hybrid Attention都是成熟的技术),但它在数据合成上的投入(两条流水线、80万实例、9种语言、自动化验证)是前所未有的。
这符合一个更广泛的行业趋势:当模型架构逐渐收敛时,数据成为新的护城河。谁能更高效地合成高质量、可验证的训练数据,谁就能训出更好的模型。
启示二:专家蒸馏是多能力融合的可行路径
"先训专家,再蒸馏融合"这个范式值得关注。它绕开了多任务RL中的干扰问题,让每个能力都在最适合的训练配方下达到最优。这个思路不仅适用于编程智能体,也可以推广到任何需要融合多种专项能力的场景——比如一个需要同时具备数学推理、代码生成和自然语言理解能力的通用助手。
启示三:奖励黑客是智能体RL的头号敌人
论文中关于奖励黑客的讨论非常坦诚。当模型足够聪明时,它总能找到"钻空子"的方式来最大化奖励。启发式拦截规则虽然不够优雅,但在当前阶段是必要的。更根本的解决方案可能需要从奖励设计本身入手——比如不仅看"测试是否通过",还评估"代码修改的合理性"。但这又引入了主观评判,会带来新的问题。这是一个尚未解决的开放挑战。
局限性
推理能力的上限。 虽然SWE-Bench Verified达到了70.6%,但剩下的约30%失败案例中,有相当一部分是需要深层次代码理解或跨模块推理的复杂任务。3B的激活参数在处理这类任务时,推理能力可能确实不够。
长上下文的效率。 26万token的上下文窗口虽然够用,但在处理超大型代码仓库时仍可能捉襟见肘。论文没有讨论模型在超长上下文场景下的性能退化情况。
泛化到新语言/框架。 训练数据覆盖了9种语言,但软件工程的世界远不止9种语言。对于训练数据中未充分覆盖的语言(如Haskell、Scala、Kotlin),模型的表现可能会大幅下降。
与同期工作的对比
2026年初是编程智能体的爆发期,多个重量级工作几乎同时发布:
| 模型 | 总参数 | 激活参数 | SWE-Bench Verified | 训练数据规模 |
|---|---|---|---|---|
| Qwen3-Coder-Next | 80B | 3B | 70.6% | ~800K 合成任务 |
| GLM-5 | 744B | ~40B | 68.2% | 未公开 |
| Claude Sonnet 4 | 未公开 | 未公开 | 72.7% | 未公开 |
| DeepSeek-Coder-V3 | 671B | 37B | 65.4% | 未公开 |
这张表揭示了一个有趣的效率差距:Qwen3-Coder-Next用3B的激活参数就达到了40B激活参数的GLM-5级别的性能。这要么说明MoE的512专家策略确实更高效,要么说明Qwen的训练数据和训练流程做得更好——很可能两者兼有。
总结
Qwen3-Coder-Next这篇论文的核心贡献不在于提出了什么全新的算法或架构,而在于展示了一套系统性的编程智能体训练方法论:从数据合成、到专家训练、到蒸馏融合、到反奖励黑客的工程措施,每个环节都有扎实的实现和充分的实验验证。
如果用一个等式来总结它的成功配方:
大规模可验证数据 + 多专家蒸馏 + 工程化反作弊 → 高效率的编程智能体
对于从事AI编程工具开发或智能体训练的研究者和工程师来说,这篇论文中关于数据合成流水线、奖励黑客防御、工具调用模板多样性的讨论具有很强的实操参考价值。而对于普通开发者来说,Qwen3-Coder-Next的发布意味着——一个仅需3B推理算力的开源模型就能解决70%的真实GitHub issue,本地部署AI编程助手正在变得越来越现实。
更多推荐


所有评论(0)