BrickWright: Agentic Creation of Physically Feasible Brick Builds
Ava Pun, Kevin Dai, Sally Chen, Maxwell Jones, Ruixuan Liu, Kangle Deng, Changliu Liu, Maneesh Agrawala, Deva Ramanan, Jun-Yan Zhu
cs.CV
2026-10-23
让预训练 agent 写代码拼乐高,配自动物理校验器,512 条提示上有效率从最低 8.6% 全部提到 100%,成本几乎不变。
让 LLM agent 做数字世界的 3D 建模已经不难,不微调就能产出带关节的物体和完整场景。一旦目标换成要在现实里拼出来的东西就露馅了:以乐高为例,合格作品必须全用真实零件、零件间不穿透、不悬空、连成整体,而基线 Codex 搭 GPT-6 Astra 的合格率只有 69.3%,轻量的 GPT-6 Luna 只有 8.6%。agent 不是不努力,Codex 里的 Astra 超过 80% 的情况会自己写脚本去生成并校验输出,但自制校验兜不住物理约束,成品照样碰撞、悬空、散架。专用模型路线(BrickGPT、BrickNet)把约束训进网络,泛化和保真又不如商用 agent。
核心洞察是把「代码即 3D 模型」的 agentic 范式和乐高零件的规律性结合:每个零件都是带类型化连接器的几何体,凸点(stud)与凹槽(antistud)怎么咬合是可写成程序的规则。于是不需要微调,给预训练 agent 一个好用的工具包加一个能跑的校验器就够。
工具包 BrickLayer 是个 Python 库,三块能力:
BrickWright 本体是很薄的 harness:agent 写一个 build.py,内含 createbuild() 和自写的 runtests(),循环调用 validate(固定物理检查加自写测试)、render(多视角渲染)、finalize(收工)。系统提示里只有 BrickLayer 文档和这套循环的说明,没有示例也没有搭建技巧;权限反而比基线小,基线 Codex、Claude Code 能任意读写执行文件、看全量 LDraw 文档和零件库,这里只能改 build.py 和跑纯文本输出的代码片段。不直接写 LDraw 的原因:该格式只记录零件绝对位姿,想让两个连接器咬合得手算坐标,消融里被迫用它时 token 成本约翻倍、校验调用约三倍。
在 BrickNet-512 上评测(512 条文本提示,由 VLM 给人造乐高作品写描述得到),全部 agent 开 High reasoning:
| 配置 | 物理有效率 | 单次成本 |
| Codex · GPT-6 Luna | 8.6% | $0.02 |
| BrickWright · GPT-6 Luna | 100% | $0.03 |
| Codex · GPT-6 Astra | 69.3% | $1.21 |
| BrickWright · GPT-6 Astra | 100% | $1.28 |
| BrickNet(专用模型) | 31.8% | — |
| Articraft 改造版 · Astra | 69.3% | $3.00 |
拆开两个组件看:拿掉校验器(仍要求物理有效,可自己写检查),最好的 Sol 也只有 77.9%,Haiku 58.6%,Luna 52.9%;拿掉装配 API 强制写 LDraw,Sol 保持 100%,Luna 99.6%,Haiku 82.2%,但 Luna 平均零件数从 27.4 掉到 7.2,作品明显缩水;只给 API 不给校验器,就已比裸基线最多高 44 个百分点(Luna 8.6% 到 52.9%)。
贴合度用 VQAScore、Perception Encoder、SigLIP 2 三种图文相似度打分:轻量模型上升(Haiku 的 VQAScore 0.603 到 0.652,Luna 0.650 到 0.694),Sol、Astra 持平。多数 agent 平均只需 2 到 3 次 validate 调用,Luna 要 4 到 5 次。有效率数字另请一位懂乐高设计的人复核了边界案例,上表为复核后结果。专用模型侧,BrickGPT 有效率 99% 但平均碎成 2.67 块、贴合度差得多(只支持 8 种矩形砖、21 类物体)。框架还支持图像条件生成、29,667 块零件的大场景、可动关节作品、编辑已有脚本、限定 20 种砖的生成,这些只做了定性展示。
可迁移的结论:约束可以写成可执行检查的领域(碰撞、连通、库存),「好用的 API + 校验器 + 修改循环」能替代任务级微调,且在 Haiku 到 Astra 四个能力档位都成立。轻量模型受益最大,Luna 配上工具后 100% 有效、贴合度还上升,单次 $0.03,约是 Astra 套件价的 2%。产出是标准 LDraw 文件、全真实零件,能直接照着买件拼装。代价是慢,单次 143 到 415 秒,BrickNet 推理约 5 秒,要吞吐还是专用模型划算。配方不新,plan-execute-validate 是老套路;新的是把连接器规则做成确定性校验并量化到 100%,以及「API 自己就贡献了约一半提升」这个发现。
作者自述:可行性定义不覆盖装配顺序的可执行性和受力稳定性,连通无碰撞的作品仍可能拼到一半就垮;agent 方法比专用模型慢且贵;把强 agent 能力蒸馏进小模型留给未来。另有几处读下来存疑:100% 的裁判是 BrickLayer 自己的校验器,人工复核只覆盖被自动标记的案例,生成器和裁判共用同一套形式化;贴合度靠嵌入和 VQA 相似度,对结构细节不敏感;512 条提示来自 VLM 描述人造作品,题材偏常见物体,大场景和可动关节没进定量评测;Astra 的消融因预算缺席。