← 返回 2026-09-11

递归代码世界模型:以递归场景程序构建复杂世界 Recursive Code World Models: Building Complex Worlds through Recursive Scene Programs

Zhiqi Li, Yuxuan Liao, Bo Zhu 📅 2026-09-10 👍 18 2026-09-12 18:30
3D场景重建 代码世界模型 场景程序生成 视觉语言编码代理 逆向图形学 递归智能体

让编码智能体递归执行“建立整体—解析局部—回访整体”,从单图重建可执行的复杂3D场景程序

前置知识

代码世界模型(Code World Model)

把世界表示为可执行程序而非像素或隐式向量:几何、材质、光照和空间关系都是显式代码元素,程序执行生成 3D 场景,渲染得到图像。代码可直接检查、编辑、复用组件,并能接入物理仿真。本文引用的 Code World Model(Chen et al., 2026)将代码维护的世界状态与视觉观察分离。

RCWM 的输出就是可执行的 Three.js 场景代码,整篇论文讨论的“世界”是程序而非网格或点云,理解这一表示是理解递归构造对象的前提。

图像到场景程序重建(image-to-scene-program)

从单张图像反推能生成该图像的场景描述:给定参考图 $I^\star$,寻找程序 $P$ 使其在参考相机 $\kappa$ 下渲染 $R(\mathrm{Exec}(P);\kappa)$ 与 $I^\star$ 在布局、外观、遮挡上一致。与开放生成不同,它要求复现图像中可见的具体形状与排布。

这是本文的任务设定,Table 1 的所有指标(PSNR/SSIM/LPIPS 等)衡量的都是渲染与参考图之间这种像素级一致性。

视觉-语言编码代理(vision-language coding agent)

能看图像、写代码、执行程序、观察渲染结果并继续修改代码的智能体循环。典型工作流是:读参考图→生成场景代码→执行渲染→把渲染与参考并排比较→定位差异→改代码,如此迭代。本文所有递归节点由冻结的 gpt-6-astra 经 Codex 命令行代理驱动。

RCWM 的求解器 $\mathcal{F}$ 完全由该代理的视觉判断驱动:编辑代码、决定递归下降、决定返回全部靠“看”,论文明确写道“eyes decide, metrics are only recorded”。

递归与调用树

函数调用自身的编程结构:每次调用处理规模更小的子问题,维护自己的局部状态,完成后返回调用者继续执行。所有调用构成一棵树,根是初始调用,节点深度表示递归层级。它与固定的“场景—物体”两阶段流水线的本质区别在于:每一层都完整重复同一过程,而非只做一次分解。

本文核心主张是“复杂世界构建应当是递归的”,式 (1) 与算法 1 的全部设计建立在调用—返回语义上,Figure 11 的调用树是理解其实际执行形态的关键。

图像重建评价指标(PSNR/SSIM/LPIPS/edge F1)

PSNR 是像素级峰值信噪比,越高越好;SSIM 衡量亮度、对比度、结构三方面的结构相似性;LPIPS 用 AlexNet 深度特征度量感知差异,越低越好;edge F1 在 Canny 边缘图上以 3 像素容差计算 F1,衡量结构轮廓对齐;CLIP ViT-B/32 嵌入余弦相似度衡量语义一致性。

Table 1、Table 2 的全部结论由这些指标支撑,理解其含义才能判断“PSNR 18.2 对 15.5 dB”这类提升幅度意味着什么。

研究动机

代码世界模型把世界表示为可执行程序,但表示本身并不决定“如何把一个复杂世界构建出来”。现有图像到场景程序的重建方法(VIGA、Thinking in Blender/SEIG、img2threejs)依赖单条重建轨迹,一旦世界的结构规模超出单条轨迹可解析的范围就暴露两难。论文用“从一张图像重建小镇”说明:街道和地形定义布局,建筑包含立面,立面又包含窗户、招牌和装饰。如果全场景一遍过,重复的整场景审查容易漏掉这些小结构;如果给小结构专门的重点重建,细节虽然更容易检查精修,但局部编辑并不独立——精修后的招牌可能错误遮挡邻窗,精修后的桥可能与河岸脱开;这类冲突即使初始布局协调也会出现,且往往只在把精修过的部件放回一起检查时才暴露,同样的张力在每一尺度上重复。实验数据印证了问题严重性:在 medieval-village 参考图上,VIGA 的 PSNR 仅 10.5 dB、LPIPS 0.601,SEIG 为 10.9 dB、LPIPS 0.541,最强的 img2threejs 也只有 15.4 dB,复杂场景的可执行重建远未解决。

本文的目标是本文的具体目标是:给定单张参考图像 $I^\star$,重建一个可执行、可参数化的场景程序 $P$(Recursive Scene Program),使其在参考视角相机配置 $\kappa$ 下满足 $S = \mathrm{Exec}(P)$、$\hat{I} = R(S; \kappa)$,且渲染出的布局、局部外观与空间关系和 $I^\star$ 中的可见证据一致。交付代码要求支持直接执行、参数编辑和从任意新视角渲染。更深一层,作者想回答一个计算组织问题:当世界包含的结构多于单条重建轨迹所能解析的规模时,编码模型应当如何组织其计算?作者给出的答案是一条通用构造原则——递归:把“建立整体→在未解析部件上递归调用同一求解器→回访整体精修组合”这一完整循环应用到每一个尺度,让细尺度结构拥有自己的感知-编辑循环,同时保持场景级几何与部件间关系。

与已有工作不同的是,本文的独特切入是把“部件”重新定义为“子世界”:一个部件不是生成后插入的资产,而是一个值得拥有完整重建过程的子世界——继承父级上下文、获得聚焦的视觉证据、完成后返回到包含它的整体。这与已有三条路线形成鲜明区别。VIGA 交错执行程序生成、执行与视觉验证,但过程不是递归的;Thinking in Blender(SEIG)用场景图初始化加固定因子阶段(几何、材质、构图、光照),本质是固定的重建序列;img2threejs 是面向单个过程化物体的参考驱动工作流。并发的 FuncRoom-Agent 虽然也引入递归,但使用领域特定的递归 DSL,并把构建轨迹蒸馏为室内场景专家;RCWM 则把递归表述为通用的世界构建原则——一个冻结的编码模型把同一完整视觉求解器应用于物体、交互组合体和连续地形,覆盖建筑细节、建筑、城镇和地形丰富的世界,不预设领域语义层级,递归完全保留在推理时进行。

核心方法

直觉上,复杂世界重建需要两类互补工作:对单个组件的精细打磨,以及反复检查组件如何拼合。RCWM 把两者组织成一个可在任何尺度完整重放的循环。技术上,输出表示是 Recursive Scene Program(RSP):把世界写成嵌套子世界的组合式场景代码,节点 $u_i^{(k)}$ 位于深度 $k$,父程序含局部构建过程、可编辑参数和子程序引用($P_i^{(k)}[j] = P_j^{(k+1)}$),共享资产通过代码引用访问,由参数化 Three.js 编译器执行。构造过程是递归求解器 $\mathcal{F}$:每次调用维护工作状态 $q_i^{(k)} = (P_i^{(k)}, I_i^{(k)}, \kappa_i^{(k)}, b_i^{(k)})$——候选代码、参考视图、匹配相机和剩余预算(含全部后代开销),并接收继承的组装函数 $C_i^{(k)}$,它能把候选组件放进父场景快照的周围环境渲染。求解器由冻结的视觉-语言编码代理驱动,每层执行相同三阶段:建立整体、递归解决未解析部件、组合精修并返回,形成全局—局部—全局的递归调用树。

核心创新有两点。其一,完整的感知-编辑循环被下放到每个细尺度结构:立面、建筑、地形区域不是被“补丁式”修改,而是各自经历一遍完整的建立整体—递归解决部件—回访整体流程(式 (1):建立整体 $\xrightarrow{\text{recurse}}$ 对下层部件调用 $\mathcal{F}$ $\xrightarrow{\text{return}}$ 回访整体)。这与“固定场景-物体流水线加最后清理”有本质区别:递归调用的是同一个求解器,每次子返回都触发父级对组装场景的重新检查与精修。其二,两套机制让递归在视觉上可行:(1) 参考对齐视图——子调用接收参考裁剪与相机裁剪 $\mathrm{CropCamera}_{W,s}(\kappa) = (R, t, H_{W,s}K, (sw, sh))$,两者用相同窗口坐标与放大倍率并继承父级姿态,为局部比较提供统一的形状、尺度、遮挡判断框架;(2) 父级回访——子返回后父级在自身深度渲染组装结果,联合检查接触边界、空间关系和共享错误(如精修招牌遮挡邻窗)。论文强调:递归决定哪些子问题获得完整求解,并行只改变兼容分支的调度。

方法步骤详情

算法 1 分五步。(1) 初始化:创建种子程序、确立世界坐标与单位约定,全帧目视校准参考相机;相机修订只能由根执行。(2) 建立整体:观察算子把候选代码放入继承环境执行渲染,代理将渲染与参考并排比较并迭代编辑,如建筑先确立立面排布再重建细节。(3) 递归构建部件:从未解析子集 $U_i^{(k)}$ 选子任务,为每个子选定窗口、放大率和预算(为父级回访预留),子继承组件代码 $P_j^{(k+1)} = \bar{P}_i^{(k)}[j]$ 与裁剪后的参考和相机,上下文由父快照经 $\mathrm{Compose}$ 递归组装,再调用同一求解器 $\mathcal{F}$。(4) 组合精修:把返回的子程序替换进父程序,渲染组装场景并联合修订几何、位置与共享结构,可重开受影响子任务;共享结构由拥有其依赖的祖先修复。(5) 终止:审查无可行动差异时返回,预算耗尽返回最新可执行状态。实现上每节点一次 Codex 会话,深度上限 5 层;指令还要求侧视图暴露“纸片墙”残留、按风格补全不可见结构并做四方位自检。

技术新颖性

新颖性有四点。第一,递归的完整性:以往方法要么把递归理解为场景分解(固定流水线拆物体再组装),要么是重复的程序编辑(VIGA),要么是固定的重建因子序列(SEIG 的几何/材质/构图/光照阶段);RCWM 的递归覆盖整个构建过程——同一求解器在每一层完整运行,返回后的父级精修是循环的必要环节而非收尾清理。第二,无需训练:与 FuncRoom-Agent 用递归 DSL 并蒸馏室内场景专家不同,RCWM 用冻结的通用编码模型在推理时递归,可迁移到物体、组合体与连续地形。第三,参考-相机配对代数:公式 (9)-(11) 形式化了“局部检查共享全局投影”,$\mathrm{CropCamera}_{W,s}(\kappa) = (R, t, H_{W,s}K, (sw, sh))$ 保证多尺度证据在同一坐标系比较。第四,与 Recursive Language Models 对照:RLM 的外部环境是静态上下文,RCWM 的外部环境是演化的可执行世界——子调用的返回会改变父级必须检查的场景本身。此外,预算 $b_i^{(k)}$ 计入全部后代开销,使递归深度有界且父级保留回访资源。

Recursive Code World Models. Top: the recursive construction process. At level k, the solver F establishes the current whole, calls the same solver on unresolved subworlds at level k + 1, and revisits and refines the whole after their results return. Bottom: one recorded construction path on medieval-village.
Figure 2: Recursive Code World Models. Top: the recursive construction process. At level k, the solver F establishes the current whole, calls the same solver on unresolved subworlds at level k + 1, and revisits and refines the whole after their results return. Bottom: one recorded construction path on medieval-village.
Visual inspection for recursive world construction. (a) Reference and camera crops use matching coordinates and magnification, with the camera pose inherited from the parent. (b) Overlapping windows inspect object details, spatial relationships, and contact boundaries.
Figure 3: Visual inspection for recursive world construction. (a) Reference and camera crops use matching coordinates and magnification, with the camera pose inherited from the parent. (b) Overlapping windows inspect object details, spatial relationships, and contact boundaries.

实验结果

实验用 5 个整场景加 5 个局部裁剪参考,各方法共用 gpt-6-astra。第一,保真度(Table 1):RCWM 在全部 10 个参考上 PSNR 与 LPIPS 最优,9/10 场景 SSIM 最高(例外 valley-village)。代表数字:city-full PSNR 18.2 dB 对最强基线 15.5,LPIPS 0.158 对 0.243;局部裁剪组优势更大,park-lake 达 PSNR 23.3 dB、SSIM 0.83、edge F1 0.99。第二,消融(Table 2):medieval-village 上自由深度递归扩到 3 层 33 节点,整帧 PSNR 从固定两层的 16.8 升至 19.0,局部 SSIM 从 0.52 升至 0.60,且优于全部非递归工作流;school-block 上自由深度只用两层、成绩相当,说明更深递归按需启用。第三,调用树(Figure 11)显示结构越复杂递归越深,从深度 2、9 节点到深度 4、169 会话。第四,Figure 10 从新视角渲染交付程序无需再优化,验证 3D 结构确实编码在程序中。

Reconstruction metrics for every method with a completed run; best per scene in bold.
Table 1: Reconstruction metrics for every method with a completed run; best per scene in bold.
Ablation study on two scenes, single runs on the same base model and scene compiler. Global fidelity is whole-frame PSNR/SSIM/LPIPS against the reference; local fidelity is the mean SSIM over eight fixed 2× detail windows. Best per scene in bold.
Table 2: Ablation study on two scenes, single runs on the same base model and scene compiler. Global fidelity is whole-frame PSNR/SSIM/LPIPS against the reference; local fidelity is the mean SSIM over eight fixed 2× detail windows. Best per scene in bold.
Whole-city case: full views (top) and six affine-aligned magnified windows from medium to small (below), all methods on the same base model and raw input. Reference: example composition of the CC0 “Isometric city” sprite pack (JanaChumi, 2017).
Figure 4: Whole-city case: full views (top) and six affine-aligned magnified windows from medium to small (below), all methods on the same base model and raw input. Reference: example composition of the CC0 “Isometric city” sprite pack (JanaChumi, 2017).
Medieval-village case: full views (top) and six affine-aligned magnified windows from medium to small (below), all methods on the same base model and raw input. Reference: WorldClaw Fig. 9 (Guo et al., 2026).
Figure 5: Medieval-village case: full views (top) and six affine-aligned magnified windows from medium to small (below), all methods on the same base model and raw input. Reference: WorldClaw Fig. 9 (Guo et al., 2026).
Reference and our result, full view on top and four magnified windows side by side: snow-village (left; WorldClaw Fig. 10) and island-harbor (right; WorldClaw Fig. 4) (Guo et al., 2026).
Figure 6: Reference and our result, full view on top and four magnified windows side by side: snow-village (left; WorldClaw Fig. 10) and island-harbor (right; WorldClaw Fig. 4) (Guo et al., 2026).
Reference and our result, full view on top and four magnified windows side by side: japan-island (left; WorldClaw Fig. 12) and valley-village (right; a crop of WorldClaw Fig. 15) (Guo et al., 2026).
Figure 7: Reference and our result, full view on top and four magnified windows side by side: japan-island (left; WorldClaw Fig. 12) and valley-village (right; a crop of WorldClaw Fig. 15) (Guo et al., 2026).
Reference and our result, full view on top and four magnified windows side by side: school-block (left) and police-corner (right), crops of the “Isometric city” sprite-pack example (JanaChumi, 2017).
Figure 8: Reference and our result, full view on top and four magnified windows side by side: school-block (left) and police-corner (right), crops of the “Isometric city” sprite-pack example (JanaChumi, 2017).
Reference and our result, full view on top and four magnified windows side by side: park-lake (left) and shop-row (right), crops of the “Isometric city” sprite-pack example (JanaChumi, 2017).
Figure 9: Reference and our result, full view on top and four magnified windows side by side: park-lake (left) and shop-row (right), crops of the “Isometric city” sprite-pack example (JanaChumi, 2017).
Additional views of the delivered scene programs. Each row renders one program from the reference camera, two azimuth rotations of 35°, a raised orbit, and two close-ups, through one generic camera harness and without any re-optimization.
Figure 10: Additional views of the delivered scene programs. Each row renders one program from the reference camera, two azimuth rotations of 35°, a raised orbit, and two close-ups, through one generic camera harness and without any re-optimization.
Solver-call trees reconstructed from runner-logged call and return events for four representative cases. The logged internal nodes follow the complete whole–parts–whole cycle. Trees for all ten scenes are released with the code.
Figure 11: Solver-call trees reconstructed from runner-logged call and return events for four representative cases. The logged internal nodes follow the complete whole–parts–whole cycle. Trees for all ten scenes are released with the code.
查看结构化数据
任务指标本文基线提升
整场景重建 city-full(参考视角) PSNR (dB) 18.2 img2threejs 15.5(最强基线);SEIG 14.5;VIGA 9.5 +2.7 dB
整场景重建 medieval-village PSNR (dB) 18.7 img2threejs 15.4;SEIG 10.9;VIGA 10.5 +3.3 dB
整场景重建 japan-island PSNR (dB) 19.3 img2threejs 16.6;SEIG 13.3;VIGA 12.9 +2.7 dB
整场景重建 island-harbor LPIPS(越低越好) 0.186 img2threejs 0.272;SEIG 0.516;VIGA 0.526 感知误差降低约 32%
局部裁剪重建 park-lake PSNR (dB) 23.3 img2threejs 18.4;VIGA 15.1;SEIG 12.3 +4.9 dB
局部裁剪重建 school-block Edge F1(Canny,3px 容差) 0.97 img2threejs 0.88;SEIG 0.80;VIGA 0.77 +0.09
消融:medieval-village 自由深度递归 vs 固定两层 整帧 PSNR (dB) 19.0(3 层、33 节点) 固定两层递归 16.8 +2.2 dB
消融:medieval-village 自由深度递归 vs 固定两层 局部 SSIM(8 个 2× 细节窗均值) 0.60 固定两层递归 0.52 +0.08

局限与改进

作者承认的局限:单视图输入使隐藏几何与绝对尺度存在歧义;视觉检查可能遗漏错误;重复精修与组件交互需要大量计算且收敛无保证;评估覆盖有限——10 个参考、每方法单次运行、单一基础模型(gpt-6-astra),消融仅两个场景。我的补充观察:其一,全部定量指标只评估参考视角的 2D 投影一致性,3D 几何正确性只有 Figure 10 的定性旋转检查,无深度或多视图真值;其二,参考图全是风格化素材(CC0 等距 sprite pack、WorldClaw 程序化渲染),非真实照片,真实图像域表现未知,等距视角也降低了透视难度;其三,valley-village 是明显困难案例(PSNR 14.1 dB、SSIM 0.38、LPIPS 0.583),连续地形仍难处理;其四,计算成本可观——valley-village 需 169 个会话、85 次调用,论文称兼容子任务“可以”并发但未报告实际并发与墙钟时间;其五,重建决策完全依赖模型目视(指令明确 metrics are only recorded),无量化停止准则,跨模型版本稳定性存疑。

独立分析的弱点

第一,计算成本随结构复杂度快速增长:valley-village 用了 169 个会话、85 次调用,而 school-block 只需 18 个会话,限制了向更大世界扩展。改进方向:真正并行调度兼容子分支、共享依赖去重、按视觉差异幅度自适应分配预算。第二,收敛无保证:审查-编辑循环理论上可能振荡或在两个差异间来回。改进方向:维护显式修复清单与状态机,引入停滞检测强制返回。第三,单次运行评估无法量化随机性:同一场景多次运行的方差未知,19.0 对 16.8 的消融差距可能部分来自运行波动。改进方向:每场景多 seed 重复并报告均值与方差。第四,评价体系偏 2D 投影:隐藏几何与补全结构(四面墙、完整屋顶)的质量没有定量检验。改进方向:利用参考图本身来自程序化生成器的特点导出多视图或几何真值,补做 3D 指标。第五,地形是短板:valley-village(SSIM 0.38)显示窗口化裁剪对连续表面不如对离散对象自然。改进方向:为连续表面设计自适应分区等专用子求解器。第六,相机单点校准:初始姿态误差会被所有子裁剪继承且只有根能修订。改进方向:多假设相机并行验证或分层重校准。

未来方向

作者提出的方向:构建更大的基准、进行重复运行、以及对空间关系做人类评估,以更强地评估重建质量与可靠性。基于其成果可延伸的方向:其一,把 RSP 的可编辑性用于下游——代码世界天然支持物理仿真与交互,可在重建世界之上接入动力学模拟或智能体导航,形成观察—重建—仿真闭环;其二,学习式调度:当前递归深度、窗口选择与预算分配完全靠模型判断,可用构建轨迹训练轻量策略决定何时下降、何时返回;其三,跨域轨迹利用:与 FuncRoom-Agent 的蒸馏思路互补,把 RCWM 的通用构建轨迹用于训练或微调,而不限于室内场景;其四,多参考输入:引入视频或多视角图像消除隐藏几何歧义,递归框架无需改动即可接纳更密集证据;其五,与 3D 生成先验结合:用多视图扩散模型为不可见结构提供候选补全,再由父级回访的一致性检查筛选;其六,程序空间搜索:RSP 支持参数编辑,可对子程序生成候选变体并按渲染误差择优;其七,增量式世界构建:让世界随新观察持续更新,递归的返回与重开机制天然适合局部重算。

复现评估

复现条件相对友好但有门槛。开源情况:附录 A.1 逐字公开求解器指令(solve(node) 完整提示词,含相机契约、子问题判定准则、四方位自检),附录 A 给出执行设置——每节点一次 Codex 会话、runner 启动子调用并唤醒父级、深度上限 5 层;正文明确“全部十个场景的调用树随代码发布”,但 preprint 未给出明确代码仓库链接,发布状态需跟踪。数据:10 张参考图全部公开可得——CC0 的 Isometric City sprite pack(OpenGameArt)与 WorldClaw 论文渲染图,无需训练数据。算力:不需要训练 GPU,成本集中在 gpt-6-astra 的 API 推理(每场景几十到一百多个会话,high reasoning effort),单场景估计数十至数百美元。难度评估:中高。算法 1、裁剪公式、上下文组装规则与完整指令足够详细,指令级复现可行;但 runner 的工程细节(会话管理、预算记账、文件 schema 约束)需自行实现,且行为高度依赖具体模型端点——模型更新后视觉判断质量可能漂移,这是 agent 类论文的共同复现风险。