RA-CAD:把代码审查做成内生策略,参数化CAD不可执行率降至6.2%
RA-CAD: Learning Post-Execution Critique for State-Aware Text-to-CAD Generation
计算机辅助设计(CAD)是现代工业制造与实体工程的基石。不同于游戏或影视渲染中常见的三角网格(Mesh)和神经隐式场(NeRF/3DGS),工业级 CAD 依赖严格的参数化建模代码,记录诸如二维草图绘制、轮廓拉伸、倒角和布尔运算等精确构造历史。近年来,利用大语言模型将自然语言需求直接翻译为参数化 CAD 代码(Text-to-CAD)成为前沿热点,但这项任务始终被极度严苛的代码脆弱性所困扰:CAD 几何内核对语法与拓扑约束极其敏感,只要模型少写一个约束或错调一个数值,整段代码就会在渲染器中直接崩溃;即便侥幸运行通过,生成的物理几何体也极易发生形变或拓扑扭曲。
ArXiv URL:https://arxiv.org/abs/2608.05714v1
针对代码报错与几何偏差,目前主流方案往往尝试引入外部反馈,比如将编译器报错信息或 3D 渲染图重新拼入提示词,让模型尝试自我修复。然而,这类做法本质上是将反馈视为“外挂的启发式补丁”,模型缺乏对执行反馈的主动推理机制,在面对复杂报错时往往陷入盲目乱改或过早放弃的死循环。来自四川大学的研究团队提出了 RA-CAD(ReAct Agent for CAD),从根本上重构了这一范式:研究者不再把执行后审查当成孤立的外部提示,而是将其拆解为智能体策略内部的显式决策动作,通过两阶段优化(CCB 与 FAO)让大模型在同一个交互轨迹中协同进化代码生成能力与自我审查能力。实验表明,该方法在 CADFusion 和 Text2CAD 两个基准上大幅刷新了记录,将复杂 CAD 代码的不可执行率直接降至 6.20%,在几何对齐精度上也显著超越了通用商用闭源大模型。

为什么参数化 CAD 无法依赖单次推理与外部检查员?
要理解 RA-CAD 的创新点,首先需要看清当前参数化代码生成陷入的技术泥潭。过去几年,以 DeepCAD、SkexGen 为代表的工作确立了基于序列生成 CAD 构造历史的路线。在此基础上,Text-to-CAD 任务通常被塑造成单次前向的自回归翻译问题——输入一句“带圆角四方凸台的基座”,模型单向输出对应的建模序列。
这种“一次性交付”的单向解码存在先天硬伤。参数化 CAD 本质上是一门强依赖执行环境的领域特定语言,不仅要求严格的代码语法匹配,更依赖严谨的几何拓扑守恒。例如,草图中的闭合环路一旦因浮点误差出现极小断口,后续的拉伸(Extrude)算子就会在几何引擎中抛出底层异常;或者一个本应向外延伸的凸台被赋予了错误的布尔操作,直接把基座挖成空心。单次前向模型完全处于“盲打”状态,根本无法在生成阶段获知执行引擎的反馈,更谈不上从执行失败中回溯修复。
为了缓解这一问题,近期研究开始尝试为系统引入反馈机制。常见的做法包括利用外部视觉评审员(Visual Reviewer)比对多视角渲染图,或者接入编译器捕获语法报错,随后以固定的 Prompt 模板把反馈塞回大模型让其二次编辑。
但四川大学团队敏锐指出,这种“外部挂件式”反馈并没有真正解决问题,其核心症结在于反馈理解与执行动作之间的脱节。外部审查器通常是一个独立固定的模块,它只能给出粗糙的打分或静态的报错堆栈,却无法替智能体规划“下一步该具体改哪一行、动哪个尺寸”。如果大语言模型本身没有建立起针对 CAD 执行状态的策略决策能力,它在面对反馈时往往表现得极度钝化:要么在第一轮微小的几何缺陷面前草率终止,认定任务已完成;要么在接收到执行崩溃信息后,病急乱乱投医地修改本已正确的草图参数,导致后续轮次中语法与几何缺陷进一步恶化。
真实的工程设计需要的是一种具备闭环调试能力的智能体。设计者写完一段建模代码,在引擎中渲染出来看一眼,迅速定位出拉伸高度不足还是圆弧半径切线错误,并在头脑中形成清晰的诊断意见,随后精确锁定代码进行增量改写。RA-CAD 的核心动机,正是要将这种“生成—执行—审查—重写”的动态交互过程,完全内化为大语言模型的原生决策策略。
RA-CAD 架构:将审查显式解耦为中间策略动作
RA-CAD 摒弃了将审查交由外部系统的传统构型,构建了一个状态感知的 ReAct 智能体。在这个系统里,交互被规范地建模为一个马尔可夫决策过程(MDP),每一个回合的状态 $s_t$ 都显式维护着四元组:
\[s_t = (d, c_t, e_t, f_t)\]其中 $d$ 为用户的原始文本设计需求,$c_t$ 为当前轮次候选的 CAD 建模代码,$e_t$ 是外部 CAD 执行器 $\mathcal{E}$ 返回的物理环境反馈(包括语法是否通过、编译器的崩溃堆栈或底层几何诊断日志),而 $f_t$ 则是智能体针对当前执行情况自主生成的审查判断。

在每一个交互回合中,智能体内部的策略分布被清晰解耦为代码提议/重写策略 $\pi_\theta^{\mathrm{g\&r}}$ 与审查策略 $\pi_\theta^{\mathrm{crit}}$。其闭环工作流严格按照四个步骤递进:
-
生成与重写(Generate & Rewrite):在初始回合($t=0$),智能体根据纯文本描述 $d$ 生成首个候选代码 $c_0$;在后续交互轮次中,重写模块则根据上一回合更新后的完整环境状态(包括错误反馈与审查建议)输出修改后的代码 $c_{t+1}$。
-
环境执行(Execution):这一步完全交由外部 CAD 几何引擎处理,保证物理环境的客观真实性。引擎编译执行代码,输出状态标量及 diagnostic 诊断报文 $e_t$。
-
策略化审查(Critique):这是 RA-CAD 最具辨识度的环节。智能体观测到当前代码 $c_t$ 及其执行输出 $e_t$ 后,并非简单输出一个好坏分数,而是输出一段结构化的诊断文本 $\tilde{f}_t$。该审查文本充当了中间策略动作:它要么明确宣告几何结构已经满足所有设计需求,发出终止交互的指令;要么清晰指明当前的拓扑缺陷(例如“侧面圆弧半径超出边界,导致第二段布尔拉伸相交异常”),为接下来的重写提供明确的因果动作指导。
-
状态转移与迭代:智能体根据审查动作输出决定进入重写或是终止。整个交互历史被串联成一条完整的轨迹 $\tau = (s_0, a_1, s_1, \ldots, a_T, s_T)$。
值得注意的是,智能体在输出审查文本 $\tilde{f}_t$ 时,实际上是在自身上下文空间中生成了极具密度的中间思维表征(Reasoning Trace)。这种表征不仅承上启下,将晦涩的底层引擎报错翻译成了可操作的建模指令,更把原本不可微、不连贯的代码调试转变成了平滑可学的策略推理链。
两阶段优化:CCB 语法奠基与 FAO 轨迹级强化学习
拥有了完整的交互闭环,接下来的挑战是如何训练这样一个复杂的多轮策略模型。参数化 CAD 代码语法极为严苛,如果让一个零基础的大模型直接在强化学习环境中乱猜探索,环境奖励几乎恒为零,策略梯度必然崩溃。为此,研究团队设计了一套行之有效的两阶段训练流程:CAD 代码冷启动(CCB)与反馈驱动的智能体优化(FAO)。

第一阶段:CAD 代码冷启动(CAD Code Bootstrapping, CCB)
为了赋予基座模型基本的参数化语法感知,CCB 阶段首先采用高质量的配对数据 $(d, c^\star)$ 进行监督微调(SFT)。团队选用开源的 Meta-Llama-3-8B-Instruct 作为基座,通过 LoRA($r=32, \alpha=32$)进行高效微调,训练目标为标准的自回归负对数似然损失:
\[\mathcal{L}_{\mathrm{SFT}} = -\frac{1}{L} \sum_{l=1}^{L} \log \pi_\theta(c_l^\star \mid d, c_{<l}^\star)\]经过该阶段训练后,模型获得了将自然语言概念映射为有效 CAD 构造基元(如直线、圆弧、圆以及拉伸体)的基础先验,为后续进入动态强化交互提供了可靠的初始化权重。
第二阶段:反馈驱动的智能体优化(Feedback-Driven Agent Optimization, FAO)
CCB 能够让模型写出大概率符合语法的代码,但对于“生成错了该如何读懂报错”、“如何写出有价值的审查诊断”、“如何针对诊断实施几何修正”等高阶决策行为,SFT 显得无能为力。FAO 阶段正是为此而生。
在 FAO 阶段,研究团队将多轮交互整体视作一个轨迹,利用群组相对策略优化(Group Relative Policy Optimization, GRPO)直接在轨迹层面展开强化学习。这一设计有两大核心优势:一是完全摆脱了对独立价值评估模型(Critic Network)的依赖,极大降低了显存开销;二是能够对同一个输入采样一组($K=8$)不同的交互轨迹,在组内计算优势函数,实现高稳定性的策略更新。
为了引导策略向着“既能成功编译,又能精准还原几何形态”的方向演进,研究团队精心设计了终端轨迹奖励函数:
\[R = \lambda_1 R_{\text{F1}} + \lambda_2 R_{\text{CD}}\]该奖励函数兼顾了符号层面与真实 3D 几何层面:
-
符号级一致性 $R_{\text{F1}}$:衡量生成的 CAD 序列与真实序列在拓扑拓扑算子上的平均 F1 分数,涵盖直线(Line)、圆弧(Arc)和圆(Circle)基元的精准度。
-
几何级连续性 $R_{\text{CD}}$:当且仅当 CAD 代码在执行引擎中成功实例化为 3D 模型点云时,系统通过倒角距离(Chamfer Distance, CD)计算模型与真实构件的几何偏差,并将其映射为平滑指数奖励:
这种“不执行即判零分”的硬约束,强力倒逼智能体优先规避语法与布尔崩溃;而一旦代码可执行,指数化的几何奖励又会敏锐捕捉模型在微观轮廓尺寸上的吻合度。
尤为精妙的是,这笔终端奖励 $R$ 并没有仅仅回传给最终的代码重写动作,而是统一定义在整条交互轨迹上,同时反向传播给轨迹内部所有由策略生成的代码 Token 和审查 Token。通过将审查文本本身纳入学策略梯度优化的范围,GRPO 使得模型的审查策略与重写策略在环境中协同共振:审查模块必须学会提供真正能帮重写模块提分的指导,否则整条轨迹的终端奖励就会被拉低。由此,审查行为从一种“被动提示”彻底演进为“以最终几何结果为导向的学习型决策”。
实验评测:击败闭源大模型,代码可用性取得质的突破
为了验证 RA-CAD 的真实效能,研究人员在 Text-to-CAD 领域最核心的两大权威基准——CADFusion 和 Text2CAD 上进行了详尽的评测。实验统一使用 SkexGen 参数构造规则进行重参数化,并过滤掉了不可实例化的脏数据。在 Text2CAD 数据集上,评测专门选用更贴近真实工业设计习惯的中层抽象语义描述,而非直白罗列尺寸坐标的伪描述。
评测从两大维度设立了多套严密指标:在参数序列维度,考察各类拓扑算子的 F1 分数;在实例化模型几何维度,考察平均倒角距离(Avg CD)、中位数倒角距离(Med CD)、反映分布一致性的 JS 散度(JSD),以及最致命的代码不可执行率(Invalidity Ratio, IR)。
在与此前顶尖基线(如基于监督学习的 Text2CAD 架构、引入视觉偏好对齐的 CADFusion)的横向较量中,RA-CAD 展现出了压倒性的优势。在 CADFusion 数据集上,RA-CAD 将几何误差 Avg CD 显著压缩至 35.44,同时将代码执行失败率 IR 压低到了惊人的 6.20%;而在尺度更大、任务更具挑战性的 Text2CAD 上,RA-CAD 同样斩获了 38.86 的 Avg CD 和 9.44% 的极低 IR。
作为参照,基线方法往往只在某些统计频次高的特定参数(如单调的拉伸 Token)上盲目堆砌置信度,而面对整体形变时极易失控。RA-CAD 在整体几何分布指标(JSD)与几何相似度上双双大幅领跑,这充分证明:拥有内生审查机制的智能体,已经初步理解了“参数与拓扑组合如何共同决定连续空间几何构型”的物理规律,跳出了传统大语言模型仅仅死记硬背 token 出现概率的局限。

通用闭源大模型在参数化 CAD 任务中的溃败
为了进一步探究通用顶尖语言模型在工业代码生成领域的实际水平,论文设置了一组颇具启发性的对比实验:在同等提供 8-shot 上下文示例的严苛测试下,让主流的专有商业大模型直接生成对应的 CAD 代码。
实验结果呈现出强烈的反差。尽管当代顶级闭源大模型在通用的 Python、JavaScript 代码生成以及逻辑常识推理上展现出了惊人的泛化能力,但在面对参数化 CAD 时,其表现却极为惨淡。这些模型频繁生成语法违背 CAD 规范的废代码,或者给出几何空间完全冲突的操作时序,导致其生成的代码在几何内核中执行失败率(IR)居高不下。
这一现象揭示了专业工程代码生成的一个本质认知:通用代码通常具有丰富的容错空间或高度离散的逻辑流程,而 CAD 代码则是在高维连续空间施加严格的几何约束。商业大模型再强大的常识与通用编程知识,如果不经过深度的 CAD 领域语法对齐,不接入真正的物理几何执行闭环,根本无法在心智中构建出可靠的 3D 空间先验。
模块消融:自我审查究竟贡献了什么?
为了厘清框架中各功能模块的具体增益,研究人员针对核心部件进行了严格的剥离实验,层层拆解了 RA-CAD 强大性能的来源:
-
去除 CCB 冷启动:如果直接在基座模型上跳过第一阶段的 SFT、直接开启强化学习,模型甚至连基础的几何实体都无法正常拼装成型,策略完全无法从奖励稀疏的交互环境中获得有效梯度。这证实了参数化语法先验在闭环强化中的基石地位。
-
去除 FAO 强化学习(仅保留 CCB):此时模型仅靠静态微调生成代码,虽然具备基本的语法拼写能力,但在平均倒角距离和不可执行率上表现平庸。这证明仅靠模仿学习无法习得深层次的空间拓扑规划能力。
-
去除自我审查动作(Critique):当把智能体内的 Critique 模块移除,将框架退化为“生成—执行—常规强化学习重写”模式时,模型的综合指标发生了系统性下跌。这一结果极具说服力:它明确证实,RA-CAD 取得的突破并不仅仅归功于 GRPO 算法本身算力的堆叠,更主要得益于那个显式建模的执行后审查(Post-Execution Critique)策略。正是这段诊断性的中间状态生成,为策略空间提供了极具因果解释性的调整抓手,让重写动作不再是盲目试错,而是有的放矢的几何修正。
从定性对比图中可以直观看出这种机制的威力:当遇到基座中心挖孔未闭合、轮廓拉伸方向错误等复杂构件时,缺乏审查优化的变体往往在报错后手足无措,最终输出严重破碎的非流形网格或直接导致编译报错;而 RA-CAD 则能在首轮代码出现瑕疵后,准确指出“草图存在开放边界”,并在下一轮动作中自适应补全连接点,最终稳定输出结构完好、轮廓清晰且具备高几何保真度的真实 3D 实体。
结语与工程启示
四川大学提出的 RA-CAD,为复杂工业场景下的大语言模型落地提供了一个极具示范意义的样本。它打破了传统 CAD 生成中“单向翻译”与“外挂诊断打补丁”的思维定势,通过把执行后审查重塑为策略内部的显式动作,并在轨迹层面上借助 GRPO 实现端到端协同进化,成功抹平了环境反馈与有效修正动作之间的技术鸿沟。
从更广阔的视角来看,这种“状态感知的可学习审查”范式绝不仅限于参数化 CAD。在编译器强依赖的高保真任务中——无论是硬件描述语言(Verilog)、严格类型化嵌入式代码,还是复杂约束下的工业规划控制,单纯依赖更庞大的通用模型或固定的外部 Prompt 终有上限。让模型在真实的执行环境中一次次“摔跤”,并将其自我诊断、自我反思的过程彻底策略化、强化学习化,或许才是让大模型真正迈向工业级自主代码智能的必由之路。