来源公布的内容

2026 年 10 月 2 日,一位首次在 Hacker News 发帖的开发者 anteloc 分享了开源项目 ldraw-nova:一套教 AI 智能体设计乐高模型的工具链。这场实验始于 2025 年 12 月左右,出发点很简单——能不能让 ChatGPT 和 Claude 写 LDraw 语言的源代码?经过几个月的反复迭代,答案是:能。

LDraw 按作者的说法,字面意义上就是一门“汇编语言”:一种低层语言,一行一条拼装指令,描述乐高零件如何组装成模型。用 LDView、LeoCAD、Studio 这类工具执行这些指令,就会得到可以打开、查看、修改的乐高 CAD 模型。换句话说,一个 .mpd 或 .ldr 源文件,就等价于一个完整的乐高 CAD 模型。

核心想法简单得有点狡猾:只要智能体能生成高质量的 LDraw 源文件,它就是在生成高质量的乐高 CAD 模型。作者用 GPT-6 Astra 和 Opus 5.5 做出了一套 Python 工具集,外加给智能体的指令和文档,全部打包成 Docker 网页应用,可选 OpenAI、Claude、OpenRouter 三家供应商,并在 anteloc.github.io/index-samples.html 放出了成果画廊——星际战斗机、五重塔庭园、安-225 运输机都在其中。

智能体生成的 B-wing 星际战斗机 LDraw 渲染图
智能体生成的 B-wing 星际战斗机,由它产出的 LDraw 源码渲染(图片来源:anteloc 样例画廊)

还有个好玩的“读心术”:用文本编辑器打开任意一个生成的 .mpd 文件,找到以“0 FILE”开头的行,看它下面第一行——那就是智能体设计这个模型时“脑子里想的画面”。

智能体生成的五重塔樱花庭园乐高模型
智能体生成的五重塔樱花庭园,由智能体编写的 LDraw 代码渲染(图片来源:anteloc 样例画廊)

项目如今已经进化到了新形态。现在的 ldraw-nova 不再要求模型直接做几何数学,而是给智能体铺了一条“最小阻力路径”:智能体只管写普通的 JSON 计划(需要循环和计算时就写 Python 生成器),找零件、几何校验、渲染预览、零件清单对比这些脏活累活全部交给工具链。

智能体用乐高零件拼出的安-225 运输机
智能体用乐高零件拼出的安-225 运输机(图片来源:anteloc 样例画廊)

资料:[1] [2]

跟着做:生成你的第一个乐高模型

  1. 准备代码和零件库:克隆 ldraw-nova 仓库,安装完整的 LDraw 零件库,并在 PATH 里装好 LeoCAD 和 Poppler(pdftotext)——预览渲染和校验都依赖它们。
  2. 先做健康检查:运行一次 ./setup.sh,然后执行 ./ldraw-agent doctor,确认 Python 3.12+、零件库、LeoCAD、Poppler 都被正确找到。
  3. 先跑一轮试评审:执行 ./ldraw-agent review examples/bridge.plan.json --outdir output/bridge-review,再打开 output/bridge-review/previews/ 里的 PNG,看一份完整的评审包长什么样(模型本体、校验报告、Python 版 BOM、LeoCAD 版 BOM 对比)。
  4. 写设计简报:选一个辨识度高的题材,用自然语言写清轮廓、尺寸、配色、视觉焦点和搭建顺序——这份简报连同 instructions.md 一起交给智能体。
  5. 从最小可用模块开工:把想法和 instructions.md 交给智能体,让它写 JSON 计划(重复几何就用 Python 生成器),然后运行 ./ldraw-agent build output/my-model.plan.json——只有源码和几何检查全过,MPD 文件才会被写出来。
  6. 评审、修复、重复:运行 ./ldraw-agent review output/my-model.mpd,打开渲染预览图,回到源码计划里修问题(别直接改生成产物),反复评审直到检查通过、缩略图看着顺眼。
  7. 想省事就用网页版:克隆配套的 ldraw-nova-docker 仓库(tag 要和主仓库对上),docker compose build && docker compose up -d,然后打开 http://localhost:8765,选 OpenAI、Claude 或 OpenRouter 当供应商——不用在本地折腾零件库。

资料:[1]

正文详解

背景文档讲清了真正的目标:让智能体语言模型具备设计“能真实拼出来”的物理物体的能力。LDraw 被选中的理由是它简单、低层、可执行——和程序员喜欢汇编语言是同一个道理。意外的是,尽管 LDraw 重度依赖数学(零件旋转、定位),而语言模型通常不擅长数学,智能体在初期测试里的表现却好于预期,只是“好”还远远不够到可以信任的程度。

在现在这个版本之前有过三次尝试:ldbuilder-ai 做初期研究,py2bricks 和 py4bricks 是两代智能体 Python 工具。它们沉淀出两个结论,塑造了之后的一切。结论一:存在一条绕过几何数学的最小阻力路径——给智能体趁手的工具,让它彻底绕开几何数学,因为智能体“写出能算出数学的 Python 代码”远比“自己算数学”强。结论二:智能体从“能生成模型的 Python 代码”里学到的东西,比从“模型本身”里学到的多。于是剩下的工作就是造一套带基本构件、动词和构造词汇的 Python 工具,让智能体照着例子学——这事极难一次做对,直到 GPT-6 Astra 和 Claude Opus 5.5 到来才真正跑通。

HN 评论区补了很多质感。一位评论者提到一篇用 LLM 驱动 LDraw 建模的 Arxiv 论文,作者回复说自己也试过“限定零件集合”那条路:几何是对了,但约束太多时智能体每次都造出几乎一样的楼,约束太少又会飘成拼不出来的东西。被问到 token 成本时,他说这取决于模型为摆对位置要做多少思考,Technic 机械组模型通常最烧钱。他还提到自己也在用 FreeCAD 加 freecad-mcp 配 Claude 做实验,但零件一多 FreeCAD 的求解器就慢得扛不住。

几个局限作者都摆在台面上。智能体目前只校验“零件摆没摆对”,不校验物理和结构稳定性;Technic 固定结构已经能做,但带齿轮、传动机构的真正可动机械还是“目标”而非“成品”。校验管线自己的文档也写明 physical_validity: not_proven——语法对、预览图好看、BOM 对得上,都是证据,不是“真能拼出来”的证明。

社区反响从务实到哲学都有:家里有积灰乐高的人想要“只用我手头有的零件”约束模式,有人想要个“拍一张零件堆照片自动盘点收藏”的工具,也有人坦言“LLM 伸进乐高这种纯想象世界,让人有点不适”。

资料:[1] [2]

如何解读

这里真正重要的是架构选择,而不是表面功夫。项目没有逼语言模型去擅长空间数学,而是用工具链把模型的长处——照着例子写结构化代码——翻译成这个领域的原生表达。这条“绕开数学”的经验可以迁移到乐高之外:凡是智能体在某个形式化领域先天弱,就给它一个生成器加一个检查器,而不是要求它直接精通。

第二要看的是交付物是什么:不是一张乐高模型的图片,而是一个能在真实 CAD 工具里打开、继续编辑的 .mpd 源文件。这就是 demo 和工作流的区别——文件里带着作者信息、零件清单和评审记录,人类可以在智能体停下的地方接着干。

最后,这个项目的诚实本身就是一种特性。先把“检查只是证据不是证明”“稳定性还没验证”摆出来,反而让这套工具链值得反复迭代。画廊里的渲染图很抓眼球,但真正的产品是那个循环:构建、渲染、看图、修源码。

阅读要点

LDraw 是乐高界的低层可执行“汇编语言”:一行一条拼装指令,一个 .mpd/.ldr 文件在 LDView、LeoCAD、Studio 里打开就是完整 CAD 模型。

ldraw-nova 的洞察:智能体不擅长几何数学,但擅长写出能算出数学的 Python——所以给它 JSON 计划、Python 生成器和评审管线,别让它直接手写 LDraw。

标准循环:设计简报 → 智能体写计划 → 构建跑源码与几何检查 → 评审渲染预览并对比 BOM → 人看图、回源码修。

两种玩法:本地跑(Python 3.12+、零件库、LeoCAD、Poppler),或 Docker 网页版开在 localhost:8765,供应商三选一:OpenAI、Claude、OpenRouter。

用文本编辑器打开 .mpd,看“0 FILE”下面第一行,就能读到智能体设计时“脑子里想的画面”;记住校验只是证据,不是真能拼出来的证明。

资料:[1] [2]