aDSL:智能体与领域特定语言联合设计的3D内容生成 aDSL: Agentic 3D Creation via Joint Agent-Program Design
联合设计面向LLM的DSL与多智能体系统,用空间关系算子取代脆弱坐标,实现可靠3D创作
前置知识
构造实体几何(CSG)
CSG 通过布尔运算(并、交、差)组合参数化基元(立方体、球、圆柱)构造复杂实体,例如「立方体减去圆柱」得到带孔平板,结果是一棵保留层级结构的可编辑运算树。aDSL 的 boolean_union/intersection/difference 算子即基于此机制。
aDSL 的表达力完全建立在 CSG 之上,图 2 的组件制造流程与论文中所有复杂形状的构造方式都依赖它,理解它才能看懂 aDSL 程序如何从简单基元搭建复杂几何。
领域特定语言(DSL)
为特定领域量身设计的小型编程语言,用贴近领域概念的词汇和算子替代通用语言的大量底层 API。aDSL 嵌入 Python 宿主,复用其类机制与控制流,同时暴露 align_anchors、distribute_along_axis 等面向 3D 建模的声明式高层算子。
论文的核心主张是「表示与智能体系统需联合设计」,理解 DSL 相对通用脚本(如 Blender Python)在抽象层级与可验证性上的差异,是理解其动机与实验对照的前提。
LLM 智能体与 Plan–Execute–Critic 循环
LLM 智能体在循环中交替进行规划、行动(调用工具、写代码)与观察,完成长程任务。Plan–Execute–Critic 范式:先输出结构化任务分解与可检验约束,再生成并执行代码,最后基于执行反馈检查修正,思想与 ReAct、Reflexion 一脉相承。
本文多智能体系统完全建立在该循环上:Planner、Coder、Executor、Debugger、双 Critic 的分工与反馈机制均由此展开,消融实验也直接验证了各环节的必要性。
AABB 与空间关系算子
AABB 是包住几何体的最小轴对齐长方体,由中心、尺寸、各轴最值描述。aDSL 把 AABB 查询(shape_center、shape_anchor 及命名锚点)作为一等公民,其上提供 align_centers、place_on_axis、distribute_along_axis 等声明式布局算子。
这是 aDSL 区别于先前 3D DSL 的关键设计,也是表 4 消融的主角:去掉空间算子后修正轮数上升、VQA 下降,是「联合设计」论点的直接证据。
文生3D评估指标(CLIP-Score / VQAScore / FID)
CLIP-Score 计算输入文本嵌入与多视角渲染嵌入的余弦相似度,衡量全局语义一致;VQAScore 用 CLIP-FlanT5 判断渲染是否在视觉上蕴含文本,对细粒度属性更敏感;FID 用 Inception-v3 特征衡量生成与真实分布的距离,反映感知质量。
论文定量结论(表 1、表 3)全部由这些指标构成,且不同方法互有胜负(场方法 FID 更优),理解每个指标度量什么才能正确解读成绩与权衡。
URDF 与铰接体(Articulation)
URDF 是描述机器人连杆与关节(转动 revolute、滑动 prismatic、固定 fixed)层级、轴向与限位的标准格式。aDSL 允许在资产层次上通过 Asset.revolute 等方法挂载关节,使同一份程序同时定义几何与运动,可直接导出标准化 URDF 模型。
铰接体生成是论文核心下游应用之一(图 7 的 CNC 机床、水龙头等),体现程序化表示独有优势:功能与结构显式编码在代码里,场生成方法做不到。
研究动机
基于 LLM 的智能体式 3D 创作虽然承诺可控、可编辑、可解释,但实际表现脆弱:结果常偏离用户意图,迭代修正中甚至越改越差。作者将这种脆弱归因于程序化接口与 LLM 推理能力的错配。让智能体直接编写 Blender Python 脚本或参数化 CAD 代码,表达力虽强,但抽象层级太低:智能体必须处理大量底层 API 调用与脆弱的绝对坐标,微小的局部修改会引发不成比例的几何变化,对称性、支撑接触等功能约束在代码中是隐式的、难以校验。过程化/规则式系统(如 Infinigen)参数可控、结果可靠,但规则集靠专家手工打造,难以扩展到新类别、新风格与细粒度语义约束。论文举例:生成椅子时智能体容易推断「四条腿应在座位下方、连接四角」,却给不出腿与座位的精确数值坐标;仅提升语言表达力并不够,很小的数值误差就会造成几何失效(腿悬空)或违反设计约束(失去接触)。近期 DSL 工作(ShapeCraft、Scene Language、AIDL)改善了表达力,却隐含假设 LLM 能可靠编写并修订合法程序,忽视了智能体系统如何利用 DSL 结构做稳健的生成、验证与修复。
本文的目标是本文目标是通过「表示与智能体系统的联合设计」,构建一个免训练(training-free)的 3D 内容创作框架:给定高层文本描述或一张图片,系统自动生成满足规格、结构化、可控且可解释的可执行 3D 程序。为此设定三个语言设计目标。其一是表达力:用参数化基元(cube、sphere、cylinder)、布尔运算与几何变换覆盖多样形状与结构,支持 CSG 式加法装配与减法雕刻。其二是可组合性:以命名父子部件层次(Python 类)组织资产,支持组件复用、局部修改与跨层级增量构建,并自然延伸到铰接体的关节定义。其三是空间推理:让智能体用「把 A 放到 B 上面」「沿 x 轴以 0.1 间距分布」这类关系算子表达布局,而非手算脆弱的绝对坐标。在此表示之上,系统还需支持 Plan–Execute–Critic 迭代闭环:分解请求、合成代码、执行获得几何与可视化证据、自动检测违规并修复,直到约束全部满足或达停止条件(最多 $R=10$ 轮),同时保留用户介入与定向编辑接口,并在文本生成形状、图像生成形状两任务上超越现有 LLM 基线。
与已有工作不同的是,本文的独特切入是「联合设计」(joint design):不把 DSL 当作被动输出格式,而让同一表示充当规划、编码与评审三种角色之间的共享接口。作者观察到 LLM 擅长把复杂资产分解为层次化组件、推理空间与结构关系,却不擅长产出精确的底层数值参数;而先前工作几乎只聚焦表达力这一个维度,默认智能体能可靠写对程序。aDSL 在表达力之外强调可组合性与空间推理:Planner 以 aDSL 词汇输出可检验约束,Coder 用声明式算子实现,Critic 执行后用同样的代码结构复核同样的关系——生成–验证–修复循环因此锚定在语言语义上,而非对渲染图的猜测上。与 AIDL 引入几何约束求解器辅助 LLM 的路线相比,aDSL 不依赖全局求解器(其局部修改下脆弱、语义反馈有限、主要面向 2D CAD 草图),而是把空间意图编码为可解释的程序基元;与 LL3M 生成底层 Blender 脚本、Scene Language 面向场景 DSL 相比,它首次把空间推理作为面向智能体编辑的一等 substrate,使约束驱动的合成与执行后验证成为可能。
核心方法
方法直觉:LLM 会讲道理但算不准数,就让语言替它算。aDSL 是嵌入 Python 的分层资产语言:Asset 容器经 attach_part 挂载命名部件成树;叶子为参数化基元(cube、sphere、cylinder),可用布尔运算做 CSG;AABB 查询暴露中心、尺寸、命名锚点(如 left_front_top)与支撑点;声明式布局算子(align_centers、align_anchors、place_on_axis、distribute_along_axis、grid_shapes、radial_shapes 等)把常见空间关系压成单条语句。系统分四阶段:规划阶段把输入解析为组件分解、空间关系与可验证的 Critic 清单;编码与执行阶段由 Coder 合成程序、Executor 运行并渲染 8 视角证据;失败时 Debugger 分析报错并给定点补丁;成功后 Image Critic 比对渲染与清单,Code Critic 以代码为准做最终裁决;反馈回流 Coder 形成闭环,最多 $R=10$ 轮,配合选择性记忆保证长程稳定。全系统免训练,仅靠提示词工程与角色分工实现。
核心创新是「共享表示驱动的生成–验证–修复」:三个角色通过同一份关系化程序交流,把脆弱的坐标级交互替换为锚定在 aDSL 语义上的闭环。与已有方法的本质区别有三。第一,关系算子替代绝对坐标:智能体写 align_anchors(leg, tabletop, anchor='bottom', target_anchor='top') 这类语句而非手算 $(x,y,z)$,数值由运行时从 AABB 精确推导,小误差不再累积成悬空或穿插(图 3 对照)。第二,约束显式可检验:Planner 的空间关系与 Critic 清单直接映射到 aDSL 算子,执行后既可查渲染也可查程序状态;Code Critic 依代码逻辑否决由遮挡或透视引起的视觉误判,保证修正由真实程序缺陷而非幻觉驱动。第三,可组合性带来可编辑性:部件是命名层次,编辑即局部程序改写;同一层次可挂 revolute/prismatic 关节并导出 URDF,几何与功能统一编码。消融证明这是「表示 × 流程」的联合增益:同时去掉空间算子与修正循环时 CLIP 跌至 28.20、VQA 跌至 59.25,比单独去掉任一组件更差。
方法步骤详情
流程分四步。第一步规划:Planner 解析文本或图像,输出三件套——组件分解(层次化部件及描述)、空间关系(连通、对齐、相对放置等可映射到算子的约束)、Critic 清单(部件存在性、数量、支撑接触、对齐等可验证判据)。第二步编码与执行:Coder 实例化基元、以 CSG 构造部件、组装命名层次并调用布局算子满足约束;Executor 运行程序导出 mesh,渲染器按 45 度方位角间隔、固定 15 度仰角生成 8 张 1024×1024 渲染图。第三步评审与修复:执行失败(参数非法、定义缺失、算子误用)时 Debugger 分析错误并给定点补丁交回 Coder;成功后 Image Critic 对照清单在多视角下找感知与结构偏差(忽略轻微渲染瑕疵),Code Critic 交叉核对程序代码、验证问题真实性并每轮只提单一最关键修改,反馈回 Coder。第四步记忆管理:用户输入与规划为持久记忆贯穿全程;Coder 只保留固定需求与最近代码的滑动窗口;Critic 每轮删除历史渲染图、仅留文字反馈。循环在 Critic 报告无可行动问题或达 $R=10$ 轮时停止,用户可随时介入。
技术新颖性
新颖性可从四个参照系看清。对 Blender 脚本路线(BlenderMCP、BlenderLLM、LL3M):aDSL 提供带空间语义的紧凑算子集而非通用建模 API;消融中换成 Blender 脚本(保留同一智能体框架)后平均修正轮数从 4.25 升至 6.08、CLIP 降至 28.11,证明收益来自语言设计而非框架本身。对形状/场景 DSL(ShapeCraft、Scene Language):它们提升表达力但未把空间推理作为一等能力,aDSL 的 AABB 查询加声明式布局算子使约束既易写又易查,规划器输出的关系可直接落成算子调用。对求解器辅助的 AIDL:其用几何求解器补 LLM 短板但面向 2D CAD 草图,全局求解在局部修改下脆弱、语义反馈有限;aDSL 用可解释程序基元表达空间意图,修复只需调整算子参数(偏移、轴向、排序、分布间距)。对免训练多智能体系统本身:角色分工并不新鲜,新鲜的是角色间通信协议——同一份关系程序——及配套的选择性记忆机制(持久约束与瞬时状态分离、渲染图用后即弃)。「语言即接口」让验证成为确定性代码检查而非纯视觉猜测,在免训练方案中少见。
实验结果
实验分四组。文本生成形状:100 个实例(ShapeNet 60、ABO 20、Objaverse 20,共 200 提示)上,aDSL 在代码类方法中全面领先:ShapeNet CLIP 29.63/VQA 65.34/成功率 100%,优于 Scene Language(28.35/59.13/97%)与 ShapeCraft(27.70/57.26);ABO CLIP 30.39;Objaverse CLIP 29.07、VQA 69.37,超过场方法 Trellis(27.67/68.06)。图像生成形状:Toys4K 30 例上 CLIP 84.42/FID 184.71/成功率 100%,超过全部代码基线(BlenderMCP 83.28/214.87 等),但场方法 Trellis(CLIP 84.88/FID 108.20)外观仍占优。效率:每轮约 190 秒、4.25–5.23 轮收敛,单物体约 889 秒,95% 以上时间在 LLM 响应;记忆复用使摩托车变体从 5 轮 845 秒降到 1 轮 164 秒。消融(ShapeNet 120 提示):换 Blender 脚本轮数升至 6.08;去空间算子 VQA 降至 63.75;去 Planner 轮数 5.58;去修正循环成功率 0.98、VQA 61.53;同去最差 28.20/59.25/0.97。人评:38 名参与者偏好本方法 85.39%(提示对齐)与 86.84%(几何/视觉质量)。应用含铰接体、程序改写式编辑、SpaceControl 高保真化与场景生成。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 文本生成形状(ShapeNet) | CLIP-Score ↑ | 29.63 | Scene Language 28.35(代码类最佳基线) | +1.28 |
| 文本生成形状(ShapeNet) | VQAScore ↑ | 65.34 | Scene Language 59.13 | +6.21 |
| 文本生成形状(ABO) | CLIP-Score ↑ | 30.39 | BlenderMCP 28.97(代码类最佳) | +1.42 |
| 文本生成形状(Objaverse) | VQAScore ↑ | 69.37 | BlenderMCP 66.22 | +3.15(且超过场方法 Trellis 的 68.06) |
| 文本生成形状(三数据集) | 执行成功率 ↑ | 1.00 / 1.00 / 1.00 | Scene Language 0.97 / 0.98 / 0.95 | 全部 100% 可执行 |
| 图像生成形状(Toys4K) | CLIP-Score ↑ | 84.42 | BlenderMCP 83.28(代码类最佳) | +1.14(场方法 Trellis 84.88 仍略高) |
| 图像生成形状(Toys4K) | FID ↓ | 184.71 | ShapeCraft 187.62 / Scene Language 206.21 / BlenderMCP 214.87 | -2.91 至 -30.16(Trellis 108.20 更优) |
| 消融:表示形式(同框架换 Blender 脚本) | 平均修正轮数 ↓ | 4.25 | Blender 脚本版 6.08 | -1.83 轮,且 CLIP 高出 1.52 |
| 消融:工作流(去 Planner / 去修正循环) | 平均轮数 / 成功率 | 4.25 轮 / 1.00 | 无 Planner 5.58 轮;无修正循环成功率 0.98、VQA 61.53 | -1.33 轮;成功率 +0.02、VQA +3.81 |
| 人类成对评估(vs Scene Language,38 人 20 例) | 偏好率 ↑ | 提示对齐 85.39%;几何/视觉质量 86.84% | Scene Language(成对比较) | 全面显著偏好 |
局限与改进
作者承认三点局限。其一,最终质量受 DSL 表达力与几何基元的限制:高度复杂几何、外观与材质效果仍需与学习型高保真生成器更紧密结合——数据上可见,图像任务中 Trellis 的 FID(108.20)明显优于 aDSL(184.71),自行车辐条等细密结构场方法反而更好。其二,Critic 的验证主要基于 2D 渲染,透视歧义可能引起误判,这也是系统必须设置 Code Critic 用代码逻辑做最终仲裁的原因。其三,框架依赖 Gemini 3 Pro 这类强专有模型完成长程空间推理与修复,限制了可及性。我补充几点观察:单物体约 889 秒远慢于前馈式场模型,实时交互只能靠记忆复用缓解;文本基准仅 100 实例、图像基准仅 30 实例,规模偏小,且 CLIP/VQA 对结构正确性(接触、支撑、穿透)不敏感,100% 执行成功率只统计「能否渲染」,含金量有限;所有智能体共用同一骨干与 temperature 1.0,缺少跨模型稳健性验证;Code Critic 每轮只处理单一最关键问题、上限 $R=10$ 轮,约束密集时可能耗尽预算而未收敛。
独立分析的弱点
独立分析可见四类弱点。其一,几何与外观天花板低:基元加 CSG 难表达有机曲面与精细纹理,图 5、6 中场方法在平滑表面与外观上更优;改进方向是以 aDSL 为结构骨架,与 SpaceControl 式空间条件生成或部件级纹理模型深度耦合,允许部件「替换」为神经表示而保留程序层级。其二,评估协议偏弱:CLIP/VQA 度量全局语义相似而非几何有效性,缺接触率、穿透率、支撑正确性等结构化指标,执行成功率只验证可渲染性;可引入物理合理性自动检查与人工标注的结构正确率。其三,反馈粒度粗:Code Critic 每轮只提一个最关键修改,加上 $R=10$ 轮上限,多约束任务易耗尽预算;可做并行多问题修复或基于约束依赖图的优先级调度。其四,成本与依赖:每轮约 30.9k 输入 token、8 张 1024×1024 渲染,单物体累计约 15 万 token 量级,骨干绑定专有 API;可探索能力蒸馏到开源模型、算子执行缓存与增量渲染。另外「代码即权威」策略虽防幻觉,但当视觉反馈确实反映代码未覆盖的问题(颜色、比例失真)时可能被错误否决。
未来方向
作者提出两个方向:把长程空间推理与修复能力蒸馏到开源语言模型,摆脱对专有 LLM 的依赖;与学习型高保真生成器更紧密结合,突破 DSL 基元的表达上限。基于成果还可延伸:其一,铰接与物理仿真——aDSL 已可导出 URDF,接入物理引擎用关节限位、接触力自动验证「能动且合理」,服务具身智能训练场景合成。其二,结构化评估基准——构建带部件级标注与空间关系真值的基准,把约束满足率作为一等指标,弥补 CLIP/VQA 盲区。其三,逆向程序推断——结合图像/网格到 aDSL 的逆推(类 Img2CAD、InverseCSG),让已有资产进入可编辑程序空间,与编辑能力闭环。其四,场景级规模化——图 11 只涉及少量物体,结合检索式资产库与布局优化可扩展到整屋乃至城市尺度。其五,3D 感知 Critic——用深度、点云、遮挡推理替代纯 2D 渲染评审,消除作者承认的透视歧义。其六,交互式创作产品化——聊天式前端与记忆复用(845 秒对 164 秒)表明增量式 3D 设计工具已具雏形。
复现评估
复现条件较好。代码已开源(https://github.com/sig-pku/aDSL);方法免训练,无需 GPU 训练算力,只需可调用 LLM API(Gemini 3 Pro,temperature 1.0,各智能体共用;BlenderMCP 基线用 Claude Opus 4.5)加本地渲染环境。附录透明度高:完整给出 DSL API 参考(表 5 及函数清单)、坐标与关节约定、以及 Planner/Coder/Debugger/双 Critic 的全部提示词模板。评测数据可得:文本基准由 ShapeNet/ABO/Objaverse 抽样配 CAP3D 与 MARVEL 模板构成(100 实例 200 提示),图像基准用 Toys4K 30 例随机视角;指标实现与「失败计零分」协议均写明。成本集中在推理:每轮约 30.9k 输入加 2.75k 输出 token,4.25–5.23 轮/物体、约 889 秒,复现全量评估需可观 API 预算。难度中等:多智能体编排、渲染与记忆管理的工程链路较长,但免训练、文档与提示词齐全,门槛主要在 API 成本与 BlenderMCP 等基线的配额限制。
论文图表
Teaser 图:上排展示四个由文本或图像输入生成的结果——黑色办公椅、室内划船机、Kolín 城市鸟瞰、工具工作台场景,下方点出「DSL + 多智能体联合设计」的核心主张,并标注其支持铰接资产、形状编辑与场景级创作等下游应用。
一图概括全文贡献与能力边界:既展示输入条件的多样性(文本与图像),也预告统一表示支撑的多类下游任务,是快速把握论文范围的入口。
对照示例:左侧「无空间推理」时智能体直接推算坐标,产生部件脱开、错位的失效几何;右侧「有空间推理」时用 align_anchors、align_centers 等声明式算子对齐锚点与中心,并通过可解释的程序修改修复违规。
直观呈现核心动机——LLM 算不准数值坐标,以及 aDSL 关系算子如何从根上消除这类失败模式,是解释「为何这样设计语言」的最佳示例。
形状编辑示例:通过局部程序改写实现受控编辑——立方体基元换成圆柱、椅子数量从 4 改为 6、杆间距从 0.2 改为 0.1,每次只改动少数语句,其余几何与连接关系保持不变。
直观诠释「编辑即程序改写」的可控性与可解释性,是程序化表示对比场生成在编辑性上的核心卖点。
高保真生成:aDSL 网格作为空间约束,经 SpaceControl 协议引导 Trellis 等预训练生成器;对比列显示「Ours」结构正确但细节朴素,「Ours + SpaceControl」在保持全局结构的同时获得更丰富的几何细节与外观。
展示结构化程序与学习型生成器结合的路线,直接回应「DSL 表达力有限」这一局限,是论文技术愿景的重要一环。
场景级生成:两个室内场景提示(沙发/茶几/电视/落地灯布局;冰箱/水槽/炉灶/餐桌布局),展示层次化 aDSL 把对象结构与场景布局分离,对象可被单独取出、经预训练生成器精修后按原空间约束重组为高保真场景。
证明同一表示可从物体级自然扩展到场景级,且层级分离保证重组时全局结构仍可控可编辑,是下游应用的关键演示。
与 OpenClaw 集成的聊天式交互界面截图:用户用开放式自然语言提出请求,系统多轮精修并返回预览,用户可继续对话要求编辑或重新生成。
展示系统作为交互式 3D 创作工具的产品形态,说明记忆管理与人机协同设计在实际前端中可用。