代码世界建模:AI 推理训练的一条暗线
从一位 Anthropic 研究员透露的秘密出发,我们追踪了六篇论文,揭示了一个比预期更大的训练范式:基于验证器的过程监督——代码执行预测成为通用推理的预训练场,也是第一条不依赖人类数据的智能提升路径。
两个人,一条线索,六篇论文,和一个比所有人猜的都大的真相。
案发现场
2026 年 3 月,硅谷。张小珺访谈姚顺宇。
这个人的履历像小说——清华物理本科,斯坦福理论物理博士,研究了九年非厄米系统和量子黑洞。博士毕业那年,他做了一个让同行目瞪口呆的决定:离开深耕九年的物理,一头扎进 AI。过去两年,他先后在 Anthropic 和 Google DeepMind 训模型,参与了 Claude 3.7、4、4.5 和 Gemini 3。
四个小时的对话。中间有一段,张小珺问了一个看起来很简单的问题:
为什么 Claude 的 coding 一定会比 GPT-4 好?
姚顺宇的回应很有意思。他不是不想说,而是觉得说出来会泄露什么。他的措辞非常精确:
是有原因的。是一个纯技术原因。但是确实我不能确定一开始是随机试出来的还是故意的——是先自下而上冒出来,后来自上而下变成战略的。
三个关键词。纯技术原因。自下而上冒出来。不能说。
像拼图的三条边。框住了一个形状,但看不清全貌。
他又补了一句:
Coding 的 reward signal 是很好定义的。输入是什么,输出是什么,测试能不能过,输入输出一匹配就是成功。
这句话说得很随意,几乎像在描述一件显而易见的事。但我们决定把它当线索来追。
线索一:模型其实不会"跑代码"
追查的第一步,是搞清楚这个"reward signal"到底在奖励什么。
如果 coding 的 reward 就是"写代码 → 跑测试 → 通过给分",那这个思路谁都想得到,不可能是 secret。所以要么 reward 设计本身有巧思,要么训练目标不是简单的"写代码"。
2024 年,Meta 发了一个 benchmark,叫 CRUXEval。800 个 Python 函数,每个 3 到 13 行。不是什么 LeetCode hard,就是基本的循环、条件、列表操作。任务很简单:给函数和输入,预测输出。
比如这样:
def f(x):
result = []
for i in range(len(x)):
if x[i] % 2 == 0:
result.append(x[i] * 2)
return result
输入 x = [1, 2, 3, 4, 5],输出是什么?
答案是 [4, 8]。你得在脑子里把循环跑一遍——i=0 时 x[0]=1,奇数跳过;i=1 时 x[1]=2,偶数 append 4;i=2 时 x[2]=3,跳过;i=3 时 x[3]=4,append 8;i=4 时 x[4]=5,跳过。返回 [4, 8]。
人类程序员做到这一点毫不费力。这不就是 debugging 时"在脑子里跑代码"的过程吗?
但模型不行。GPT-4 加上 Chain-of-Thought 才拿到 75%。Code Llama 34B 只有 46%。
3 到 13 行代码。
这件事打了一个很响的脸:模型会写代码,但不理解代码跑起来会发生什么。 它学到的是"代码通常长什么样"——统计规律。它知道 sorted() 后面一般跟个列表,但不真的理解 sorted() 返回新列表而 list.sort() 是原地改然后返回 None。
写代码靠模式匹配,理解执行靠因果推理。这是两种完全不同的能力。
这里有一个能力缺口。而缺口意味着机会——如果你能补上这个缺口,模型的能力会有质变。
线索二:补缺口的方法,效果出乎意料
2025 年初,DeepSeek 的一个团队做了件极其朴素的事。
他们收集了大量代码函数,为每个函数生成输入-输出对(沙箱跑一遍就有),然后训练模型做一件事:给你代码和输入,用自然语言 Chain-of-Thought 来预测输出。
就这么简单。朴素到像课程作业。
论文叫 CodeI/O,投中了 ICML 2025 Oral。
但结果不朴素。不光 coding 涨了。数学推理、逻辑推理、科学推理、符号推理、常识推理——全涨了。
你让模型练习预测代码输出,它的数学能力居然变强了?
DeepSeek 的解释是:代码执行预测逼着模型学会四个通用推理原语——状态追踪(变量在这一步是什么、下一步变成什么)、条件分支(if 走哪条路)、循环迭代(每一轮改变了什么)、模块分解(函数 A 调用函数 B)。这四个操作不只在编程里用到,做数学推导、逻辑证明、工程分解都需要。
而代码恰好是训练这四种操作最严格、最易验证的载体。每一步都是确定性的,每个结果都能跑出来对比。数学做不到——"这个证明对不对"没有沙箱可以验证。逻辑做不到——"这个推理链有没有效"需要人类判断。只有代码,执行一下就知道对不对。
代码执行预测不是在教模型编程,是在教模型推理。代码只是最严格的训练场地。
线索三:连人类数据都不需要
2025 年,新加坡国立大学的一个团队把事情推到了极端。
他们发了一篇论文叫 AZR(Absolute Zero Reasoner),中了 NeurIPS 2025。思路是:连代码都不需要从外面拿。模型自己出题自己做。
同一个模型扮演两个角色。出题者生成代码和输入,答题者预测输出。reward 从哪来?沙箱跑一下就知道。
但出题者不是随机出题。它优化的是"出对答题者学习进度最有利的题"——答题者越不会的,越要出。AZR 还把任务拆成三元组:给代码和输入预测输出(演绎),给代码和输出反推输入(溯因),给输入输出写代码(归纳)。
结果:零人类数据,coding 和数学推理都超过了几万条人工标注数据训练出来的模型。
整条链——出题 → 预测 → 验证 → reward——完全自动闭环。代码可以自己生成,正确性可以自己验证,难度可以自己调节。理论上这个循环可以永远转下去。
线索四:逐步追踪比猜最终答案更有效
2026 年 5 月,StepCodeReasoner 把事情又推进了一步。
之前所有方法都只看最终输出对不对。"这段代码跑完输出是 [4, 8],你猜对了吗?"整个推理过程只有最后一个信号。
StepCodeReasoner 说:不够。不只猜最终输出,预测每一步执行后的变量状态。
模型需要预测的不是一行答案,而是整个执行过程——每一步变量是什么、分支为什么走这里、循环第 k 轮状态如何。每一步的变量状态都和真实执行对比,都对上了才给满分。
这把 reward 从"一个信号"变成了"一路信号"。
他们用一个叫 Bi-Level GRPO 的 RL 算法来利用这个密集信号。StepCodeReasoner 的附录里还有一个很关键的发现:用 GPT-4o 做中间步骤判断只有约 73% 的准确率,而基于解释器的 rule-based reward 是构造上 100% 准确。reward 不靠"看起来合理",而靠环境真值。
结果:7B 模型在 CRUXEval 上跑到 91.1%,超过 GPT-4o 的 85.6%。
一个 7B 赢了 GPT-4o。
线索五:规模验证——但要读 ablation
论文是一回事,生产是另一回事。Meta FAIR 在 2025 年 9 月做了最大规模的验证。
Code World Model(CWM):1.2 亿条 Python 执行轨迹做 mid-training,32B 参数,SWE-bench 跑到 65.8%。三个阶段 checkpoint 全部开源。
但 CWM 的 ablation 有一个非常重要的细节,差点被我们忽略:函数级 execution traces 显著提升 CruxEval,但对 SWE-bench 相关指标没有直接效果。 真正拉 SWE-bench 的是 ForagerAgent 这类 repo-level agent trajectory。
这意味着从"脑内执行"到"真实工程能力"之间有一道坎。函数级执行预测是底座,但不够。你还需要 agent-environment interaction——在真实项目环境里修改代码、执行、检查结果、再修改的完整轨迹。
拼图完成(大概)
把六条线索摆在一起看:
- 模型会写代码但不会"跑代码"(CRUXEval)
- 练"跑代码"居然能让数学推理涨(CodeI/O)
- 连外部数据都不需要(AZR)
- 逐步状态追踪比只看最终答案有效得多(StepCodeReasoner)
- 函数级 trace 是底座,但要接到 agentic trajectory 才能拉真实工程能力(CWM ablation)
- 解释器 reward 比 LLM judge 可靠(StepCodeReasoner appendix)
拼出来的图不是"代码执行预测"这五个字能概括的。它更像是一套完整的训练范式——
用可执行环境把推理训练变成可验证的状态转移学习。
具体来说,是五件事叠在一起:
- 把推理问题变成状态转移预测——不问"答案是什么",问"下一步变量变成什么"
- 用 trace anchors 做 process supervision——解释器验证每一步,不靠 LLM 判断"看起来对不对"
- 任务是三向的——演绎(给代码+输入→输出)、溯因(给代码+输出→输入)、归纳(给 I/O→代码)
- Curriculum 最大化学习进度——不是越难越好,是有对有错、reward 方差高的题最有价值
- 最终接到 agentic coding——函数级 trace 是底座,repo-level agent trajectory 才能拉真实工程能力
如果非要用一句话概括:Trick 不是 code。Trick 是 verifier-grounded process supervision。代码只是目前最强的 verifier playground。
我们猜对了几分
说到这里,要做一件不太舒服的事——给自己打分。
公开研究趋势的判断:8/10。 CRUXEval、CodeI/O、AZR、StepCodeReasoner、CWM、Self-Execution Simulation 这条线确实存在,而且越来越清楚。这部分我们比较有信心。
"Anthropic 的 secret 大概率就是这个":4/10。 这个猜测合理但缺乏直接证据。姚顺宇说的"coding 的 reward signal 好定义",最直接的解读其实是 code generation RL(写代码→跑测试→通过给 reward),不是 execution prediction RL(读代码→预测输出→对比给 reward)。两者相关但不是一回事。真正的 frontier lab 大概率两者都做——甚至更多。
工程实现方案:6/10。 大方向对,但里面很多参数是合理想象,不是已验证的生产方案。函数级 Python 题的沙箱吞吐可能接近我们的估算,但 repo-level agent RL 的执行开销完全不在一个量级——需要 Docker image 构建、依赖安装、多文件项目 setup,单次执行从毫秒级跳到秒级甚至十秒级。
还有几个我们踩过的坑值得坦白:
第一个坑:coding reward ≠ 代码执行预测 reward。 我们早期把姚顺宇的话直接映射成了"执行预测",跳过了更直接的解读(code generation RL)。实际上 CodeI/O 也不只是沙箱 reward RL——它还用了 teacher-generated CoT 和 multi-turn revision。论文证明的是"代码 I/O 任务是好 reasoning data",不完全证明"只靠 interpreter reward 做 RL 就够了"。
第二个坑:"代码是唯一满足这些条件的信号"太绝对了。 形式化数学(Lean/Coq proof state)、SQL 查询、游戏/物理模拟器、编译器、定理证明器——都能给 verifiable reward。代码的突出优势是数据量、任务多样性、工程价值和自动执行的便利性,但它不是唯一的 verifier playground。
第三个坑:把 CWM 的证据简化了。 CWM 做的不只是函数级执行预测——它还包括 agentic Docker environments 的 observation-action trajectories 和 test-time scaling。SWE-bench 65.8% 是这些组合的结果,不是单独执行预测的功劳。
如果要在工程上实现
尽管有这些不确定,如果一家公司要从零实现这条线,大方向是可以画的。
出题系统。 三种数据源混合:GitHub 函数提取(冷启动、海量、低成本)、竞赛题(高难度、推理密集)、模型自生成(AZR 路线,自适应、天花板最高)。前期靠 GitHub,中后期提高自生成比例。
沙箱系统。 需要两层架构:函数级用轻量 microVM 池(Firecracker,启动快、开销低),工程级用预构建的 Docker image 池(项目级 setup、依赖安装)。两层面对的执行延迟完全不同——前者毫秒级,后者秒到十秒级。
Reward 设计。 三层叠加:最终输出对不对(稀疏)、逐步状态对不对(密集)、过程质量(格式奖励)。再加难度加权——已经会做的降权,完全不会的也降权(可能在猜),甜点区间全权重。训练算法用 GRPO,混合 70% 执行预测 + 20% 代码生成 + 10% 溯因任务。
和现有 RLHF pipeline 的衔接。 三阶段递进:Phase 1 代码执行预测(密集 reward 打底,学"脑内执行")→ Phase 2 代码生成(测试通过率 reward,学"写对代码",Phase 1 的脑内执行变成 self-verification)→ Phase 3 通用 RLHF(人类偏好做安全对齐)。
往后看
短期(6-12 个月):各家跟进。 CodeI/O、AZR、StepCodeReasoner 已经把方法论摊开了。靠这个拉开的 coding 差距会被快速抹平。
中期(1-2 年):训练范式变化。 如果跨域迁移继续成立,模型训练的标准流程可能会变成:不管最终想让模型干什么,先拿代码执行练一遍基础推理能力。代码执行变成通用推理的"预训练"——就像 ImageNet 曾经是所有视觉任务的起点。
长期:第一条不依赖人类数据的智能提升路径。 AZR 证明了 self-play + 代码执行可以不用任何人类数据就提升推理能力。代码可以自己生成,正确性可以自己验证,难度可以自己调节。这套循环一旦转起来,理论上可以一直转下去。
所有其他方向——RLHF、蒸馏、SFT——最终都回到人类标注或人类产出的数据上。但 verifier-grounded process supervision 不需要人类。
这个前景比任何单个公司的单个 trick 都重要得多。
尾声
回头看,我们像两个侦探追了一条线索——从一个"不能说"的秘密出发,追到六篇论文,拼出了一张比预期更大的图。
克里斯猜对了方向,但框得太窄。我们最初也框窄了——把 trick 归结成"代码执行预测",后来才意识到这是"verifier-grounded process supervision",代码只是当前最强的载体。
而姚顺宇说的那个"纯技术原因",很可能不是一个单一 trick,而是一整套 execution-grounded coding RL pipeline:execution traces 打底 → test reward 拉性能 → agent trajectories 接真实工程 → test-time scaling 放大能力。
这比任何单个 trick 都更像一个 frontier lab 会真的下注的东西。
朴素的东西最有生命力,大道至简。
ImageNet 也朴素——"给图片打标签"。verifier-grounded process supervision 也朴素——"让模型在脑子里跑代码"。但这两样东西各自改变了(或正在改变)一个时代。
当然,这也只是猜测。但这条暗线上的论文——从 CRUXEval 到 CodeI/O 到 AZR 到 StepCodeReasoner——正在一个接一个地把猜测变成证据。
核心参考:
- 克里斯,《我来猜一下姚顺宇说的 Claude 3 胜负手》 — 本文的起点 https://mp.weixin.qq.com/s/z4m0Z3ulKUViYYPaQtY-yg
- Scratchpad (Nye et al., 2021) — 执行过程追踪的开山之作
- CRUXEval (Gupta et al., Meta, ICML 2024) — 量化"模型不会跑代码"
- CodeI/O (Li et al., DeepSeek, ICML 2025 Oral) — 执行预测的跨域正迁移
- Absolute Zero Reasoner (Wu et al., NUS, NeurIPS 2025) — 零人类数据的 self-play
- Code World Models (Synnaeve et al., Meta FAIR, 2025.09) — 1.2 亿轨迹的生产级验证
- Self-Execution Simulation (Maimon et al., Meta FAIR, 2026.03) — 执行模拟反哺代码生成
- StepCodeReasoner (Tang et al., 2026.05) — 逐步状态追踪 + Bi-Level GRPO,7B 超过 GPT-4o
