<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Build123d on 我的博客</title><link>https://blog.5616760.com/tags/build123d/</link><description>Recent content in Build123d on 我的博客</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Fri, 16 Oct 2026 21:30:00 +0800</lastBuildDate><atom:link href="https://blog.5616760.com/tags/build123d/index.xml" rel="self" type="application/rss+xml"/><item><title>text-to-cad：把 CAD 变成智能体的「手」——2 万 star 项目的架构、契约与工程治理</title><link>https://blog.5616760.com/0050.html</link><pubDate>Fri, 16 Oct 2026 21:30:00 +0800</pubDate><guid>https://blog.5616760.com/0050.html</guid><description>&lt;p&gt;先给结论：&lt;strong&gt;text-to-cad 不是&amp;quot;AI 画图工具&amp;quot;，它是一套把智能体接入真实工程工作流的本地运行时。&lt;/strong&gt; 它值钱的地方不在于&amp;quot;能生成 STEP 文件&amp;quot;，而在于它把三件通常被忽略的事写成了硬规则：&lt;strong&gt;模型脚本就是工具本身&lt;/strong&gt;、&lt;strong&gt;生成物与源码彻底解耦&lt;/strong&gt;、&lt;strong&gt;审查只给测量、不给认证&lt;/strong&gt;。这三条决定了它能不能被工程交付信任。&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="图：text-to-cad 官方社交预览图" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.5616760.com/img/0050-001.png"&gt;&lt;/p&gt;&#10;&lt;h2 id="目录"&gt;目录&#10;&lt;/h2&gt;&lt;ol&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e4%b8%80%e5%ae%83%e6%98%af%e4%bb%80%e4%b9%88" &gt;它是什么&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e4%ba%8c%e7%9c%9f%e9%97%ae%e9%a2%98%e4%b8%8d%e6%98%af%e4%bc%9a%e4%b8%8d%e4%bc%9a%e5%bb%ba%e6%a8%a1%e8%83%bd%e4%b8%8d%e8%83%bd%e5%af%b9%e7%bb%93%e6%9e%9c%e8%b4%9f%e8%b4%a3" &gt;真问题：不是&amp;quot;会不会建模&amp;quot;，是&amp;quot;能不能对结果负责&amp;quot;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e4%b8%89%e4%b8%89%e5%b1%82%e6%9e%b6%e6%9e%84%e6%8a%80%e8%83%bd%e5%b1%82--%e5%bc%95%e6%93%8e%e5%b1%82--%e5%91%88%e7%8e%b0%e5%b1%82" &gt;三层架构：技能层 / 引擎层 / 呈现层&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e5%9b%9b%e6%a8%a1%e5%9e%8b%e5%a5%91%e7%ba%a6%e8%84%9a%e6%9c%ac%e5%b0%b1%e6%98%af%e5%b7%a5%e5%85%b7%e6%b2%a1%e6%9c%89-cli" &gt;模型契约：脚本就是工具，没有 CLI&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e4%ba%94%e7%ac%ac%e4%b8%80%e6%9d%a1%e6%b3%95%e5%be%8b%e7%94%9f%e6%88%90%e7%89%a9%e4%b8%8e%e6%ba%90%e7%a0%81%e5%bd%bb%e5%ba%95%e8%a7%a3%e8%80%a6" &gt;第一条&amp;quot;法律&amp;quot;：生成物与源码彻底解耦&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e5%85%ad%e6%8a%80%e8%83%bd%e6%98%af%e4%ba%a7%e5%93%81%e6%a8%a1%e5%9e%8b%e6%98%af%e6%b5%8b%e8%af%95%e5%a4%b9%e5%85%b7" &gt;技能是产品，模型是测试夹具&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e4%b8%83%e5%ae%a1%e6%9f%a5%e5%93%b2%e5%ad%a6%e8%af%81%e6%8d%ae%e4%bc%98%e5%85%88%e4%b8%8d%e8%ae%a4%e8%af%81%e4%b8%8d%e8%83%bd%e6%b5%8b%e5%b0%b1%e6%98%8e%e8%af%b4" &gt;审查哲学：证据优先，不认证，不能测就明说&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e5%85%abgauntlet%e4%b8%80%e4%b8%aa%e7%9b%b2%e8%af%84%e7%be%8e%e5%ad%a6%e7%9a%84%e8%b4%a8%e9%87%8f%e9%97%ad%e7%8e%af" &gt;Gauntlet：一个盲评美学的质量闭环&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e4%b9%9d%e6%8a%80%e8%83%bd%e7%9f%a9%e9%98%b5%e4%b8%8e%e8%b7%af%e7%94%b1" &gt;技能矩阵与路由&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e5%8d%81%e8%bf%90%e8%a1%8c%e5%bd%a2%e6%80%81uvpinned-%e7%89%88%e6%9c%acmcp-apps%e5%b8%b8%e9%a9%bb-daemon" &gt;运行形态：uv、pinned 版本、MCP Apps、常驻 daemon&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e5%8d%81%e4%b8%80%e5%b7%a5%e7%a8%8b%e6%b2%bb%e7%90%86%e5%90%88%e5%b9%b6%e5%8d%b3%e5%8f%91%e5%b8%83" &gt;工程治理：合并即发布&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e5%8d%81%e4%ba%8c%e7%8e%b0%e5%ae%9e%e7%ba%a6%e6%9d%9fsmart-app-control%e9%81%a5%e6%b5%8b%e5%86%85%e6%a0%b8%e4%be%9d%e8%b5%96" &gt;现实约束：Smart App Control、遥测、内核依赖&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e5%8d%81%e4%b8%89%e5%af%b9-bim-%e4%b8%8e%e5%b7%a5%e7%a8%8b%e4%ba%a4%e4%bb%98%e7%9a%84%e5%90%af%e5%8f%91" &gt;对 BIM 与工程交付的启发&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e5%8d%81%e5%9b%9b%e6%88%90%e7%86%9f%e5%ba%a6%e8%af%84%e4%bc%b0" &gt;成熟度评估&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e5%8d%81%e4%ba%94%e7%bb%93%e8%af%ad" &gt;结语&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e5%85%8d%e8%b4%a3%e5%a3%b0%e6%98%8e" &gt;免责声明&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="一它是什么"&gt;一、它是什么&#10;&lt;/h2&gt;&lt;p&gt;一句话：&lt;strong&gt;给智能体装上 CAD 能力的本地插件 + 技能库 + 引擎，输出 STEP / GLB / STL / 3MF，并附带可制造性审查、工程图纸和切片能力。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;项目由 &lt;strong&gt;earthtojake&lt;/strong&gt; 维护，MIT 许可，主语言 Python。数据快照（&lt;strong&gt;2026-10-16&lt;/strong&gt;）：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;维度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;数据&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;star / fork&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;20,883 / 2,063&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;创建时间&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2026-04-22（约 6 个月）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;最近推送&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2026-10-16（当天仍在提交）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;当前版本&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;0.7.21&lt;/strong&gt;（PyPI 包 &lt;code&gt;cadgen&lt;/code&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;发布节奏&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;v0.7.17（10-08）→ v0.7.21（10-11），&lt;strong&gt;4 天 5 个版本&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;文件数&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;递归文件树 &lt;strong&gt;2,932&lt;/strong&gt; 个 blob&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;开放 issue&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;43&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;技能数量&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;12 个&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;官方站点&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="https://www.texttocad.dev" target="_blank" rel="noopener"&#10; &gt;https://www.texttocad.dev&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;贡献者分布也值得看一眼，因为它透露了这个项目的运作方式：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;贡献者&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;commits&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;earthtojake&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1,130&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;github-actions[bot]&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;102&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;claude&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;87&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;warun7&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;44&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;dependabot[bot]&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;11&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;一个智能体账号（&lt;code&gt;claude&lt;/code&gt;）排在人类贡献者前面——这不是彩蛋，而是这个仓库的日常工作方式：&lt;strong&gt;它本身就是一个&amp;quot;由智能体执行、由人治理&amp;quot;的工程&lt;/strong&gt;。&lt;code&gt;AGENTS.md&lt;/code&gt; 是仓库根目录的一等公民文件，里面写的是分支纪律和发布规则，不是给人类的贡献指南。&lt;/p&gt;&#10;&lt;h2 id="二真问题不是会不会建模能不能对结果负责"&gt;二、真问题：不是&amp;quot;会不会建模&amp;quot;,能不能对结果负责&#10;&lt;/h2&gt;&lt;p&gt;大多数 text-to-CAD 方案停在&amp;quot;生成一个模型&amp;quot;。这一步在演示里很漂亮，在工程里不够用，因为它缺三样东西：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;可复现性&lt;/strong&gt;——生成的模型是一次性产物，改一个尺寸就得从头再来，没有&amp;quot;源&amp;quot;；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;可验证性&lt;/strong&gt;——它说&amp;quot;壁厚 2 mm&amp;quot;，但没人量过，只是模型自己说的；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;可交付性&lt;/strong&gt;——工程交付要的是图纸、公差、工艺判断、刀路，不是一个能转着看的 3D 预览。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;text-to-cad 的应对方式很直接：&lt;strong&gt;把 CAD 工作流拆成可执行的契约&lt;/strong&gt;。模型是脚本，脚本可重跑；测量是工具输出的事实，不是模型的自述；图纸是从几何投影出来的文档，不是手画的；审查是&amp;quot;测量 + 引用的规则来源&amp;quot;，不是&amp;quot;AI 觉得可以&amp;quot;。&lt;/p&gt;&#10;&lt;p&gt;这就是它和&amp;quot;AI 建模&amp;quot;最大的分野：&lt;strong&gt;它把 AI 放在执行者的位置，把判断权留给可验证的证据。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h2 id="三三层架构技能层--引擎层--呈现层"&gt;三、三层架构：技能层 / 引擎层 / 呈现层&#10;&lt;/h2&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TD&#10; A["智能体宿主&lt;br/&gt;Claude Code / Codex / Cursor / Gemini / Grok"] --&gt; B["插件清单层&lt;br/&gt;plugin.json · claude.mcp.json · gemini-extension.json · skills.sh.json"]&#10; B --&gt; C["技能层 skills/（12 个）&lt;br/&gt;cad · dxf · engineering-drawing · urdf · srdf · sdf&lt;br/&gt;dfm · dfam-check · gcode · bambu-labs · step-parts · sendcutsend"]&#10; C --&gt; D["引擎层 cadgen（PyPI）&lt;br/&gt;Python 引擎 + 打包的 JS runtime + 原生 file tracer"]&#10; D --&gt; E["呈现层&lt;br/&gt;cadgen viewer（本地 HTTP，端口 3245）&lt;br/&gt;cadgen mcp（MCP Apps）· 常驻 build daemon"]&#10; D --&gt; F["几何内核&lt;br/&gt;OCP（Open CASCADE 7.9 的 Python 绑定）+ build123d 0.11"]&#10; style C fill:#0A7CFF,stroke:#0A7CFF,color:#fff&#10; style D fill:#7C3AED,stroke:#7C3AED,color:#fff&#10; style E fill:#2EA44F,stroke:#2EA44F,color:#fff&#10; style F fill:#E2001A,stroke:#E2001A,color:#fff&lt;/pre&gt;&lt;p&gt;三层的职责边界在文档里写得很干净：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;技能层&lt;/strong&gt;是&amp;quot;产品&amp;quot;——每个 &lt;code&gt;SKILL.md&lt;/code&gt; 定义任务边界、工作流和引用参考，智能体读它来行动；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;引擎层&lt;/strong&gt;是&amp;quot;能力&amp;quot;——模型执行、store、文档装配、运动学、导出、校验、检查、快照、build pool；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;呈现层&lt;/strong&gt;是&amp;quot;界面&amp;quot;——同一个 viewer 页面，通过 HTTP（浏览器）或 MCP Apps 桥（宿主内嵌卡片）两种通道暴露。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;值得注意的是 &lt;code&gt;@text-to-cad/core&lt;/code&gt; 的依赖约束里有一句：&lt;strong&gt;&amp;ldquo;Never React, ReactDOM, Electron, Next.js, UI or application source&amp;rdquo;&lt;/strong&gt;，且&amp;quot;Browser entry points never import Node-only code&amp;quot;。这是一个把&amp;quot;渲染核心&amp;quot;和&amp;quot;应用&amp;quot;严格分开的包边界声明——它保证引擎层能脱离任何具体宿主运行。这也是为什么同一个页面能同时服务 Codex 的 tab、Claude Desktop 的卡片和浏览器 viewer。&lt;/p&gt;&#10;&lt;h2 id="四模型契约脚本就是工具没有-cli"&gt;四、模型契约：脚本就是工具，没有 CLI&#10;&lt;/h2&gt;&lt;p&gt;这是整个项目最容易被低估的一条设计。&lt;code&gt;skills/cad/references/step-generation.md&lt;/code&gt; 的标题就是 &lt;strong&gt;&amp;ldquo;The model script is the tool&amp;rdquo;&lt;/strong&gt;——生成没有 CLI。一个模型就是一个普通 Python 脚本：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; cadgen &lt;span style="color:#f92672"&gt;import&lt;/span&gt; build123d &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; bd&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; cadgen &lt;span style="color:#f92672"&gt;import&lt;/span&gt; step&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WIDTH &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10.0&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;@step&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;bracket&lt;/span&gt;():&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; bd&lt;span style="color:#f92672"&gt;.&lt;/span&gt;Box(WIDTH, &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; __name__ &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; bracket()&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;跑 &lt;code&gt;python bracket.py&lt;/code&gt; 就产出 &lt;code&gt;bracket.step&lt;/code&gt;。契约里几条规则很讲究：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;装饰器只声明，不执行&lt;/strong&gt;——装饰或 import 时什么都不发生，只有直接运行文件时才构建；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;一个模型只有一套输出&lt;/strong&gt;，在装饰器里声明，没有&amp;quot;每次运行临时指定输出&amp;quot;的口子；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;未改动的源是快速 no-op&lt;/strong&gt;——重跑不重复计算；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;store 的记录以脚本为键&lt;/strong&gt;，不是以产物为键。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这套设计把&amp;quot;生成&amp;quot;从一次性动作变成了&lt;strong&gt;可持续的源&lt;/strong&gt;。改尺寸 = 改参数 = 重跑，产物、缓存、sidecar 全部跟着走。对工程场景，这就是&amp;quot;可复现&amp;quot;的最小实现——它比&amp;quot;AI 又生成了一个新模型&amp;quot;强一个数量级。&lt;/p&gt;&#10;&lt;h2 id="五第一条法律生成物与源码彻底解耦"&gt;五、第一条&amp;quot;法律&amp;quot;：生成物与源码彻底解耦&#10;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;packages/cadgen/README.md&lt;/code&gt; 里明确用 &lt;strong&gt;LAWS&lt;/strong&gt;（不是 conventions）这个词，并且给每条法律配了一个&amp;quot;压力测试&amp;quot;。第一条是：&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;生成文件与它的源代码完全独立&lt;/strong&gt;——STEP、DXF、STL、GLB、3MF 及其 sidecar（&lt;code&gt;&amp;lt;name&amp;gt;.step.json&lt;/code&gt;）永远独立成立。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;它的压力测试写得非常具体：&lt;strong&gt;一个生成文件必须&amp;quot;仅通过读这个生成文件&amp;quot;就能被完整读取&lt;/strong&gt;（viewer、snapshot、&lt;code&gt;read_scene&lt;/code&gt;），不许去猜旁边的 JavaScript 文件、不许回读源码。&lt;/p&gt;&#10;&lt;p&gt;由此派生出 &lt;strong&gt;Viewer three-input law&lt;/strong&gt;：客户端渲染只依赖三样东西——&lt;strong&gt;文件本体、可选的 sidecar、缓存&lt;/strong&gt;。动画源嵌在那一个 sidecar 里，不发现、不抓取任何相邻文件。&lt;/p&gt;&#10;&lt;p&gt;这条法律的实际价值在于：&lt;strong&gt;交付物可以脱离工具存在&lt;/strong&gt;。你把 &lt;code&gt;.step&lt;/code&gt; 发给工厂、发给同事、发给另一个软件，它不需要&amp;quot;我们的生成脚本&amp;quot;就能被正确解读。这是工程交付的基本前提，很多 AI 生成工具恰恰在这里断链——产物离开了它的生成环境就变成一堆无法解释的数据。&lt;/p&gt;&#10;&lt;p&gt;顺带一提，文档里还有一句很硬的话：&lt;strong&gt;&amp;ldquo;a change that violates them is wrong even when it works.&amp;rdquo;&lt;/strong&gt;（违反法律的改动，即使能跑也是错的。）这种表述方式本身就说明这个项目的治理强度。&lt;/p&gt;&#10;&lt;h2 id="六技能是产品模型是测试夹具"&gt;六、技能是产品，模型是测试夹具&#10;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CONTRIBUTING.md&lt;/code&gt; 和 &lt;code&gt;AGENTS.md&lt;/code&gt; 都写了同一句话：&lt;strong&gt;把 &lt;code&gt;skills/&lt;/code&gt; 当作被测产品，把 &lt;code&gt;models/&lt;/code&gt; 当作共享夹具。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;这个定位很关键——它意味着这个仓库的&amp;quot;软件&amp;quot;不是某个 app，而是&lt;strong&gt;技能定义本身&lt;/strong&gt;。&lt;code&gt;models/&lt;/code&gt; 里的东西（f1、f14d、hypercar、radial、w16、tendon_hand、falcon_heavy、juno、lyra、moonwatch、motorbike、qdd_actuator）是验证这些技能是否真的能跑通的样本集。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;models/README.md&lt;/code&gt; 里的三分法也很清楚：&lt;strong&gt;一个零件是一个脚本，一个装配体是一个目录，一张图纸是一个 &lt;code&gt;@dxf&lt;/code&gt;&lt;/strong&gt;——三者各有自己的 &lt;code&gt;src/README.md&lt;/code&gt; 目录清单。而且新克隆的仓库里&lt;strong&gt;没有 &lt;code&gt;STEP/&lt;/code&gt; 目录&lt;/strong&gt;，产物靠跑脚本重新生成：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd models/&amp;lt;project&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ls src/*.py | xargs -n1 -P4 python &lt;span style="color:#75715e"&gt;# unchanged models no-op&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这跟第五节的法律是自洽的：产物不进仓库，源进仓库；产物是源的函数，但产物本身不依赖源就能被读取。&lt;/p&gt;&#10;&lt;p&gt;样本集的质量也值得一提。&lt;code&gt;models/radial/REPORT.md&lt;/code&gt;（九缸星形发动机，2026-09-25 完成）里每一项参数都带来源：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;项目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;值&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;来源&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;缸径 × 行程&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;146 × 146 mm&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;R-1340 Wasp：5.75 × 5.75 in（Wikipedia、FAA TCDS）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;点火顺序&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1-3-5-7-9-2-4-6-8&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;FAA-H-8083-32 Powerplant Handbook&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;凸轮环&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;每轨道 4 凸轮、2 轨道、1/8 曲轴转速、反向&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(n−1)/2 规则，FAA-H-8083-32&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;减速&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3:2 行星：72T 铃齿轮 + 固定 36T 太阳轮 + 6×18T 行星轮&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;enginehistory.org&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;还有一句很关键的验证记录：&lt;strong&gt;轴承 STEP 往返测试，用未改动的 main 版 cadgen，最大相对体积差 1.01e-7。&lt;/strong&gt; 这是可复现的量化证据，不是&amp;quot;看起来对&amp;quot;。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;tendon_hand&lt;/code&gt; 则是 24 个关节自由度、48 个对置肌腱驱动器的研究项目，明确标注&amp;quot;工程状态仍在进行中&amp;quot;——它连&amp;quot;哪些是已完成的、哪些是交接状态&amp;quot;都用文件（&lt;code&gt;RESUME_STATUS.md&lt;/code&gt;、各种 &lt;code&gt;*_handoff.md&lt;/code&gt;）分开记录。这种状态管理方式，比大多数 CAD 仓库成熟。&lt;/p&gt;&#10;&lt;h2 id="七审查哲学证据优先不认证不能测就明说"&gt;七、审查哲学：证据优先，不认证，不能测就明说&#10;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;skills/dfm/SKILL.md&lt;/code&gt; 的开头就把自己限死了：&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;这是一个 &lt;strong&gt;guided review skill，不是自动特征识别或制造认证引擎&lt;/strong&gt;。不可用的检查必须显式报告。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;它的证据规则非常具体：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;优先用&lt;strong&gt;用户实际供应商/工装规范&lt;/strong&gt;，而不是通用指导；&lt;/li&gt;&#10;&lt;li&gt;遇到冲突规范要&lt;strong&gt;记录冲突&lt;/strong&gt;，不擅自选一个；&lt;/li&gt;&#10;&lt;li&gt;优先精确的 STEP/B-rep 测量（半径、解析面）；只有网格时&lt;strong&gt;记录其分辨率和近似限制&lt;/strong&gt;；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;截图只能支持&amp;quot;疑似问题&amp;quot;，不能支持&amp;quot;测量通过/不通过&amp;quot;&lt;/strong&gt;；&lt;/li&gt;&#10;&lt;li&gt;源码参数描述的是设计意图，&lt;strong&gt;必须先验证它与被审查的产物一致&lt;/strong&gt;，才能当证据；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;绝不从渲染的材质或颜色推断合金、树脂、强度或坯料厚度&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;code&gt;dfam-check&lt;/code&gt; 更极端：它的工具是 &lt;strong&gt;fact-only&lt;/strong&gt;——只报测量值，&lt;strong&gt;不输出 pass/fail 或就绪状态&lt;/strong&gt;，判断权归工作流。而且它明确&amp;quot;从不切片、不上传、不启动打印任务&amp;quot;。&lt;/p&gt;&#10;&lt;p&gt;这套哲学在 AI 工具里很少见。多数工具倾向于给一个结论（&amp;ldquo;这个零件可以注塑，建议加大圆角&amp;rdquo;），而 text-to-cad 倾向于给&lt;strong&gt;一个可追溯的证据链 + 明确的不可测项&lt;/strong&gt;。对工程交付，后者才是能签字的东西——因为签字需要的是&amp;quot;我量过、规则来源是这一版这一节&amp;quot;，不是&amp;quot;AI 说可以&amp;quot;。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;engineering-drawing&lt;/code&gt; 技能里也有同一种洁癖：图纸是&lt;strong&gt;从零件几何投影出来的文档&lt;/strong&gt;，尺寸放在几何上的点之间，中心标记在几何上找，&amp;ldquo;没有任何东西是手画的，没有任何数字是你敲的，除非你主动覆盖&amp;rdquo;。输出是&lt;strong&gt;一张 PDF&lt;/strong&gt;——车间收到的就是它。它同时明确区分：&lt;code&gt;$dxf&lt;/code&gt; 做的是刀路和展开，那是&lt;strong&gt;工具路径，不是文档&lt;/strong&gt;，两者是不同的活。&lt;/p&gt;&#10;&lt;h2 id="八gauntlet一个盲评美学的质量闭环"&gt;八、Gauntlet：一个盲评美学的质量闭环&#10;&lt;/h2&gt;&lt;p&gt;这是我觉得最有意思的一块。&lt;code&gt;models/radial/GAUNTLET.md&lt;/code&gt; 定义了一套&lt;strong&gt;盲评协议&lt;/strong&gt;：&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;每个零件，一个全新上下文的评审者只看两张图——我们的渲染（presentation envelope, presentation-large）和一张博物馆/修复实物照片，作为 &lt;code&gt;a.png&lt;/code&gt; / &lt;code&gt;b.png&lt;/code&gt; &lt;strong&gt;随机顺序&lt;/strong&gt;呈现（密钥在 &lt;code&gt;tmp/critic/keys/&lt;/code&gt;，&lt;strong&gt;永远不给评审者看&lt;/strong&gt;）。问题是&amp;quot;哪个更美？&amp;quot;。输的一方，评审者&lt;strong&gt;只指出一个最大差距&lt;/strong&gt;，这个差距路由回该零件的负责人。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart LR&#10; P["某个零件"] --&gt; C1["渲染（presentation-large）"]&#10; REF["博物馆 / 修复实物照片"] --&gt; PACK["critic_pack.py&lt;br/&gt;a.png / b.png 随机顺序"]&#10; C1 --&gt; PACK&#10; PACK --&gt; CR["全新上下文的评审者&lt;br/&gt;只看两张图"]&#10; CR --&gt; Q{"哪个更美？"}&#10; Q --&gt;|赢| DONE["通过"]&#10; Q --&gt;|输| GAP["只指出一个最大差距"]&#10; GAP --&gt; OWNER["路由给该零件负责人"]&#10; OWNER --&gt; P&#10; style CR fill:#7C3AED,stroke:#7C3AED,color:#fff&#10; style GAP fill:#EF4444,stroke:#EF4444,color:#fff&lt;/pre&gt;&lt;p&gt;它的价值不在&amp;quot;审美&amp;quot;，而在&lt;strong&gt;方法&lt;/strong&gt;：随机顺序 + 密钥不外露 + 全新上下文 + 只允许指出一个差距。这四条把&amp;quot;评审者偏袒自己人做的东西&amp;quot;和&amp;quot;评审者一次提十条意见导致无法收敛&amp;quot;两个常见失效都堵住了。&lt;/p&gt;&#10;&lt;p&gt;看它的实际记录就知道这套方法有多不留情面——连续多轮全输，而且失败原因具体到可执行：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;连杆轮：&amp;ldquo;可动连杆看起来像短粗的黄铜杯形衬套……没有杆身伸到活塞&amp;rdquo; → 路由给 layout（窗口/曲轴箱剖视/相机）；&lt;/li&gt;&#10;&lt;li&gt;缸头轮：&amp;ldquo;摇臂箱是过大的平盖长方体，压过了缸头本身，应该是小而圆的铸造壳体&amp;rdquo; → 路由给 heads；&lt;/li&gt;&#10;&lt;li&gt;活塞轮：&amp;ldquo;腕销凸台有黑色斑点的 z-fighting，裙部以一个截锥式的平面斜切收尾；应该显示中空内部、肋状凸台、干净的销孔&amp;rdquo; → 路由给 pistons。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;注意最后一条：评审者&lt;strong&gt;不知道&lt;/strong&gt;哪张图是自己的，它照样能指出具体缺陷。这就是盲评的意义。&lt;/p&gt;&#10;&lt;p&gt;对做工程可视化和汇报的人，这套协议可以直接搬——把&amp;quot;渲染质量&amp;quot;从主观印象变成一个可收敛、可追溯的闭环。&lt;/p&gt;&#10;&lt;h2 id="九技能矩阵与路由"&gt;九、技能矩阵与路由&#10;&lt;/h2&gt;&lt;p&gt;12 个技能，覆盖从建模到交付的完整链路：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;技能&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;干什么&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;CAD&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;从自然语言或图片请求创建/编辑参数化模型，主输出 STEP，可导出 STL / 3MF / GLB&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;step.parts&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;找标准件：螺丝、轴承、电机、连接器&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Engineering Drawing&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;从零件出带尺寸的工程图纸（PDF）：视图、隐藏线、尺寸、孔标注、标题栏，ISO 图幅&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;DXF&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2D 图纸：型材、模板、垫片、切割排版（刀路，不是文档）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;URDF&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;机器人结构文件：link、joint、limit、inertial、mesh&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;SRDF&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;在 URDF 上补 MoveIt 规划组、末端执行器、位姿、碰撞规则&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;SDF&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;仿真模型与世界：frame、物理、传感器、灯光&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;SendCutSend&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;上传前校验 DXF 与 STEP&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;DfAM Check&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;按工艺测量网格可打印性：壁厚、悬垂、支撑体积、打印朝向（FDM/SLS/SLA/DLP/金属 PBF/MJF）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;DFM&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;钣金、CNC、注塑的可制造性审查，每条结论带测量证据和引用的规则来源&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;G-code&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;用 OrcaSlicer 切片成打印机可用的 G-code，用你自己的打印机预设&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Bambu Labs&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;通过 Bambu Connect / 官方 App / Bambu Studio 送打到 Bambu Lab 打印机&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;路由逻辑（技能之间边界清楚，不重叠）：&lt;/p&gt;&#10;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TD&#10; Q["自然语言请求"] --&gt; R{"任务类型"}&#10; R --&gt;|"建模 / 改模型"| CAD["cad → STEP（主输出）&lt;br/&gt;STL / 3MF / GLB"]&#10; R --&gt;|"2D 切割 / 展开"| DXF["dxf → 刀路图"]&#10; R --&gt;|"出图纸"| ED["engineering-drawing → 一张 PDF"]&#10; R --&gt;|"机器人描述"| UR["urdf / srdf / sdf"]&#10; R --&gt;|"可制造性审查"| DFM["dfm（钣金 / CNC / 注塑）&lt;br/&gt;dfam-check（增材）"]&#10; R --&gt;|"切片与打印"| GC["gcode（OrcaSlicer）→ bambu-labs"]&#10; R --&gt;|"标准件"| SP["step-parts"]&#10; R --&gt;|"上传前校验"| SC["sendcutsend"]&#10; style CAD fill:#0A7CFF,stroke:#0A7CFF,color:#fff&#10; style DFM fill:#F59E0B,stroke:#F59E0B,color:#fff&#10; style ED fill:#2EA44F,stroke:#2EA44F,color:#fff&lt;/pre&gt;&lt;p&gt;几个边界写得很干净，值得注意：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;$dxf&lt;/code&gt; 拥有 2D，&lt;code&gt;$cad&lt;/code&gt; 拥有这张图纸投影出的任何 3D 零件&lt;/strong&gt;——谁拥有几何，谁负责；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;$gcode&lt;/code&gt; 永不接触打印机&lt;/strong&gt;，它只切片；Bambu 的路交给 &lt;code&gt;$bambu-labs&lt;/code&gt;，其他打印机把 &lt;code&gt;.gcode&lt;/code&gt; 交回给用户；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;$dfam-check&lt;/code&gt; 从不切片、不上传、不启动打印&lt;/strong&gt;，它只测量；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;URDF 的 &lt;code&gt;.urdf&lt;/code&gt; 文件就是唯一真相源&lt;/strong&gt;，不允许为它建 Python 生成管线（&amp;ldquo;There is no &lt;code&gt;gen_urdf()&lt;/code&gt; contract&amp;rdquo;）——这条是对&amp;quot;脚本即工具&amp;quot;的例外，说明规则是按领域定的，不是一刀切。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="十运行形态uvpinned-版本mcp-apps常驻-daemon"&gt;十、运行形态：uv、pinned 版本、MCP Apps、常驻 daemon&#10;&lt;/h2&gt;&lt;p&gt;运行形态上几个具体事实：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;一切通过 uv 跑&lt;/strong&gt;，所有技能共享同一份安装和同一个 warm build daemon；技能里的 &lt;code&gt;cadgen&lt;/code&gt; 实际是 &lt;code&gt;uvx --no-config --managed-python --python 3.13 --from cadgen==0.7.21 cadgen&lt;/code&gt;——&lt;strong&gt;版本是钉死的&lt;/strong&gt;；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;首次运行才下载&lt;/strong&gt;，后续复用；旧版本留在 uv 缓存里，直到 &lt;code&gt;uv cache prune&lt;/code&gt;；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;viewer 是本地 HTTP 服务&lt;/strong&gt;，端口 3245（或 &lt;code&gt;--port&lt;/code&gt; 指定），按绝对路径服务每个 CAD 文件；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;MCP 服务（&lt;code&gt;cadgen mcp&lt;/code&gt;）走 viewer 自己的路由&lt;/strong&gt;，两种呈现方式：Codex 类宿主给 tab（侧栏 CAD、每个 thread 一个 CAD tab、&lt;em&gt;Open with CAD&lt;/em&gt;），其他 MCP Apps 宿主在对话里挂 viewer 卡片；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;agents 只用绝对路径命名模型&lt;/strong&gt;——&amp;ldquo;agents name models by absolute path only&amp;rdquo;，这条看似琐碎，实际是避免路径歧义的关键约束；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;离线时什么都不发、一切照常工作&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;安装方式上有个细节值得说：README 推荐的&lt;strong&gt;首选安装方式是&amp;quot;让智能体自己装&amp;quot;&lt;/strong&gt;——发一句 &lt;code&gt;Install text-to-cad from https://github.com/earthtojake/text-to-cad&lt;/code&gt;。这不是营销话术，而是这个项目的自我定位：它的产品就是给智能体用的，所以安装动作本身也交给智能体执行。&lt;/p&gt;&#10;&lt;p&gt;另外 &lt;code&gt;latest&lt;/code&gt; 分支和 &lt;code&gt;main&lt;/code&gt; 分支的分工很清晰：&lt;code&gt;latest&lt;/code&gt; 只放插件、每个发布一个 commit、&lt;strong&gt;只由 &lt;code&gt;Publish Release&lt;/code&gt; 写&lt;/strong&gt;；&lt;code&gt;main&lt;/code&gt; 是开发分支，也能装，但可能含未发布的改动。各宿主引用分支的语法不同（&lt;code&gt;#latest&lt;/code&gt;、&lt;code&gt;--ref latest&lt;/code&gt;、&lt;code&gt;@latest&lt;/code&gt;、&lt;code&gt;--branch latest&lt;/code&gt;），不写就装 &lt;code&gt;main&lt;/code&gt;。&lt;/p&gt;&#10;&lt;h2 id="十一工程治理合并即发布"&gt;十一、工程治理：合并即发布&#10;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; 里的发布规则是我见过最简洁的一套：&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;一个改动 &lt;code&gt;VERSION&lt;/code&gt; 的 PR 就是一个发布，合并它即发布。&lt;/strong&gt; 正常开发期间绝不 bump，也不要自己挑版本号——如果请求没说明是 patch / minor / major 或精确版本，就要问。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart LR&#10; PR["PR 改动 VERSION"] --&gt; TC["Test：跑全部 job&lt;br/&gt;Version Check 校验 bump"]&#10; TC --&gt; MERGE["需明确批准才合并&lt;br/&gt;合并 = 发布"]&#10; MERGE --&gt; PUB["Publish Release&lt;br/&gt;插件 ZIP + bundle + wheel + sdist&lt;br/&gt;安装并跑一遍 wheel · 传 PyPI · 等索引列出"]&#10; PUB --&gt; LATEST["latest 分支：每发布一个 commit&lt;br/&gt;只由 Publish Release 写"]&#10; style MERGE fill:#F59E0B,stroke:#F59E0B,color:#fff&#10; style PUB fill:#0A7CFF,stroke:#0A7CFF,color:#fff&lt;/pre&gt;&lt;p&gt;几条配套的纪律：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;main&lt;/code&gt; 是&lt;strong&gt;唯一长期分支&lt;/strong&gt;，从它开分支、向它开 PR，&lt;strong&gt;绝不直接推 &lt;code&gt;main&lt;/code&gt;&lt;/strong&gt;；&lt;/li&gt;&#10;&lt;li&gt;Version Check 只认本仓库的分支（&lt;strong&gt;fork 不能发布&lt;/strong&gt;），且必须是超过 &lt;code&gt;main&lt;/code&gt; 当前版本和最新 tag 的版本；&lt;/li&gt;&#10;&lt;li&gt;发布 PR 的 checks 通过后，&lt;strong&gt;只在明确指示下合并&lt;/strong&gt;；&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Publish Release&lt;/code&gt; 会找到把合并树完整测过的那次 Test 运行，否则先跑一遍——&lt;strong&gt;发布是整体测试的&lt;/strong&gt;；&lt;/li&gt;&#10;&lt;li&gt;没有 development symlink 布局，&lt;strong&gt;树里每个路径都是真实文件&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这套治理的可贵之处在于它把&amp;quot;发布&amp;quot;这个动作压缩成一个可验证的单一事件：&lt;strong&gt;改版本号 + 合并&lt;/strong&gt;。没有&amp;quot;发版分支&amp;quot;、没有&amp;quot;手动打包&amp;quot;、没有&amp;quot;忘了同步 tag&amp;quot;这类常见的漂移源。&lt;/p&gt;&#10;&lt;h2 id="十二现实约束smart-app-control遥测内核依赖"&gt;十二、现实约束：Smart App Control、遥测、内核依赖&#10;&lt;/h2&gt;&lt;p&gt;丑话说在前面，几条实际会踩的：&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;1. Windows 11 Smart App Control 会直接阻断。&lt;/strong&gt; 几何内核 &lt;code&gt;OCP&lt;/code&gt;（Open CASCADE 的 Python 绑定）的 wheel 带一个&lt;strong&gt;未签名的原生模块&lt;/strong&gt;。Windows 11 的 Smart App Control 拦截未签名原生代码，所以在开启 SAC 的机器上（全新安装默认开启），每个 &lt;code&gt;cadgen&lt;/code&gt; 命令和 &lt;code&gt;import build123d&lt;/code&gt; 都会失败：&lt;code&gt;ImportError: DLL load failed while importing OCP&lt;/code&gt;，事件查看器在 CodeIntegrity › Operational 下记录 &lt;strong&gt;Event ID 3077&lt;/strong&gt;。&lt;code&gt;cadgen doctor&lt;/code&gt; 能识别这个情况。&lt;/p&gt;&#10;&lt;p&gt;关键是：&lt;strong&gt;Smart App Control 没有单应用例外&lt;/strong&gt;。要么关掉（关掉后只能重装 Windows 才能再开），要么在 WSL 下跑（那里不适用）。这个 wheel 是 cadquery-ocp 项目构建的，&lt;strong&gt;签名不是这个仓库能做的事&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;2. 遥测默认开启。&lt;/strong&gt; 上报的是版本、安装来源、OS 与宿主 app、各类计数（工具调用频次、失败原因用固定词表、视图使用、格式分布、构建与快照数量、耗时），以及崩溃报告（错误类型和发生位置，&lt;strong&gt;不含消息&lt;/strong&gt;，你自己的代码只留占位符）。服务器按 IP 推断国家（不保留 IP），存进 PostHog。&lt;strong&gt;从不上报文件名、路径、内容或 prompt。&lt;/strong&gt; 关闭方式：&lt;code&gt;uvx cadgen telemetry off&lt;/code&gt;（同时删除已发送数据）、界面里的 Share usage stats、或 &lt;code&gt;DO_NOT_TRACK=1&lt;/code&gt; / &lt;code&gt;CADGEN_TELEMETRY=0&lt;/code&gt;；CI 和开发安装默认不发送。&lt;/p&gt;&#10;&lt;p&gt;更新检查是另一回事：每天最多一次匿名请求 &lt;code&gt;api.texttocad.dev/v1/versions&lt;/code&gt;，不带 ID、路径或任何关于你的信息，不进 CI，&lt;code&gt;CADGEN_UPDATE_CHECK=0&lt;/code&gt; 可关。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;3. 依赖不轻。&lt;/strong&gt; Python 3.11+、Node 20+（打包 runtime / viewer / core / 文档站需要 Node 22）、uv、Open CASCADE 7.9、build123d 0.11。纯 Python 工作可以推迟 Node，但&amp;quot;轻量插件&amp;quot;这个印象不成立——它是一个带原生模块和 JS runtime 的运行时。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;4. 项目仍年轻。&lt;/strong&gt; 创建约 6 个月，版本 0.7.x，43 个开放 issue，4 天 5 个版本的节奏说明它在快速变动。README 里也承认 &lt;code&gt;main&lt;/code&gt; 可能含未发布改动，且已退役的 &lt;code&gt;cad-viewer&lt;/code&gt;、&lt;code&gt;cad-mcp-setup&lt;/code&gt; 技能需要手动清理——这类&amp;quot;接口仍在收敛&amp;quot;的信号很明确。&lt;/p&gt;&#10;&lt;h2 id="十三对-bim-与工程交付的启发"&gt;十三、对 BIM 与工程交付的启发&#10;&lt;/h2&gt;&lt;p&gt;抛开 CAD 本身，有几条是可以直接搬走的：&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;1. 把&amp;quot;生成&amp;quot;变成&amp;quot;源 + 产物&amp;quot;的分离。&lt;/strong&gt; 参数化脚本是源，产物是函数结果，产物本身不依赖源就能被读取。这正是 BIM 里&amp;quot;族/参数/导出物&amp;quot;关系应有的样子——很多 BIM 工作流的痛点恰恰是导出物离开了生成环境就无法解释。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;2. 给工具写&amp;quot;法律&amp;quot;，并配压力测试。&lt;/strong&gt; &amp;ldquo;违反法律的改动即使能跑也是错的&amp;rdquo;——这条比代码规范更有效，因为它给的是&lt;strong&gt;判定方法&lt;/strong&gt;（&amp;ldquo;仅读这个文件能否完整解读它？&amp;quot;），不是偏好。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;3. 审查输出区分&amp;quot;测量&amp;quot;和&amp;quot;判断&amp;rdquo;。&lt;/strong&gt; fact-only 的工具只报事实，判断归工作流。这个分离在 BIM 校审里同样成立：检查器报&amp;quot;净高 2.35 m、规则来源是 GB 50096 第 X 条&amp;quot;，而不是报&amp;quot;不合规&amp;quot;。前者可追溯、可签字，后者不可。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;4. 明确&amp;quot;不可检查项&amp;quot;是输出的一部分。&lt;/strong&gt; DFM 技能要求显式报告不可用的检查。很多校审报告的问题不是判断错，而是&lt;strong&gt;把无法验证的项写成了已验证&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;5. 盲评闭环值得复制到可视化质量管控上。&lt;/strong&gt; 随机顺序 + 密钥不外露 + 全新上下文 + 只允许指出一个差距——这是一个可收敛的质量闭环，比&amp;quot;领导说渲染不够好&amp;quot;强得多。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;6. 把&amp;quot;合并即发布&amp;quot;作为最小治理。&lt;/strong&gt; 一个可验证的单一事件，比一套发版流程可靠。&lt;/p&gt;&#10;&lt;h2 id="十四成熟度评估"&gt;十四、成熟度评估&#10;&lt;/h2&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;维度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;现状&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;规模&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;20,883 star / 2,063 fork&lt;/strong&gt;，2,932 文件，43 开放 issue，2026-04-22 创建&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;许可&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;MIT&lt;/strong&gt;，对商用与二次开发友好&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;版本&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0.7.21，4 天 5 个发布，仍在快速迭代&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;架构&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;三层清晰（技能 / 引擎 / 呈现），包依赖边界显式声明，法律 + 压力测试&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;契约&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;模型脚本即工具、装饰器只声明、生成物与源码解耦、agents 只用绝对路径&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;审查&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;证据优先、不认证、显式报告不可测项、禁止从渲染推断材料属性&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;质量方法&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;盲评 Gauntlet 协议、可复现的量化验证（1.01e-7 体积差）、状态文件分离&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;治理&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;合并即发布、fork 不能发布、&lt;code&gt;latest&lt;/code&gt; 只由发布流程写、不直接推 &lt;code&gt;main&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;成熟度&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;仍在收敛期&lt;/strong&gt;：接口在变、已退役技能需手动清理、依赖不轻、Windows 上有硬阻断&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;strong&gt;已经确认的&lt;/strong&gt;：三层架构成立且边界明确；模型契约可执行；生成物独立性有明确判定方法；审查哲学在文档中自洽；发布治理完整且可验证；样本集带可复现的量化证据。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;需要你自己验证的&lt;/strong&gt;：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;它能不能接住&lt;strong&gt;你&lt;/strong&gt;的工程——大型装配、外部导入 STEP、复杂运动学、既有命名规范；&lt;/li&gt;&#10;&lt;li&gt;Windows 上 Smart App Control 是否开启（这是硬阻断，无例外）；&lt;/li&gt;&#10;&lt;li&gt;遥测策略是否符合你的合规要求（默认开启，可关，但需要主动关）；&lt;/li&gt;&#10;&lt;li&gt;技能文档与安装版本的一致性——README 提醒 &lt;code&gt;main&lt;/code&gt; 可能含未发布改动，已退役技能不会自动移除；&lt;/li&gt;&#10;&lt;li&gt;与既有 BIM 工具链的互操作（STEP 是通用交换格式，但属性、图层、族语义不在 cadgen 的契约范围内）。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;适合谁&lt;/strong&gt;：需要&amp;quot;AI 能真的产出可交付物&amp;quot;而不是&amp;quot;AI 能画个好看的模型&amp;quot;的工程团队；愿意把参数化脚本当作源、把产物当作函数结果的人；需要可追溯审查证据（而不是结论）的场合；以及想把&amp;quot;技能契约 + 法律 + 压力测试&amp;quot;这套方法搬到自己项目里的人。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;不太适合&lt;/strong&gt;：不能接受默认遥测的强合规环境；Windows 上无法关闭 Smart App Control 的机器；只想要&amp;quot;点一下出个模型&amp;quot;的轻量场景（它的价值在契约，不在便利）；以及需要属性/族语义级 BIM 交换的场合——它管的是几何，不是 BIM 数据模型。&lt;/p&gt;&#10;&lt;h2 id="十五结语"&gt;十五、结语&#10;&lt;/h2&gt;&lt;p&gt;text-to-cad 真正值得记住的，不是&amp;quot;2 万 star&amp;quot;，而是它对&amp;quot;AI 做工程&amp;quot;这件事的三个立场：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;源必须存在&lt;/strong&gt;——模型是脚本，不是一次性产物；改一个参数要能重跑，而不是重新生成；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;产物必须独立&lt;/strong&gt;——生成文件与它的源代码完全独立，这是法律，不是惯例，而且配了压力测试；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;判断必须有出处&lt;/strong&gt;——工具只给测量，规则要引用到具体版本和章节，不可测的项要明说，截图不能当作测量结论。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这三条合起来，把&amp;quot;AI 生成&amp;quot;从演示拉回到交付。它没有声称 AI 能做工程判断，它做的是：&lt;strong&gt;让 AI 能执行，让证据能追溯，让边界能承认。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;在一个几乎所有 AI 工具都在承诺&amp;quot;我都能做&amp;quot;的赛道里，一个明确写着&amp;quot;这是 guided review，不是认证引擎&amp;quot;、&amp;ldquo;不可用的检查必须显式报告&amp;rdquo;、&amp;ldquo;绝不从渲染的颜色推断合金&amp;quot;的项目，工程气质是罕见的。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="免责声明"&gt;免责声明&#10;&lt;/h2&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;本文为个人学习性质的开源项目文档解读，不构成对该软件的推荐、担保或安全评估。text-to-cad 为 &lt;strong&gt;MIT 许可&lt;/strong&gt;的开源项目，处于快速迭代期（数据快照 &lt;strong&gt;2026-10-16&lt;/strong&gt;，版本 0.7.21，创建约 6 个月）；文中数据来自 GitHub API 与仓库自身文档（README、CONTRIBUTING、AGENTS、各 SKILL.md、packages 文档、models 报告），不代表你的实机表现。特别提示：① &lt;strong&gt;默认开启遥测&lt;/strong&gt;（不含文件名、路径、内容、prompt，可关闭），使用前请核对你的合规要求；② &lt;strong&gt;Windows 11 Smart App Control 会硬阻断&lt;/strong&gt; OCP 原生模块，无单应用例外，只能关闭 SAC 或改用 WSL；③ 依赖不轻（Python 3.11+、Node 20+/22、uv、Open CASCADE 7.9、build123d 0.11）；④ 文档中的质量数据（如 1.01e-7 体积差）来自项目自身的验证记录，需在&lt;strong&gt;你自己的工程&lt;/strong&gt;上复现后才可依赖；⑤ 涉及制造、打印、加工的判断属于工程责任范畴，本项目的审查技能明确声明&lt;strong&gt;不是认证引擎&lt;/strong&gt;，最终判断仍需由具备资质的人员作出。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;</description></item></channel></rss>