SolidCraft 深度拆解:AI 如何安全地驱动 3D CAD 内核
【免费下载链接】solidcraftSolidCraft: an open-source parametric 3D CAD application built in pure Rust. Desktop, web, and automation through MCP.项目地址: https://gitcode.com/gh_mirrors/so/solidcraft
AI 代理不缺聪明,缺的是"做错了能不能被发现、能不能撤回"。纯 Rust 参数化 3D CAD 项目 SolidCraft 把这两件事做成了工程制度:批量操作全有或全无,结果与解析解逐案对账,连保存中途被杀进程都有专门的回归测试。本文以它为标准件,拆解一套"AI 可接管软件"的判据,再据此评估 PPT、视频、图像、EDA 谁更可能被重写。
一、拆解:SolidCraft 在做什么
一句话定位:把"一切操作"变成带稳定 id 的命令,桌面、浏览器、CLI 与 MCP 服务器共用同一个命令面,内核用参考测试逐案对账。
| 关键事实 | 数值 |
|---|---|
| 语言 / 版本 | 纯 Rust,workspace 版本 0.30.1(Cargo.toml) |
| 命令注册表 | 567 条命令,由注册表自动生成(docs/features.md) |
| 参考测试 | 90/90 案例通过(docs/oracle.md) |
| 许可证 | MIT OR Apache-2.0 |
| 运行形态 | 桌面 app、浏览器、headless CLI、MCP 服务器 |
最反直觉的细节不在建模端,而在权限端:MCP 服务器给 AI 配了一个文件系统沙箱,细到连硬链接都要写进文档提示。docs/mcp.md 的规则是:代理的读、写、删只限当前设计所在文件夹、本次运行中打开或保存过设计的文件夹(最近 16 个)与服务器自己的临时文件夹,且文件夹必须严格位于家目录内;隐藏文件(.env、.git)一律不可达,..与符号链接先解析再比对,Windows 下 UNC 路径、NUL之类的设备名、8.3 短文件名在执行任何系统调用之前就被拒绝。为什么重要:多数项目给 AI 开后门时默认"它反正跑在终端里",而这里把"代理默认摸不到~/.ssh"当成验收条件。没有这条边界,所谓"让 AI 安全建模"只是把磁盘交给了它。
二、可信:AI 做错之后,会发生什么
结论先行:SolidCraft 的可信度来自四条机制——批次回滚、独立对账、参数合同与崩溃演练,每条都有可点开的仓库证据。
1. 批次要么全成,要么全撤。解决的"偶发写错参数"问题是 LLM 调用的常态,不是例外。docs/mcp.md 中batch工具按序执行、遇错即停,已通过edit.checkpoint引擎检查点回滚之前所有步骤,设计、活动草图与撤销历史"恢复到批次开始前的原样"。更值得注意的是验证内建:调用方可以直接附带expect,在命令执行后由服务器自动测量比对。一段真实的批次调用长这样:
{"commands": [ {"command": "sketch.create", "params": {"plane": "XY"}}, {"command": "sketch.rectangle.two_point", "params": {"p0": [0,0], "p1": [40,30]}}, {"command": "solid.extrude", "params": {"distance": 20}}], "expect": {"volume_mm3": 24000.0, "tol": 0.002, "bodies": 1}}预期体积 24000 mm³(40×30×20),容差 0.2%,不符时工具结果直接标记isError,模型立刻看见。代理不需要"自觉检查",检查被缝进了构建过程本身。
2. 结果对账不依赖自己人。tests/oracle/ 的 90 个案例各有一份recipe.json与expected.json,重放后比对实体数、体积、面积、质心、包围盒,带reference.stl的案例还要比对表面采样距离。期望值来源只有两类:69 个手推解析解(公式写在 tools/oracle-analytic/),21 个由 FreeCAD 1.1.4 的公开 Python API 独立构建;文档特别声明没有期望值来自商业 CAD 产品。当前 90/90 通过,0 个已知失败。白话翻译:内核每次发版都要向两个"外人"交作业。
3. 崩掉不丢件,写坏不算数。ROADMAP 的 M13 条目写明:原子保存(临时文件、flush、rename,任意时刻崩溃只留下旧文件或新文件),每 5 分钟自动保存未存更改;配套测试是"保存 0.5 MB 设计时杀进程,重复 25 次"(apps/solidcraft-cli/tests/kill_mid_save.rs)。MCP 端还有参数合同:--param-check strict下,拼错的参数键(文档举例unknown key `operaton`; did you mean `operation`?)在发送前就被拒绝,设计原封不动。
三、推演:这套做法能不能复制
从上面四条机制里可以提炼出三条可迁移标准:标准一:操作可寻址——每个动作有稳定 id、参数化、能回放;标准二:内核可裁决——错误结果能被一个确定性的检查立刻抓出;标准三:状态可回滚——错误可撤销、崩溃可恢复。逐品类过一遍:
幻灯片 / PPT:适合,且是最容易复制的一个。结构强(大纲→页→版式→内容)、操作离散、渲染预览天然充当"看得见"的验证端,工程量远小于 3D 内核。最大风险:版式审美无法对账,"丑但没崩"过不了expect式的自动检查。
3D 查看 / 出图(DXF、STEP 可视化):适合。只读内核,操作面小,几何与量测天然可验证,浏览器化(WASM + WebGL)已有成熟先例。最大风险:查看器商业模式薄,重写收益撑不起一个团队。
视频剪辑:有条件。剪辑命令大多离散、可回滚、时长可校验,缺的只是开放的命令接口;ffmpeg 生态的编解码积累决定了没人会重写内核。最大风险:素材 I/O 与渲染管线重,确定性检查只能覆盖时间轴、覆盖不到像素质量。
图像编辑 / PS:有条件。选区、蒙版、调色正是 AI 强项,但位图内核纯 Rust 重写工程量惊人,且"调错了"缺乏 CAD 式的解析对账手段。更现实的路径是代理化而非重写。最大风险:感知质量没有解析解,"可裁决"这条标准天然缺一角。
EDA:暂时不适合重写。KiCad 的布线、仿真、DRC 是数十年积累,全面重写 ROI 极低;最可能的形态是复制"控制通道 + MCP 桥接",让代理操作现有内核。最大风险:版图校验依赖物理仿真,确定性边界比几何模糊得多。
| 品类 | 可寻址 | 可裁决 | 可回滚 | 判定 |
|---|---|---|---|---|
| 幻灯片 / PPT | 强 | 中(版式无解析解) | 强 | 适合 |
| 3D 查看 / 出图 | 强 | 强 | 强 | 适合 |
| 视频剪辑 | 中 | 中 | 强 | 有条件 |
| 图像编辑 | 中 | 弱 | 中 | 有条件 |
| EDA | 强 | 中 | 中 | 暂不适合重写 |
四、影响:接下来会发生什么
传统厂商视角:能做云化、WASM 化与官方 AI 助手,这是成本最低的防守;做不到开放底层命令面——订阅制加认证生态的商业模式,与"让第三方 AI 直接操作内核"激励错位,开放命令面等于交出生态入口的垄断权。开源生态视角:能做格式自主(SolidCraft 以 STEP/IGES/3MF/STL/OBJ 为互操作层,导入即可继续建特征)、独立验证(90 个案例全部来自解析解与 FreeCAD,明确排除商业产品)、干净的 MIT OR Apache-2.0 双许可;做不到独自扛住 EDA、位图这类重内核的长期消耗,只能挑"确定性高、可验证性强"的品类下手。
回到标题的问题:AI 如何安全地驱动一个专业内核?SolidCraft 给出的模板式判断是——把每个动作命名,把每次改动做成可回滚的一等状态,把每个结果交给一个与实现无关的判官;三者齐备的软件,代理就能接手,缺任何一条,就只配得到一个演示视频。下一个被重写的品类会是谁,取决于谁先把这三件事写进自己的 CI。
核心结论
- 3D 内核是"错误可被体积守恒立刻抓出"的确定性系统,这正是 AI 接管的最低门槛,也是图像、视频难以复制的优势。
- 沙箱与参数合同证明:开放给 AI 不等于放任,权限边界本身就是产品的一部分。
- 命令面会成为 AI 时代的行业接口:谁开放得最彻底,谁就握住代理工作流的入口。
【免费下载链接】solidcraftSolidCraft: an open-source parametric 3D CAD application built in pure Rust. Desktop, web, and automation through MCP.项目地址: https://gitcode.com/gh_mirrors/so/solidcraft
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考