论文精读|Code as Worlds:让 Agent 用可执行代码反推物理世界

原论文:Code as Worlds: Agentic Discovery of Executable World Representations for Physical Reasoning

作者:Hanyang Wang, Yimo Cai, Weiliang Chen, Jiawei Chi, Haowen Sun, Qiyu Dai, Yi-Hsin Hung, Xingzhuo Guo, Jinshan Ren, Runmao Yao, Ziwei Liu, Mingsheng Long, Yueqi Duan, Jun Gao, Jiangran Lyu, Fangfu Liu, Jialong Wu 等

arXiv: 2608.27549(v1,2026-08-27)|PDF项目主页代码

一句话结论:这篇论文不是让模型“看视频后猜一个答案”,而是让 Agent 把对物理世界的猜测写成可执行代码,真正跑一遍、渲染出来、与证据对齐,再用验证过的世界去训练定量物理推理模型。

这条路线最有意思的地方,是把“世界模型”从一个隐含在神经网络参数里的预测器,变成了一个可以检查、修改、执行和做反事实实验的程序。不过,它也没有解决所有问题:如果模拟器里根本没有真实世界所需的物理机制,Agent 仍可能得到一个“看起来很像、解释却是错的”世界。

一、Motivation:从“看见现象”到“解释机制”

视频模型已经能生成逼真的运动,视觉语言模型也能回答“哪个球运动得更快”。但一旦问题变成:

  • 这个球的速度究竟是多少?
  • 如果把质量增加一倍,碰撞结果会怎样?
  • 画面中物体的运动到底由什么力和约束造成?

单靠像素相似或语言描述就不够了。论文把现有表示的缺口概括成三层:

表示 擅长什么 缺少什么
像素 / 视频 保留丰富外观和运动现象 对象、物理参数和因果机制不显式
3D 几何 恢复形状、深度与相机 几何本身不能解释质量、摩擦、碰撞和状态演化
语言 表达对象关系与高层语义 难以承载连续、精确、可验证的数值状态

所以真正的缺口不是“现象看得不够清楚”,而是现象与机制之间没有一座可执行的桥

作者提出的答案叫 Executable World Representation(EWR,可执行世界表示):把对世界的假设写成代码,然后交给物理模拟器执行。模拟结果如果与文本或真实视频不符,Agent 就根据误差继续改代码。换句话说,这是一种带有执行验证的溯因推理:

观察到结果 → 提出最可能的世界假设 → 执行假设 → 比较结果 → 修正假设。

二、核心方法:一个世界由三段可执行代码组成

论文把一个可执行世界写成:

\[ p=(\mathcal{C},\mathcal{E},\mathcal{A})\in\mathcal{P}_{\text{exec}}. \]

其中三部分分别负责:

  1. 物理组成 \(\mathcal{C}\)(Composition):对象、几何尺寸、质量、摩擦系数、重力、地面、墙和支撑关系等。

  2. 动态演化 \(\mathcal{E}\)(Evolution):初始位置与速度、外力、状态变化、关键事件和模拟时长。执行后可得到轨迹、接触、碰撞、速度和终止状态。

  3. 视觉外观 \(\mathcal{A}\)(Appearance):相机、材质、光照、背景、帧率、分辨率和渲染配置。

这里追求的不是逐像素复制原视频,而是物理等价:只要代码捕捉了决定现象的对象、机制和尺度,就可以被执行、检查和修改。例如,把初速度从 2 m/s 改成 4 m/s 后重新运行,就能直接得到一个反事实世界。

2.1 两类输入,先变成证据

Code-as-World 支持从文本和视频构造世界,但进入发现循环之前,两者会走不同的证据提取管线。

文本输入会被整理为实体、空间关系、物理事件和预期结果。文本没有说明的尺寸、材质、相机等参数,则由常识先验和默认值补齐。

视频输入需要更具体的视觉证据:

  • SAM3 提供实例掩码与图像平面轨迹;
  • VGGT-Omega 估计深度和相机几何;
  • SAM3D 恢复对象几何;
  • 随后从这些结果中估计位置、尺度和动态,并把模拟轨迹重新投影回输入视频所在的图像平面。

这意味着论文的“发现”并非完全从原始像素端到端发生,而是建立在多个视觉基础模型输出的证据之上。

2.2 Agentic Discovery:提出—实例化—执行—渲染—验证

两类证据最终进入同一个迭代循环:

  1. Propose:Agent 根据证据提出或修改 EWR;
  2. Instantiate:把代码编译成模拟器可运行的参数;
  3. Execute:运行物理模拟,得到完整状态轨迹;
  4. Render:渲染 RGB、深度、掩码和轨迹;
  5. Verify:在关键帧比较输入证据与预测证据,形成诊断反馈;
  6. Refine / Accept / Reject:继续修正,或接受当前世界;达到轮数上限仍不成立就拒绝。

论文把最大迭代次数设为 \(K=5\)。这个设计很重要:Agent 不是一次生成“看起来合理”的代码就结束,而是在执行反馈下做局部修改。实验也用相同的五次评估预算与独立采样的 Best-of-5 比较;到第 5 轮时,迭代发现方案在视觉对齐、对象 IoU、轨迹误差和 Accuracy@2%D 等多数指标上更好,说明计算预算花在“诊断后修正”上,比花在互不相关的重复采样上更有效。

三、验证过的世界,如何变成物理推理训练数据

得到 EWR 只是第一步。作者进一步执行这些世界,自动获得对象状态和物理量,再把它们变成带精确答案的 VQA 数据。

整个训练分为两阶段。

3.1 第一阶段:学习图像空间的测量

模型先学习对象定位、尺寸、位移、速度和加速度。对于对象中心轨迹 \(c_t\)

\[ d=c_{t_2}-c_{t_1}, \]

\[ v_t=\frac{c_{t+1}-c_{t-1}}{2\Delta t}, \]

\[ a_t=\frac{c_{t+1}-2c_t+c_{t-1}}{\Delta t^2}. \]

这一阶段使用 73,335 个图像空间 QA,包括 GOT-10K 的 46,763 个问题,以及 RefCOCO、RefCOCO+、RefCOCOg 和 RefCLEF 合计 26,572 个问题。监督目标是标准的答案似然:

\[ \mathcal{L}_{\text{pix}} =-\mathbb{E}\left[\log \pi_\theta(y\mid V,q)\right]. \]

3.2 第二阶段:从像素量变成世界量

单目视频中的像素位移不能直接等于厘米或米。论文使用已知参考物 \(\rho\) 及其像素长度 \(\rho_{\text{pix}}\) 做尺度标定:

\[ \gamma=\frac{\rho}{\rho_{\text{pix}}},\qquad y=\gamma y_{\text{pix}}. \]

第二阶段在文本驱动的 1,585 个世界和视频驱动的 988 个世界上训练,共 2,573 个 world-space VQA。模型用 GRPO 优化,数值奖励为:

\[ r_{\text{num}} =\exp\left( -\frac{|\hat y-y|}{|y|+\epsilon} \right), \]

总奖励还加入单位与格式奖励:

\[ r=r_{\text{num}}+\lambda_u r_{\text{unit}}+\lambda_f r_{\text{fmt}}. \]

值得强调的是:27B 模型测试时只看视频和问题,没有访问 EWR、模拟器状态、轨迹、外部工具或真实测量值。可执行世界在这里扮演的是训练监督生成器,而不是测试时外挂。

四、具体数值推演:从一段台球视频算出 26.8 cm/s

论文给出了一个真实的台球案例。我们把整个流程用具体数字完整走一遍。

4.1 构造并验证世界假设

视频里有一颗标准台球。视觉证据给出:

  • 台球真实直径:\(\rho=57.2\text{ mm}\)
  • 图像中台球直径:\(\rho_{\text{pix}}\approx53\text{ px}\)
  • 一秒内球心位移:\(d_{\text{pix}}\approx248\text{ px}\)
  • 时间间隔:\(\Delta t=1\text{ s}\)

Agent 可以把这些信息写进 EWR:球的几何直径为 0.0572 m,设置初始位置、速度、桌面和相机,运行后将模拟球心轨迹投影到图像。若渲染轨迹没有覆盖真实轨迹,验证器就把方向、速度或相机尺度误差反馈给 Agent,继续修改代码。

4.2 像素—世界尺度标定

每个像素对应的真实长度是:

\[ \gamma =\frac{57.2\text{ mm}}{53\text{ px}} \approx1.07925\text{ mm/px}. \]

4.3 计算真实速度

一秒内的真实位移为:

\[ d =248\text{ px}\times1.07925\text{ mm/px} \approx267.65\text{ mm}. \]

因此速度为:

\[ v =\frac{267.65\text{ mm}}{1\text{ s}} =267.65\text{ mm/s} \approx26.765\text{ cm/s}. \]

四舍五入后得到 26.8 cm/s。论文给出的真实答案是 26.82 cm/s,两者几乎一致。

4.4 代入训练奖励

令预测 \(\hat y=26.8\)、真值 \(y=26.82\),忽略极小的 \(\epsilon\)

\[ r_{\text{num}} \approx\exp\left(-\frac{|26.8-26.82|}{26.82}\right) =\exp(-0.000746) \approx0.99925. \]

也就是说,这个答案会获得接近 1 的数值奖励。论文没有给出 \(\lambda_u\)\(\lambda_f\) 的具体取值,因此无法诚实地计算最终总奖励;只能确认单位和格式正确时还会获得两项附加奖励。

这个例子揭示了整套方法真正的链条:

视频证据 → 对象与轨迹 → 可执行世界 → 运行与验证 → 像素尺度 → 真实物理量 → VQA 监督。

五、实验结果:有效,但要看清比较边界

5.1 QuantiPhy 主结果

论文在 QuantiPhy 的 159 个验证问题上报告 Macro MRA。MRA 会在多组相对误差阈值下统计预测是否合格,越高越好。

模型 参数量 Macro MRA
Qwen3-VL-32B-Instruct 32B 40.2
ChatGPT-5.1 未公开 48.4
Gemini-3.1 Flash 未公开 54.8
Code-as-World-VL-4B 4B 50.6
Code-as-World-VL-9B 9B 55.4
Code-as-World-VL-27B(Reasoning) 27B 58.6

9B 版本以 55.4 略高于 Gemini-3.1 Flash 的 54.8;27B 版本达到 58.6。不过作者明确提醒:27B 同时改变了模型规模和推理协议,因此 9B 到 27B 的增益不能归因于“推理”这一项单独因素。

5.2 世界空间数据确实提供了额外监督

训练数据 4B 9B
仅 Image-Space 44.2 50.9
+ Text-Driven Worlds 48.5 52.5
+ Video-Driven Worlds 47.8 53.1
Text + Video 完整模型 50.6 55.4

相对仅使用 Image-Space 数据,完整训练让 4B 提升 6.4 分、9B 提升 4.5 分;文本世界与视频世界组合时最好,支持两类监督具有互补性的主张。

这里有一个需要主动指出的论文内部不一致:Table 4 与主结果 Table 1 都写 9B 完整模型为 55.4,但 Table 4 下方正文却写成从 50.9 提升到 56.8。由于两个表格相互一致,本文采用 55.4,并把正文中的 56.8 视为疑似笔误,而不是另一个实验结果。

5.3 图像空间能力也受益

加入世界空间训练后,9B 模型在 RefCOCO、RefCOCOg、RefCOCO+、RefCLEF、GOT-10K 上分别从:

\[ 63.7,\ 61.1,\ 61.5,\ 47.2,\ 20.1 \]

提升到:

\[ 68.3,\ 65.6,\ 66.4,\ 61.9,\ 26.6. \]

这说明可执行世界监督没有只教会模型输出最后一个标量,也反过来改善了对象 grounding 和图像空间测量。

六、最具创新的点是什么

我认为最具创新的并不是“让 LLM 写模拟器代码”本身,而是把可执行程序变成感知证据与物理解释之间的验证接口

具体说,它把三个长期分离的环节接到了一起:

  1. 可解释的世界假设:组成、动力学和外观都显式存在于代码里;
  2. 以执行为基础的溯因发现:假设必须经模拟和渲染接受证据检验;
  3. 可扩展的定量监督:验证过的世界天然带有精确状态、轨迹和物理量。

因此,同一个表示既能回答“世界为何这样运动”,又能生成训练样本,还能通过改质量、速度或相机做反事实实验。相比只在 latent space 里预测下一帧,这种表示的优势是可审计、可编辑、可运行;相比一次性的程序生成,它又多了真实证据闭环。

七、不足与可能的改进

7.1 模拟器边界会变成认知边界

论文自己最坦率的限制是:真实物理远比当前模拟器复杂。地形、接触几何、材质和潜变量的微小变化,都可能显著改变刚体运动。如果真实机制不在模拟器能力范围内,循环可能收敛到一个视觉上合理、机制上错误的局部解。

改进方向:允许 Agent 在多个模拟器、神经残差模型和解析物理模块之间做模型选择;对解释不了的部分显式保留 residual,而不是强迫所有现象进入既有刚体假设。

7.2 单个视频往往无法唯一确定机制

不同的质量、摩擦与初速度组合可能产生近似相同的二维轨迹,这属于结构性的不可辨识问题。返回一个最优 EWR 容易制造“答案唯一”的错觉。

改进方向:维护一组带置信度的候选世界,而不是单点估计;主动寻找最能区分候选假设的反事实干预;引入多视角、额外帧或已知尺度作为信息增益最大的观测。

7.3 前置视觉模型的误差会级联

SAM3、VGGT-Omega 和 SAM3D 一旦在掩码、深度、相机或网格上出错,后续 Agent 可能用错误的物理参数去补偿错误的视觉证据。

改进方向:把上游输出从确定值改成带不确定性的分布,在验证时联合优化相机、几何与动力学;增加跨模块一致性检查,例如深度、轨迹和渲染轮廓不能互相矛盾。

7.4 评测范围还窄

QuantiPhy 验证集只有 159 个 QA,集中在单目尺度标定下的尺寸、位移、速度和加速度;相机运动、旋转、形变、遮挡、复杂接触、摩擦、流体和长期多物体交互仍未被覆盖。

改进方向:建立以“机制泛化”为核心的评测——训练和测试在外观上可以相似,但在物理参数组合、对象数量和因果结构上必须不同;同时加入系统外机制,测试模型能否识别“当前模拟器无法解释”。

7.5 发现循环尚未内化到 VLM

最终 VLM 学到的是验证世界产生的答案,但“提出假设—运行模拟—诊断—修正”的能力仍在外部 Agent 系统里。它是否真正学到了物理机制,还是学会了数据分布中的数值模式,仍需更强的因果测试。

改进方向:把 EWR 生成与执行轨迹作为可选的中间监督;让模型在测试时按需调用模拟器,并比较“直接回答”“显式发现”和“混合策略”的成本—准确率曲线。

7.6 可复现细节仍不完整

论文给出了 27B GRPO 的多项配置,但没有报告奖励中 \(\lambda_u\)\(\lambda_f\) 的具体值;4B/9B 的全部训练细节、随机种子方差也不足。另外,55.4/56.8 的内部数值冲突应在后续版本修正。

改进方向:公开完整配置、数据生成版本、失败与拒绝样本、各轮 Agent 修改记录,并报告多次运行均值与方差。对于 agentic 系统,只有最终分数而没有发现轨迹,很难判断提升究竟来自物理推理还是工程筛选。

八、我的判断

Code-as-World 最值得关注的,不是它在一个 159 题验证集上领先了多少,而是它提供了一种很清晰的系统范式:

不要把世界表示仅仅当作“用来预测的内部状态”,而要把它变成一个能接受证据审判的可执行解释。

如果这条路线继续发展,未来的世界模型可能不会在“纯神经视频模型”和“传统物理引擎”之间二选一。更可能的形态是:神经模型提出结构与残差,程序表示承载可检查机制,模拟器负责执行,验证器用真实观测持续校准。

这篇论文已经把这个闭环跑通了一个有说服力的原型;下一步真正困难的问题,则是如何处理不可辨识性、模拟器之外的物理,以及如何把外部发现循环逐步变成模型自身可泛化的推理能力。


论文精读|Code as Worlds:让 Agent 用可执行代码反推物理世界
https://kissshhot.github.io/2026/09/01/code-as-world-executable-physical-representations/
作者
丁一帆
发布于
2026年9月1日
许可协议

点赞与评论

喜欢这篇文章?点个赞,或留下你的想法。登录 GitHub 后即可参与。

如果评论无法加载,请检查网络连接后刷新页面。