Meta的代码生成世界模型CWM,先预测结果再写代码,IDE很快会多一个“预言”按钮

AITNT-国内领先的一站式人工智能新闻资讯网站
# 热门搜索 #
Meta的代码生成世界模型CWM,先预测结果再写代码,IDE很快会多一个“预言”按钮
6731点击    2025-10-09 11:06

您修过Bug吗?在Vibe coding的时代之前,当程序员遇到自己写的 Bug 时,通常能顺着自己的思路反推问题所在。但当面对 AI 生成的 Bug 时,情况变得复杂得多,我们不清楚 AI 的“思考过程”,这使得调试过程像是在探索一个“黑箱”。一方面,修复一个Bug的交互链条非常长,Token消耗呈指数级增长;另一方面,开发者需要不断地向 AI 解释错误、提供上下文,反复拉锯的过程会极大地消耗开发者的心力和时间,全程漫长又煎熬,甚至在一些大型项目中,Bug到最后还不一定能修好。


Meta FAIR最近发布的一项研究直指这个问题,他们提到:传统大语言模型在训练时,通常将代码视为一种特殊的静态文本。模型学习的是代码从左到右、从上到下的文本预测。这种方法存在一个根本性的缺陷:它只学到了代码的“静态语法 (Syntax)”,而忽略了其“动态语义 (Semantics)”,而这刚好是代码最本质的特性。一个优秀的程序员不仅知道代码长什么样,更重要的是知道代码执行时会发生什么


Meta的代码生成世界模型CWM,先预测结果再写代码,IDE很快会多一个“预言”按钮


因此他们发布了Code World Model(CWM),这是一款320亿参数、开源权重的代码大模型,主打“代码世界建模”:不仅学代码长什么样(语法),还学代码执行时环境如何变化(语义与动态),结果是在 SWE-bench Verified 等评测上拿到强劲成绩,同时开放中间与最终 checkpoint,作为学界研究“世界模型和代码生成”的试验台。


为什么这样做?


先预测结果再写代码的背后,是一种深刻的编程思想,研究者称之为“通过追踪进行推理” (reasoning-via-tracing)。其核心优势在于:


“做什么”到“怎么做”的逻辑转变: 这种方法强制模型首先深度思考并规划出解决问题的具体步骤(What to do),然后再将这些步骤转化为代码语法(How to do it)。这非常符合人类解决问题的模式:我们通常会先在脑中或者草稿纸上构思出逻辑步骤,然后再动手写代码。这避免了模型在不理解问题的情况下,直接陷入复杂的语法细节中。


Meta的代码生成世界模型CWM,先预测结果再写代码,IDE很快会多一个“预言”按钮


画线内容:“我将首先发出执行轨迹,并检查它是否能得到预期的输出。然后,如果输出是正确的,提取代码就变得很简单了。”


让代码生成“有据可依”: 传统的代码生成是“漂浮”的,模型直接根据提示生成一堆文本。而通过这种方法,代码的每一行都是从一个被验证过可以产生正确结果的、具体的执行路径中提取出来的。这使得生成的代码逻辑更可靠,更不容易出现与预期不符的错误。


致敬经典计算机科学思想


研究者指出,这种方法与计算机科学先驱Hoare和Dijkstra的思想不谋而合。他们提倡在编程时,应该用逻辑推理来指导程序的开发过程,而不仅仅是在代码写完后用测试去验证其正确性。CWM在某种程度上将这种高级的编程思想自动化了。


Meta的代码生成世界模型CWM,先预测结果再写代码,IDE很快会多一个“预言”按钮


CWM专为长代码而生


CWM不仅在训练理念上创新,其底层的Transformer架构也为高效处理长篇代码进行了专门优化。其核心设计有两大特点:


Meta的代码生成世界模型CWM,先预测结果再写代码,IDE很快会多一个“预言”按钮


  1. 混合注意力机制 (Alternating Attention): 为了高效处理高达 131k tokens 的超长上下文,CWM 并没有采用全局的注意力机制,因为那样计算成本太高。它巧妙地采用了局部与全局注意力交替的模式。具体来说,模型大部分的 Transformer 层使用 8k tokens 的“局部”滑动窗口注意力,而在每3层局部注意力之后,会插入1层能够看到全部 131k 上下文的“全局”注意力层。这种 3:1 的混合模式,如同“既能用放大镜仔细看代码细节,又能周期性地用广角镜审视全局结构”,在计算效率和长依赖捕捉之间取得了绝佳的平衡。
  2. 分组查询注意力 (Grouped-Query Attention, GQA): 这是另一项关键的优化技术。在传统的注意力机制中,每一个“查询头”(Query Head)都需要与所有的“键值头”(Key-Value Head)进行计算。而 GQA 允许多个查询头共享同一组键值头。这极大地减少了计算量和内存占用,使得模型在保持强大性能的同时,推理速度更快,对硬件更友好。


通过这些精心设计的架构,CWM 才能在实际训练中高效地处理复杂的代码仓库和长篇的交互历史,为其“世界模型”的构建打下了坚实的硬件和算法基础。


CWM独特的训练流程


CWM最核心的创新在于引入了“代码世界模型中继训练 (Code World Modeling Mid-training)”,它在通用预训练之后、指令微调之前,专门向模型灌输代码的动态执行逻辑。整个流程可以看作是逐步为模型构建能力,从通用的语言和代码知识,到深刻的执行语义理解,再到解决复杂问题的专业技能,可以分为两个主要阶段和四个具体步骤。


Meta的代码生成世界模型CWM,先预测结果再写代码,IDE很快会多一个“预言”按钮


第一阶段:预训练 (Pre-training) - 构建基础与核心世界模型


这个阶段的目标是让模型不仅学会代码的表面语法,更要理解其内在的执行逻辑。


步骤1: 通用预训练 (General Pre-training)


  • 目标: 为模型打下坚实的语言和代码基础。
  • 训练数据量: 8 万亿 (8T) tokens。
  • 上下文长度: 8k tokens。
  • 数据构成: 这是一个多样化的数据集,其中代码数据约占30%,其余为科学、技术、工程、数学(STEM)和通用知识。
  • 作用: 此阶段与许多标准大模型的预训练类似,旨在让 CWM 具备强大的基础文本理解和代码语法知识。


步骤2: 代码世界模型中继训练 (Code World Modeling Mid-training)-核心创新


这是整个流程中最关键、最独特的一步。它的目标是构建 CWM 的核心能力,代码世界模型,主要通过两种互补的数据来构建:


支柱一:Python 执行追踪 (Python Execution Traces)学习微观层面的“代码物理定律”


这是为了让模型理解代码的直接因果关系


训练内容:模型学习的不是孤立的代码,而是一系列“观察-行动”轨迹 (observation-action trajectories)。


Meta的代码生成世界模型CWM,先预测结果再写代码,IDE很快会多一个“预言”按钮


  • 观察 (Observation):在执行某行代码之前,程序内存中所有局部变量的“快照”。
  • 行动 (Action):即将被执行的那一行 Python 代码。


  • 训练目标:给定一个“观察”和一个“行动”,模型必须学会准确预测出执行完这个行动后,程序会进入怎样一个新的“观察”状态(即变量如何变化)。
  • 效果:通过数万亿次的这种训练,CWM 仿佛在内部构建了一个虚拟的“Python 解释器”。它不再是把 n += 1 当作一个普通的文本序列,而是将其理解为一个会导致变量 n 的值增加 1 的确定性操作。它学会了代码的执行语义 (semantics),而不仅仅是语法 (syntax)


支柱二:ForagerAgent数据-学习宏观层面的“工程实践动态”


这是为了让模型理解代码在一个真实、复杂的开发环境中是如何被使用的


  • 训练内容:模型学习的是一个 AI 代理(名为 ForagerAgent)在 Docker 容器中解决软件工程任务的完整交互记录。
  • 训练目标:模型需要学习并理解在一个真实的命令行环境中,执行一个宏观“行动”(比如运行 pytest 测试命令)会带来怎样的环境“观察”(比如一段包含“2 tests failed”的错误日志)。
  • 效果:这种训练将模型的知识“锚定”在了一个动态的、有反馈的系统中。它让模型明白,编程不是一个孤立的行为,而是一个与环境(文件系统、测试框架、编译器)不断互动的过程。这为它在后训练阶段学习如何成为一个“代理 (Agent)”打下了坚实的基础。


小结


“代码世界模型中继训练”是 CWM 训练流程的点睛之笔。它是一个承上启下的关键阶段:


  • 承接了通用预训练建立的广泛知识。
  • 它通过灌输代码世界的“物理定律”和“实践动态”,为模型建立了核心的因果推理能力
  • 启发了后训练阶段,使得模型能更高效地学习如何应用这些底层原理去完成复杂的、多步骤的软件工程任务。


可以说,没有这个“中继训练”阶段,CWM 就只是另一个强大的代码补全工具;而有了这个阶段,它才真正拥有了成为一个“代码世界模型”的潜力。


第二阶段:后训练 (Post-training)-精通复杂任务


在模型具备了世界模型的基础后,通过后训练阶段将其能力引导至解决实际、复杂的编程和推理问题上。


步骤 3: 监督微调 (Supervised Fine-tuning, SFT)


  • 目标: 提升模型遵循复杂指令和进行逐步推理的能力。
  • 训练数据量: 1000 亿 (100B) tokens。
  • 上下文长度: 32k tokens。
  • 数据构成: 包含高质量的指令数据、外部推理数据集(如 OpenCodeReasoning 和 OpenMathReasoning)以及部分 CWM 早期版本自己生成的代理交互轨迹。
  • 特殊设计: 在此阶段,模型被教会在回答前先生成一段被 <think>...</think> 标签包裹的“思考过程”。这为后续的强化学习奠定了基础。


步骤 4: 联合强化学习 (Joint Reinforcement Learning, RL)


Meta的代码生成世界模型CWM,先预测结果再写代码,IDE很快会多一个“预言”按钮


  • 目标: 通过在交互式环境中进行试错学习,进一步打磨和提升模型的复杂问题解决能力。
  • 训练算法: 使用GRPO的策略梯度算法。
  • 多任务环境: CWM 在四个不同的交互式环境中同时进行训练,使其成为一个多面手:


多任务环境: CWM 在四个不同的交互式环境中同时进行训练,使其成为一个多面手:


Meta的代码生成世界模型CWM,先预测结果再写代码,IDE很快会多一个“预言”按钮


  1. 代理式软件工程 (Agentic SWE): 在沙盒化的代码仓库中解决真实的软件 issue。
  2. 编程竞赛 (Coding): 编写代码解决算法竞赛问题。
  3. 代理式编程 (Agentic Coding): 在解决算法问题的过程中,可以自己编写、运行和调试测试用例。
  4. 数学 (Mathematics): 解决数学问题,进一步强化其逻辑推理能力。


“代码世界模型”的核心思想,就是通过让模型学习代码执行的动态过程和在真实环境中的交互后果,使其从一个只会“读谱”的模仿者,转变为一个能在内心“预演”代码执行效果的思考者。这种深刻的理解力,是 CWM 接下来能够在复杂的软件工程任务上超越其他模型的根本原因。


真的有用吗?数据消融研究


但是,如此复杂的训练流程和特殊的数据集,真的比传统方法更有效吗?为了回答这个问题,研究者进行了一项关键的数据消融研究 (Data Ablation Study),用科学实验证明了其方法的有效性。 实验中,他们使用规模较小的 80 亿参数模型,并系统性地在中继训练阶段添加或移除三种核心的“世界模型”数据集:GitHub PR 轨迹数据Python 执行追踪数据和 ForagerAgent 代理交互数据


结论非常有力:


Meta的代码生成世界模型CWM,先预测结果再写代码,IDE很快会多一个“预言”按钮

  1. 最终赢家:包含了全部三种特殊数据集的模型,在所有相关的评估指标上均取得了最佳性能。
  2. 各有专长:每一种数据都对模型的特定能力有不可或缺的贡献:


  • GitHub PR 数据:显著提升了模型在 SWE-bench 上的最终修复成功率,但对理解代理交互过程帮助不大。
  • Python 执行追踪数据:是模型在代码输出预测任务(CruxEval)上取得巨大提升的关键,证明了它对学习代码执行语义至关重要。
  • ForagerAgent 代理交互数据:这是唯一能够显著提升模型代理行为(agentic performance)的数据。加入它之后,模型在 SWE-bench 上的修复成功率获得了额外的 3.7% 提升。 这个消融研究用无可辩驳的数据证明了,“代码世界模型”不仅仅是一个新颖的概念,其背后的每一种特殊训练数据都像一块精确的拼图,共同构建了 CWM 超越传统模型的强大能力。


性能与新能力:CWM究竟有多猛?


最终,经过这样一番特殊训练的CWM,在其设计的核心领域,复杂的代码任务和代理式软件工程中达到了业界顶尖水平,甚至在某些方面超越了更大规模或闭源的专有模型。


王牌能力:代理式软件工程 (Agentic SWE)-解决真实世界Bug


这是 CWM 最亮眼的表现,直接证明了其“代码世界模型”的价值。


Meta的代码生成世界模型CWM,先预测结果再写代码,IDE很快会多一个“预言”按钮


Meta的代码生成世界模型CWM,先预测结果再写代码,IDE很快会多一个“预言”按钮


  • 测试基准SWE-bench Verified。这是一个极其困难的基准测试,要求模型像一个真正的软件工程师一样,通过自主探索、编辑代码、运行测试来修复真实世界中 GitHub 代码仓库的 Bug。
  • 成绩:


  • CWM 的基础单次尝试(pass@1)解决率达到了 53.9%
  • 在使用“测试时扩展”(即生成多个候选方案并择优提交)技术后,解决率飙升至 65.8%


这个成绩非常厉害。它超越了所有同等参数规模的开源模型,并且与更大、更昂贵的闭源专有模型(如 GPT-5 和 Claude Sonnet-4)具有很强的竞争力。这表明 CWM 不仅仅是生成代码片段,而是真正具备了理解和解决复杂工程问题的能力。


独特能力:代码执行与深度推理-证明其“懂”代码


CWM 的强大不仅在于结果,更在于它能像人一样“思考”和“预演”代码。


Meta的代码生成世界模型CWM,先预测结果再写代码,IDE很快会多一个“预言”按钮


与直接预测(Direct)或简单的思维链(CoT)相比,开启为 CWM 特别设计的“推理”(Reasoning)模式后,模型准确率实现了质的飞跃。


  • 代码输出预测 (CruxEval-O):
  • 任务: 预测一段 Python 代码的最终输出结果。
  • 成绩: 在开启推理模式后,CWM 的准确率高达 94.3%。更有趣的是,其独特的“执行追踪预测”模式也能达到 87.7% 的高分,这直接证明了其内部“世界模型”的有效性。
  • 程序终止预测 (HaltEval-prelim):
  • 任务: 判断一个程序是会正常结束还是会无限循环。这是一个经典的计算机科学难题。
  • 成绩: 在使用推理模式后,CWM 的准确率达到了 ~94%,远超传统的直接预测方法。这表明它对代码的控制流和逻辑有深刻的理解。
  • 算法复杂度分析 (BIGO(BENCH)):
  • 任务: 分析代码的时间和空间复杂度。
  • 成绩: CWM 在时间复杂度预测和生成任务上,均优于同级别的对比模型(如 Qwen3 和 Gemma-3)。在当时的官方排行榜上,其时间复杂度预测能力在所有模型中排名第二。


通用编程与数学能力-基础扎实


除了在尖端任务上表现突出,CWM 在传统的编程和数学基准上也同样强大。


  • 通用编程竞赛 (LiveCodeBench):
  • 在 LCBv5 基准上,CWM 取得了 68.6% 的 pass@1 分数,与 Qwen3、Magistral 等顶尖代码模型处于同一水平线。
  • 数学推理:
  • 在 Math-500 基准上得分高达 96.6%
  • 在美国数学邀请赛 AIME 2024 的题目上,取得了 76.0% 的好成


超长上下文处理能力 - 应对大规模代码库


Meta的代码生成世界模型CWM,先预测结果再写代码,IDE很快会多一个“预言”按钮

  • LoCoDiff测试基准这个测试会要求模型处理一个文件的长篇提交历史,并重建其最终版本。
  • 成绩: CWM 的表现优于 DeepSeek-R1 和 gpt-oss-120B,并且能够与 GPT-5 和 Gemini 2.5 Pro 等大型商业模型相媲美,仅次于表现异常出色的 Claude Sonnet 4。这得益于它在训练中处理了高达 131k tokens 的上下文。


写在最后


CWM目前虽然开源,但并非通用模型:仅专注于代码,未经过RLHF对齐,所以目前还是一个为研究目的发布的模型。但它所展示的潜力,无疑为我们描绘了一幅AI驱动软件开发新范式的蓝图。


文章来自于微信公众号 “AI修猫Prompt”,作者 “AI修猫Prompt”

AITNT-国内领先的一站式人工智能新闻资讯网站
AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
AI数据分析

【开源免费】DeepBI是一款AI原生的数据分析平台。DeepBI充分利用大语言模型的能力来探索、查询、可视化和共享来自任何数据源的数据。用户可以使用DeepBI洞察数据并做出数据驱动的决策。

项目地址:https://github.com/DeepInsight-AI/DeepBI?tab=readme-ov-file

本地安装:https://www.deepbi.com/

【开源免费airda(Air Data Agent)是面向数据分析的AI智能体,能够理解数据开发和数据分析需求、根据用户需要让数据可视化。

项目地址:https://github.com/hitsz-ids/airda

2
智能体

【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。

项目地址:https://github.com/Significant-Gravitas/AutoGPT


【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。

项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md

3
微调

【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。

项目地址:https://github.com/InternLM/xtuner

4
prompt

【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。

项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md

在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0