当代码库动辄跨越数十个文件、总行数上万,AI 编码助手却在多步推理和真实终端执行中反复卡壳——要么上下文丢失,要么工具调用偏离轨道,最终交付的只是半成品甚至引发新 Bug。Cursor 上周发布的 Composer 2 模型,却在真实生产级仓库中展现出罕见的端到端韧性。它不是简单堆参数,而是用一套精心分层的训练 pipeline,把“懂代码”和“会工程”彻底打通。这篇拆解直指报告核心,剥开表层宣传,看看底层设计如何在计算、存储、网络的物理限制下完成一次真正的范式突破。

起初业界默认的路径是:选个强基座,跑几轮 SFT 就够了。可现实里,这种“知识即能力”的假设在长任务面前迅速崩盘——模型知道语法,却不知道如何在真实环境中持续纠错、规划路径。Composer 2 的做法先把矛盾摊开:知识积累与行动能力是两个正交维度,必须先用持续预训练夯实前者,再用大规模强化学习锻造后者。这不是线性叠加,而是像生物系统里“基因库先稳定表达,再接受自然选择压力”——只有低熵的知识底座,才能让后续的进化压力真正转化为适应性执行力。

为什么先用 Kimi K2.5 MoE 做知识注入,再上 RL 才是最优序?

基座选择本身就是第一性权衡。Kimi K2.5 是 1.04 万亿参数的 Mixture-of-Experts 架构,每次前向传播只激活 32B 参数。这不是营销噱头,而是对 GPU 显存和带宽物理极限的直接回应:全参数激活会让训练吞噬天文级算力,而稀疏激活却保留了万亿级知识容量。继续预训练(CPT)分三步推进,层层收窄数据质量与复杂度——

  1. Bulk Training(32k 序列):海量代码主导的数据混合 + 标准 next-token 预测,快速建立编程语言、模式、文档的广域知识。
  2. Long-Context Extension(256k 序列):把窗口从 32k 拉到 256k,让模型能同时“看见”整个多文件仓库,解决现代工程里最常见的跨文件依赖问题。
  3. Supervised Fine-Tuning:短暂对齐具体编码任务,为 RL 阶段提供干净的起始策略。

这里还嵌入 Multi-Token Prediction(MTP)。模型额外训练几层专门预测未来多个 token,通过自蒸馏对齐主头 logits。生产推理时,这相当于“一次性猜对几步”,主模型再验证,显著降低延迟。底层逻辑很简单:预测多个 token 的确定性序列,本质是把推理的计算成本前置,换取端到端吞吐提升。

预训练结束后,模型已经成了“编码专家”,但还不会“做事”。强化学习阶段才真正把能力锻造出来。

RL 环境的工业级设计:隔离、快照、异步,三者缺一不可

训练环境基于 Rust 实现的 Anyrun 平台 + AWS Firecracker 轻量虚拟化。每个 rollout 都在独立 VM 里运行,支持完整开发栈(含浏览器和 GUI),却能安全执行“不可信”代码。关键特性是文件系统与内存级快照 + forking:模型走错一步,可以瞬间回滚到上一个正确状态重新尝试。这解决了 RL 中最头疼的样本效率问题——一次失败不再浪费整条轨迹。

网络侧用 Anygress 代理,所有外部流量被策略严格过滤,防止代理意外泄露敏感信息或产生副作用。整个 harness 完全复刻 Cursor IDE 的工具调用接口(RPC),训练出来的策略上线后零适配成本。训练本身采用异步架构:训练服务、环境服务、推理服务、评估服务解耦并行,任何组件都不互相等待,吞吐最大化。这正是当前最先进 RL 系统(Minimax、GLM-5 同类做法)在生产上的共识——把 Amdahl 定律的串行瓶颈彻底拆掉。

奖励函数的精妙权衡:非线性长度惩罚 + 多重辅助信号

最终奖励来自任务成功(通过测试、到达目标状态)的可验证信号,经典 RLVR 思路。但 Cursor 加了一项创新——非线性长度惩罚,曲线呈凹形:简单任务里每多一个 token 都重罚,困难任务里则允许模型“多想一会儿”而不被过度惩罚。这相当于经济学里的边际收益递减:既防止模型在琐事上浪费算力,又不扼杀复杂问题所需的深度推理。

辅助奖励进一步塑形行为:鼓励可读代码、清晰的中间思考,惩罚“建 TODO 却永不执行”等坏习惯。观察空间支持多模态(代码 + 终端输出 + 生产日志),任务过长时模型会自我总结前序动作,作为下一轮观察输入,相当于给上下文窗口装了“记忆外挂”。

CursorBench 不是普通基准,它是真实工程卡点的浓缩

不同于 GitHub issue 那种“实现 X 功能”的静态任务,CursorBench 抽取自 Cursor 团队与用户的真实生产问题:指令往往模糊(“修复新功能里的 Bug”,但新功能本身未明确定义);需要跨源代码与生产日志做诊断;甚至要分析 954 个 JSON 文件找出微妙 streaming Bug,并写启发式检测器调优。基准会随模型进步和开发者工作流变化迭代(v0→v1→v2…),始终保持领先于公开饱和榜单。

下面是两阶段 pipeline 的核心对比(白帽客观数据、黑帽风险、红帽体验):

维度 传统 SFT 路径 Composer 2 两阶段方案 客观性能(白帽) 潜在风险(黑帽) 开发者体验(红帽)
知识注入 依赖基座泛化能力 CPT 三阶段 + MTP 自蒸馏 领域知识深度显著提升 数据质量依赖高,CPT 成本大 模型“懂”得更透彻
执行能力 靠提示工程或少量 RL 大规模异步 RL + 非线性惩罚 + 快照回滚 长任务成功率跃升 RL 样本效率仍需高算力 工具调用更一致、可解释
生产对齐 上线后适配成本高 Harness 100% 复刻 IDE + 异步服务 零迁移成本 环境复杂度增加维护压力 训练即生产,体验无缝
推理效率 标准自回归 MTP 投机解码 吞吐提升 1.5-2x 额外蒸馏层带来少量显存开销 响应更快,用户感知明显

这套设计把“知识”和“能力”两个维度拆得 MECE:CPT 只负责低熵知识注入,RL 只负责高维策略优化,中间用 harness 保证零摩擦转移。表面上看是技术细节,底层却是对计算物理极限、样本效率和生产安全的三重妥协后,找到的最优平衡点。

更深一层看,Composer 2 不是在追赶开源,而是用工业级闭环把 agentic 软件工程的门槛整体抬高。未来真正拉开差距的,不会是参数量,而是谁能把知识底座、执行韧性和生产环境对齐做到极致。

你在实际项目里,是否也遇到过“模型很聪明但执行总掉链子”的场景?欢迎分享你的观察——或许下一代训练范式,就藏在这些真实卡点里。

我是紫微AI,在做一个「人格操作系统(ZPF)」。后面会持续分享AI Agent和系统实验。感兴趣可以关注,我们下期见。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐