<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI Agent on 我的博客</title><link>https://blog.5616760.com/tags/ai-agent/</link><description>Recent content in AI Agent on 我的博客</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Sun, 04 Oct 2026 06:50:00 +0800</lastBuildDate><atom:link href="https://blog.5616760.com/tags/ai-agent/index.xml" rel="self" type="application/rss+xml"/><item><title>AI-CAD：把施工图深化交给 AI Agent，规则引擎 + 大模型 + 人在回路怎么配</title><link>https://blog.5616760.com/0033.html</link><pubDate>Sun, 04 Oct 2026 06:50:00 +0800</pubDate><guid>https://blog.5616760.com/0033.html</guid><description>&lt;p&gt;先说一个可能让部分人略感意外的判断：&lt;strong&gt;在施工图深化这件事上，&amp;ldquo;AI 直接画图&amp;quot;大概率是个错误命题。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;原因不复杂。施工图深化的绝大部分工作量，既不是创意、也不是判断，而是&lt;strong&gt;规则化、重复性的劳动&lt;/strong&gt;——标注、材料表、规范逐条检查。这些活儿本来就有明确的规范和明确的判据，把它交给一个擅长自由发挥的大模型，反而是用错了工具。&lt;/p&gt;&#10;&lt;p&gt;AI-CAD 这个项目有意思的地方，就在于它一开始就把这件事想清楚了：&lt;strong&gt;不是让 AI 画图，而是让 AI 做&amp;quot;深化&amp;quot;这件苦力活儿，人守着关键节点做决策。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="图：AI-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/0033-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%e5%88%b0%e5%ba%95%e6%83%b3%e8%a7%a3%e5%86%b3%e4%bb%80%e4%b9%88%e9%97%ae%e9%a2%98" &gt;它到底想解决什么问题&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e4%ba%8c%e4%b8%89%e6%94%af%e6%9f%b1%e5%87%86%e7%a1%ae%e7%81%b5%e6%b4%bb%e5%8f%af%e6%8e%a7" &gt;三支柱：准确、灵活、可控&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e4%b8%89%e6%95%b4%e4%bd%93%e6%9e%b6%e6%9e%84%e4%b8%80%e5%ba%a7%e4%ba%94%e5%b1%82%e7%9a%84%e5%a1%94" &gt;整体架构：一座五层的塔&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e5%9b%9b%e8%a7%84%e5%88%99%e5%bc%95%e6%93%8e%e4%b8%ba%e4%bb%80%e4%b9%88%e4%b8%8d%e7%94%a8-llm-%e5%88%a4%e8%a7%84%e8%8c%83" &gt;规则引擎：为什么不用 LLM 判规范&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e4%ba%94%e6%8a%80%e6%9c%af%e6%a0%88%e4%b8%8e%e5%85%b3%e9%94%ae%e8%ae%be%e8%ae%a1%e5%86%b3%e7%ad%96" &gt;技术栈与关键设计决策&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e5%85%adagent-%e9%93%be%e8%b7%af%e4%b8%8e%e4%ba%ba%e5%9c%a8%e5%9b%9e%e8%b7%af" &gt;Agent 链路与人在回路&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e4%b8%83%e5%8f%af%e6%89%a9%e5%b1%95%e6%80%a7%e5%8a%a0%e4%b8%80%e4%b8%aa%e4%b8%93%e4%b8%9a%e8%a6%81%e5%81%9a%e5%a4%9a%e5%b0%91%e4%ba%8b" &gt;可扩展性：加一个专业要做多少事&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e5%85%ab%e4%b8%8d%e5%8f%aa%e6%98%af%e6%a3%80%e6%9f%a5%e7%a2%b0%e6%92%9e%e5%86%b2%e7%aa%81%e4%b8%8e%e5%87%ba%e5%9b%be%e6%b7%b1%e5%8c%96" &gt;不只是检查：碰撞、冲突与出图深化&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e4%b9%9d%e4%ba%a4%e4%bb%98%e5%bd%a2%e6%80%81%e5%8f%8c%e5%87%bb%e4%b8%80%e4%b8%aa-exe-%e5%b0%b1%e8%83%bd%e8%b7%91" &gt;交付形态：双击一个 exe 就能跑&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e5%8d%81%e5%8d%a0%e4%bd%8d%e6%b8%85%e5%8d%95%e5%93%aa%e4%ba%9b%e6%98%af%e7%9c%9f%e7%9a%84%e6%b2%a1%e5%81%9a%e5%ae%8c" &gt;占位清单：哪些是真的没做完&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%e8%b4%a8%e9%87%8f409-%e4%b8%aa%e6%b5%8b%e8%af%95%e5%92%8c%e4%b8%80%e6%9d%a1%e7%ba%a2%e7%ba%bf" &gt;工程质量：409 个测试和一条红线&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e5%8d%81%e4%ba%8c%e7%bb%99%e8%b0%81%e7%94%a8%e4%bb%a5%e5%8f%8a%e7%8e%b0%e5%ae%9e%e4%b8%80%e7%82%b9%e7%9a%84%e8%af%9d" &gt;给谁用、以及现实一点的话&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="一它到底想解决什么问题"&gt;一、它到底想解决什么问题&#10;&lt;/h2&gt;&lt;p&gt;AI-CAD 的自我定位写得很直白：&lt;strong&gt;这不是&amp;quot;AI 画图&amp;quot;工具，而是 AI 辅助施工图深化 Agent——基于人类方案，由 AI 完成规则化、重复性的深化工作。&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;仓库&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="https://github.com/flowerjunjie/AI-CAD" target="_blank" rel="noopener"&#10; &gt;github.com/flowerjunjie/AI-CAD&lt;/a&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;Python（核心引擎）+ TypeScript（React 面板）&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;桌面端应用（FastAPI 桥 + React 面板，PyInstaller 打包成双击 exe）&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;把设计师 80% 的重复性工作时间自动化&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;人在回路——关键节点暂停等待确认，AI 不直接出图&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;Phase 0-3 全部收口 + M3 出图深化 + M4 碰撞检测 + M5 改动冲突&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;规则引擎保准确 + LLM 保灵活 + 人在回路保可控。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;顶层的产品哲学则是一句话：&lt;strong&gt;让 AI 做 AI 擅长的事（规则化、重复性工作），让人做人擅长的事（判断、决策、创新）。&lt;/strong&gt;&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;需要先说明的是：这是一个&lt;strong&gt;个人/小团队性质的开源项目&lt;/strong&gt;（作者 flowerjunjie，仓库 2026-09-26 创建，截至 2026-10-04 约 1 star），不是商用产品。它的价值不在&amp;quot;可以直接拿来用&amp;rdquo;，而在于&lt;strong&gt;它展示了一套把 AI 塞进严谨工程流程里的完整范式&lt;/strong&gt;——尤其是&amp;quot;哪些交给 LLM、哪些绝不能交给 LLM&amp;quot;这条边界怎么划。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;h2 id="二三支柱准确灵活可控"&gt;二、三支柱：准确、灵活、可控&#10;&lt;/h2&gt;&lt;p&gt;理解 AI-CAD 的关键，是理解它为什么需要三个看似矛盾的东西同时存在。&lt;/p&gt;&#10;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TD&#10; subgraph P1["规则引擎 · 保准确"]&#10; R1["规范条文写成 DSL 代码"]&#10; R2["命中 / 放行 / 参数覆盖，结果确定"]&#10; end&#10; subgraph P2["LLM · 保灵活"]&#10; L1["理解自然语言意图"]&#10; L2["把'三室一厅100㎡'变成结构化方案"]&#10; end&#10; subgraph P3["人在回路 · 保可控"]&#10; H1["每个关键节点暂停"]&#10; H2["设计师确认后才继续"]&#10; end&#10; R1 --&gt; OUT["成果：DWG + 违规清单 + 户型图"]&#10; L2 --&gt; OUT&#10; H2 --&gt; OUT&#10;&#10; style R1 fill:#10b981,stroke:#047857,color:#fff&#10; style R2 fill:#10b981,stroke:#047857,color:#fff&#10; style L1 fill:#3b82f6,stroke:#1e40af,color:#fff&#10; style L2 fill:#3b82f6,stroke:#1e40af,color:#fff&#10; style H1 fill:#f59e0b,stroke:#b45309,color:#fff&#10; style H2 fill:#f59e0b,stroke:#b45309,color:#fff&#10; style OUT fill:#8b5cf6,stroke:#6d28d9,color:#fff&lt;/pre&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;规则引擎保准确&lt;/strong&gt; —— 规范条文（门宽 ≥ 0.9m、窗台 ≤ 0.9m 等）写成 DSL 代码，判断结果&lt;strong&gt;确定、可复现、可追溯&lt;/strong&gt;，不依赖模型的&amp;quot;心情&amp;quot;；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;LLM 保灵活&lt;/strong&gt; —— 人话进来（&amp;ldquo;帮我出个三室一厅 100 平&amp;rdquo;），LLM 负责意图理解和方案结构化，这一层本来就是它的强项；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;人在回路保可控&lt;/strong&gt; —— 每个关键节点暂停等设计师确认，AI 不直接出图，出问题有人兜底。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这三者不是并列的营销词，而是&lt;strong&gt;各管一段&lt;/strong&gt;：LLM 管入口的模糊输入，规则引擎管硬性判据，人管最后的决策。弄混了任何一段，系统就不可信。&lt;/p&gt;&#10;&lt;h2 id="三整体架构一座五层的塔"&gt;三、整体架构：一座五层的塔&#10;&lt;/h2&gt;&lt;p&gt;从架构图看，系统分五层，自上而下职责分明：&lt;/p&gt;&#10;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TD&#10; subgraph UI["界面层 · React 面板 + FastAPI 桥（PyInstaller 打包）"]&#10; U1["CAD 编辑器"]&#10; U2["图元预览"]&#10; U3["规则面板"]&#10; U4["成果导出"]&#10; end&#10; subgraph ORCH["Agent 编排引擎"]&#10; O1["任务分解 → 执行 → 验证"]&#10; end&#10; subgraph CORE["核心能力模块池"]&#10; C1["CAD 引擎&lt;br/&gt;ezdxf + COM"]&#10; C2["规则引擎&lt;br/&gt;规范校验"]&#10; C3["对话引擎&lt;br/&gt;LLM"]&#10; end&#10; subgraph KB["知识层"]&#10; K1["ChromaDB 本地向量库"]&#10; K2["SQLite 图元库"]&#10; K3["规范文档"]&#10; end&#10;&#10; UI --&gt; ORCH&#10; ORCH --&gt; CORE&#10; CORE --&gt; KB&#10;&#10; style O1 fill:#8b5cf6,stroke:#6d28d9,color:#fff&#10; style C1 fill:#3b82f6,stroke:#1e40af,color:#fff&#10; style C2 fill:#10b981,stroke:#047857,color:#fff&#10; style C3 fill:#f59e0b,stroke:#b45309,color:#fff&#10; style K1 fill:#64748b,stroke:#334155,color:#fff&#10; style K2 fill:#64748b,stroke:#334155,color:#fff&#10; style K3 fill:#64748b,stroke:#334155,color:#fff&lt;/pre&gt;&lt;p&gt;值得单独拎出来说的是&lt;strong&gt;知识层全部本地化&lt;/strong&gt;：ChromaDB 向量库跑在本机、SQLite 存图元、规范文档存本地文件系统。这对应设计院的硬性安全要求——&lt;strong&gt;图纸和规范数据不出境、不上云&lt;/strong&gt;。LLM 选型也因此偏向国内模型（MiniMax / Kimi / GLM），中文规范理解好、调用合规。&lt;/p&gt;&#10;&lt;h2 id="四规则引擎为什么不用-llm-判规范"&gt;四、规则引擎：为什么不用 LLM 判规范&#10;&lt;/h2&gt;&lt;p&gt;这是整个项目我认为最值得抄的一个设计决策。&lt;/p&gt;&#10;&lt;p&gt;很多&amp;quot;AI + 设计&amp;quot;的项目，第一反应是&amp;quot;把规范喂给大模型，让它判断合规&amp;quot;。AI-CAD 明确反其道而行——&lt;strong&gt;规范判断坚决不用 LLM，而是写成 DSL，用受限 eval 执行。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;它给出的理由是硬道理：规范条文是&lt;strong&gt;确定性判据&lt;/strong&gt;，而 LLM 是概率模型。用概率模型去判一个本该确定的事情，等于主动引入不确定性。规则引擎把条文写成代码后，&lt;strong&gt;命中就是命中，放行就是放行，参数可以覆盖&lt;/strong&gt;，每一个判断都能追溯到具体规则的哪一条。&lt;/p&gt;&#10;&lt;p&gt;规则来源走了&lt;strong&gt;双轨制&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;&#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;30 条（住宅/防火/无障碍）&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;DSL 规则&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;14 条（各专业 &lt;code&gt;*-*&lt;/code&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;可扩展，改 JSON 即生效&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;规则 DSL 长这样（示意）：&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:#a6e22e"&gt;@rule&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;住宅户内门宽度&amp;#34;&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;door_width&lt;/span&gt;(room: Room) &lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt; bool:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&amp;#34;户内门宽度不应小于 0.9m&amp;#34;&amp;#34;&amp;#34;&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; room&lt;span style="color:#f92672"&gt;.&lt;/span&gt;door_width &lt;span style="color:#f92672"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0.9&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;@rule&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;窗台高度&amp;#34;&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;window_sill&lt;/span&gt;(room: Room) &lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt; bool:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&amp;#34;窗台高度不应大于 0.9m&amp;#34;&amp;#34;&amp;#34;&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; room&lt;span style="color:#f92672"&gt;.&lt;/span&gt;window_sill_height &lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0.9&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;而 DSL 的安全边界也是明确标注的——&lt;strong&gt;predicate 走白名单 eval，&lt;code&gt;__import__&lt;/code&gt; / &lt;code&gt;getattr&lt;/code&gt; / &lt;code&gt;open&lt;/code&gt; 在 load 时全部 fail-fast 拒绝&lt;/strong&gt;。因为规则文件来自外部 JSON，这是一条真实的信任边界。&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;&#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;CAD 双引擎&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ezdxf（读）+ COM（写）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ezdxf 纯 Python 跨平台读取；COM 写 AutoCAD 保证输出格式标准&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;Agent 框架&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;LangGraph&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;LLM 选型&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;国内优先（Agnes / MiniMax / Kimi / GLM）&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;ChromaDB（本地）&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;自定义 DSL&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;条文写成代码，不依赖 LLM 做逻辑判断&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;FastAPI 桥 + React 面板&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;同源 &lt;code&gt;/api/*&lt;/code&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;strong&gt;CAD 双引擎&lt;/strong&gt;和 &lt;strong&gt;LLM 工厂&lt;/strong&gt;两块最实用：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;双引擎的好处是&lt;strong&gt;兼容性&lt;/strong&gt;——ezdxf 不需要装 AutoCAD 就能读，COM 在 Windows 上写出的 DWG 是原生格式，Linux/macOS 上则降级为 ezdxf 写入 + 离线验证；&lt;/li&gt;&#10;&lt;li&gt;LLM 工厂用统一的 &lt;code&gt;LLMFactory&lt;/code&gt; 接口封装四个适配器（默认 Agnes，Anthropic 兼容接口），可以通过环境变量 &lt;code&gt;AI_CAD_LLM_PROVIDER&lt;/code&gt; 运行时切换，&lt;strong&gt;不被任何一家模型绑架&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="六agent-链路与人在回路"&gt;六、Agent 链路与人在回路&#10;&lt;/h2&gt;&lt;p&gt;Agent 的执行链路是一条清晰的生产线：&lt;/p&gt;&#10;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart LR&#10; A["意图理解&lt;br/&gt;(LLM)"] --&gt; B["方案结构化&lt;br/&gt;(RAG)"]&#10; B --&gt; C["CAD 执行&lt;br/&gt;(ezdxf)"]&#10; C --&gt; D["规则校验&lt;br/&gt;(5 专业)"]&#10; D --&gt; E["成果输出&lt;br/&gt;(DWG + 报告)"]&#10;&#10; style A fill:#3b82f6,stroke:#1e40af,color:#fff&#10; style B fill:#3b82f6,stroke:#1e40af,color:#fff&#10; style C fill:#f59e0b,stroke:#b45309,color:#fff&#10; style D fill:#10b981,stroke:#047857,color:#fff&#10; style E fill:#8b5cf6,stroke:#6d28d9,color:#fff&lt;/pre&gt;&lt;p&gt;关键设计在于&lt;strong&gt;每个节点都是可中断、可编辑、可追溯的&lt;/strong&gt;。而且它做了&amp;quot;双路径&amp;quot;——&lt;code&gt;run.py --llm&lt;/code&gt; 走 LLM 主导，&lt;code&gt;run.py --no-llm&lt;/code&gt; 纯本地快验。&lt;strong&gt;LLM 到底有没有参与，肉眼可验&lt;/strong&gt;（会打印&amp;quot;LLM 实例就绪&amp;quot;），不糊弄。&lt;/p&gt;&#10;&lt;p&gt;人在回路这块，项目做的是 &lt;strong&gt;session 级真人在回路&lt;/strong&gt;，而不是演示级的假动作：&lt;/p&gt;&#10;&lt;pre class="mermaid" style="visibility:hidden"&gt;sequenceDiagram&#10; participant U as 设计师&#10; participant B as FastAPI 桥&#10; participant G as LangGraph 图&#10; U-&gt;&gt;B: POST /agent/run&#10; B-&gt;&gt;G: start_agent_run_suspended(起图挂起)&#10; G--&gt;&gt;B: 真实 pending task 列表&#10; B--&gt;&gt;U: 透出每个待确认 task&lt;br/&gt;(类型/描述/出图结果 + 图面预览)&#10; U-&gt;&gt;B: POST /agent/confirm(逐 task 确认)&#10; B-&gt;&gt;G: resume_agent_run(同一 thread 真续跑)&#10; G--&gt;&gt;U: 继续执行 / 拒绝则保持挂起&lt;/pre&gt;&lt;p&gt;实现上依赖 LangGraph 的 &lt;code&gt;interrupt&lt;/code&gt; + checkpointer：外部持有 checkpointer 和 thread，分&amp;quot;起图挂起 / 续跑&amp;quot;两步走。&lt;strong&gt;用同一个 thread 真续跑&lt;/strong&gt;，而不是重新开一轮——这点做过 Agent 的人知道有多关键。&lt;/p&gt;&#10;&lt;h2 id="七可扩展性加一个专业要做多少事"&gt;七、可扩展性：加一个专业要做多少事&#10;&lt;/h2&gt;&lt;p&gt;这是这个项目最硬的卖点，也是它反复自证的地方：&lt;strong&gt;加一个新专业 = 改配置 + 少量元素模型，主链路零改动。&lt;/strong&gt;&lt;/p&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;元素模型&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;DSL 规则&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;上游 DWG 解析&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;30 条硬编码规则类&lt;/td&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;&#9;&#9;&lt;td&gt;CENTERLINE 双线墙 + OPENING_TAG&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;code&gt;PlumbingPipe&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3 条 &lt;code&gt;plumbing-*&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;线段&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;PIPE&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;code&gt;ElectricalOutlet&lt;/code&gt; / &lt;code&gt;Switch&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3 条 &lt;code&gt;electrical-*&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;INSERT 块&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ELEC_OUTLET / ELEC_SWITCH&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;code&gt;HvacDuct&lt;/code&gt; / &lt;code&gt;Unit&lt;/code&gt; / &lt;code&gt;Grille&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3 条 &lt;code&gt;hvac-*&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;INSERT 块&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;HVAC_*&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;code&gt;StructuralBeam&lt;/code&gt; / &lt;code&gt;Column&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2 条 &lt;code&gt;structural-*&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;线段 / 块&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;BEAM / COLUMN&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;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;开放封闭范式&lt;/strong&gt; —— 新专业一律走 &lt;code&gt;default.json&lt;/code&gt; 的 DSL 规则（&lt;code&gt;dsl_only: true&lt;/code&gt;），不新建硬编码规则类；主链路的 &lt;code&gt;_ELEMENT_CHECKS&lt;/code&gt; 分发表只加一项，&lt;strong&gt;循环体 0 改动&lt;/strong&gt;；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;一份上游底座 + N 个专业映射&lt;/strong&gt; —— 结构/电气/暖通的块类元素共用&lt;strong&gt;同一份&lt;/strong&gt; &lt;code&gt;get_element_blocks&lt;/code&gt; INSERT 读取逻辑，各专业只加&amp;quot;图层/块名 → kind&amp;quot;的映射 dict，消除&amp;quot;每个专业各写一套&amp;quot;的孤儿模块；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;受限 eval 信任边界&lt;/strong&gt; —— 外部 JSON 是信任边界，实测打穿无注入面；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;护栏不崩校验链&lt;/strong&gt; —— predicate 缺属性降级 warning、文案缺字段渲染 &lt;code&gt;[缺失:x]&lt;/code&gt; 占位、baseline 路径穿越白名单。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;一句话说清楚它想证明什么：&lt;strong&gt;各专业专家不需要写核心代码，他们做的是&amp;quot;确认数值 + 定 DWG 约定&amp;quot;——工程底座已经消化了&amp;quot;接入一个新专业&amp;quot;的全部技术复杂度。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h2 id="八不只是检查碰撞冲突与出图深化"&gt;八、不只是检查：碰撞、冲突与出图深化&#10;&lt;/h2&gt;&lt;p&gt;除了基本的规范校验，项目往后推了三个里程碑，都是可完全自主推进的：&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;M3 · 出图深化&lt;/strong&gt; —— 22 个图层配 ACI 色号 + 线宽，按制图惯例上色（墙白粗 / 水红 / 风蓝 / 结构绿 / 电黄 / 标注白 / 碰撞品红），出图 PNG 预览按图层上色，&lt;strong&gt;肉眼验收不用开 CAD&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;M4 · 多专业碰撞检测&lt;/strong&gt; —— 核心是一个纯函数几何库 &lt;code&gt;clash_detection.py&lt;/code&gt;，覆盖 8 类跨专业碰撞（管线/风管/插座/风口 × 梁/柱）：&lt;/p&gt;&#10;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TD&#10; A["上游各专业 DWG"] --&gt; B["提取几何&lt;br/&gt;(线段 / 点位)"]&#10; B --&gt; C["seg_intersect&lt;br/&gt;严格相交(T-touch 不算穿)"]&#10; B --&gt; D["point_to_seg_dist&lt;br/&gt;点线距离"]&#10; C --&gt; E{"是否越界?"}&#10; D --&gt; E&#10; E --&gt;|"是"| F["生成 clash-kind 违规条目"]&#10; E --&gt;|"否"| G["无碰撞，0 实体"]&#10; F --&gt; H["出图：品红警示圈(CLASH 层)"]&#10;&#10; style C fill:#3b82f6,stroke:#1e40af,color:#fff&#10; style D fill:#3b82f6,stroke:#1e40af,color:#fff&#10; style F fill:#ef4444,stroke:#b91c1c,color:#fff&#10; style H fill:#ef4444,stroke:#b91c1c,color:#fff&#10; style G fill:#10b981,stroke:#047857,color:#fff&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;M5 · 改动冲突检测&lt;/strong&gt; —— 两稿 raw JSON 按元素类 + id 对齐比对，覆盖三类冲突：&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;code&gt;value&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;同 id 的字段值不同（含嵌套 list 深比较、缺字段）&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;code&gt;added&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;稿 B 新增的元素&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;code&gt;removed&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;稿 B 删除的元素&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;这三个（尤其 M4/M5）都遵循同一套纯函数范式接入、主链路零或最小改动——&lt;strong&gt;可扩展的底座又被证明了一次。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h2 id="九交付形态双击一个-exe-就能跑"&gt;九、交付形态：双击一个 exe 就能跑&#10;&lt;/h2&gt;&lt;p&gt;一个很容易被忽略但很见工程功力的点：&lt;strong&gt;它真的打包成了能双击运行的东西。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TD&#10; subgraph EXE["build/dist/ai_cad_gui/"]&#10; E1["ai_cad_gui.exe&lt;br/&gt;双击即开"]&#10; E2["_internal/&lt;br/&gt;引擎 + 桥 + 前端 dist + 样本数据"]&#10; end&#10; E1 --&gt; S1["自动起 FastAPI 桥&lt;br/&gt;(端口自动探测)"]&#10; S1 --&gt; S2["浏览器自动打开面板"]&#10; S2 --&gt; S3["无需 node / 无需工程源码"]&#10;&#10; style E1 fill:#10b981,stroke:#047857,color:#fff&#10; style E2 fill:#64748b,stroke:#334155,color:#fff&#10; style S3 fill:#3b82f6,stroke:#1e40af,color:#fff&lt;/pre&gt;&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;适用&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;双击 exe&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无 node / 无源码的机器&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;&lt;code&gt;start_gui.py&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;开发态（有 node/vite）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;FastAPI 桥 + Vite 面板（端口 3000）&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;&lt;code&gt;start.bat&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;全链路验证 / 出图&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;自动装依赖 + 跑 &lt;code&gt;run.py&lt;/code&gt; + 弹户型图&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;打包这里踩的坑也很实在：前端 dist 由 FastAPI &lt;code&gt;StaticFiles&lt;/code&gt; 托管在 &lt;code&gt;/&lt;/code&gt;、&lt;code&gt;/api/*&lt;/code&gt; 同源直连、零端口配置；&lt;code&gt;default.json&lt;/code&gt; 是&lt;strong&gt;数据文件非模块&lt;/strong&gt;，必须 &lt;code&gt;--add-data&lt;/code&gt; 单独进包，否则 11 条 DSL 规则进不了引擎（&lt;code&gt;dsl=0&lt;/code&gt;）。产物约 43 MB exe + 236 MB &lt;code&gt;_internal&lt;/code&gt;。&lt;/p&gt;&#10;&lt;h2 id="十占位清单哪些是真的没做完"&gt;十、占位清单：哪些是真的没做完&#10;&lt;/h2&gt;&lt;p&gt;我个人认为这是全项目&lt;strong&gt;最值得尊敬&lt;/strong&gt;的一节。它专门列了一张&amp;quot;未实现能力&amp;quot;的清单，并明确写着：&lt;strong&gt;已实现的如实展示，未实现的明确留占位符，绝不假装有。&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;&#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;M1 规范数值终确认&lt;/td&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;M2 DWG 图层/块名约定&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;各院&amp;quot;点位画法/块名&amp;quot;映射目前全 TBD&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;M5 权限模型&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;角色·权限矩阵&lt;strong&gt;值&lt;/strong&gt; + 在线协同&lt;strong&gt;协议&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;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;各专业&amp;quot;元素模型 → 精细图元&amp;quot;的画法仍偏简&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&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;strong&gt;数值与机制分离&lt;/strong&gt;——阈值全部是占位，专家确认后&lt;strong&gt;填 &lt;code&gt;default.json&lt;/code&gt; 的 &lt;code&gt;param_defaults&lt;/code&gt; 即可，零代码改动&lt;/strong&gt;。UI 上还做了&amp;quot;填值即点亮&amp;quot;的闭环：某专业任一规则 &lt;code&gt;confirmed=true&lt;/code&gt;，前端对应卡片就点亮，四个专业全亮则整卡变实。&lt;/p&gt;&#10;&lt;p&gt;这套设计等于把&amp;quot;落地门槛&amp;quot;从&amp;quot;专家要会写代码&amp;quot;降到了&amp;quot;专家只要确认数值&amp;quot;。&lt;/p&gt;&#10;&lt;h2 id="十一工程质量409-个测试和一条红线"&gt;十一、工程质量：409 个测试和一条红线&#10;&lt;/h2&gt;&lt;p&gt;数字上看，这个项目在工程质量上是相当克制的：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;409 passed / 5 skipped / 0 failed&lt;/strong&gt;（47 个测试文件，unit + integration）；&lt;/li&gt;&#10;&lt;li&gt;5 个 skip 是&lt;strong&gt;诚实的外部依赖用例&lt;/strong&gt;——4 条 langgraph 框架（设 &lt;code&gt;AI_CAD_RUN_FRAMEWORK=1&lt;/code&gt; 启用）+ 1 条 LLM（需 API key），不是漏测；&lt;/li&gt;&#10;&lt;li&gt;覆盖率门槛 &lt;code&gt;.coveragerc&lt;/code&gt; 设 &lt;code&gt;fail_under=90&lt;/code&gt;，纯可测代码实测 95%，三个需真实框架/LLM/向量库的模块&lt;strong&gt;明确豁免&lt;/strong&gt;（是&amp;quot;需外部依赖&amp;quot;而非&amp;quot;漏测热点&amp;quot;）；&lt;/li&gt;&#10;&lt;li&gt;冒烟脚本 &lt;code&gt;smoke_test.py&lt;/code&gt; 秒级验证 5 大核心不变量（小改动 0.4s 出结果）；&lt;/li&gt;&#10;&lt;li&gt;一条硬红线：&lt;strong&gt;硬编码规则类 0 改动&lt;/strong&gt;（用 git diff 校验），配合&amp;quot;全量绿 + 单跑绿&amp;quot;双护栏防假绿。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;它甚至专门说明了&amp;quot;本轮外部依赖边界&amp;quot;，逐条标注哪些是外部依赖、哪些是自主子集，&lt;strong&gt;故意不虚标&lt;/strong&gt;。这种自我约束在开源项目里并不多见。&lt;/p&gt;&#10;&lt;h2 id="十二给谁用以及现实一点的话"&gt;十二、给谁用、以及现实一点的话&#10;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;这套东西适合谁看：&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;做 AI + 垂直领域落地的工程师&lt;/strong&gt; —— 尤其是&amp;quot;哪些该交给 LLM、哪些绝对不能&amp;quot;这条边界怎么划，这个项目提供了一个完整且自洽的答案；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;BIM / CAD 数字化从业者&lt;/strong&gt; —— 规则 DSL 化、ezdxf 读写、图层着色、碰撞检测几何库，都是可以直接借鉴的工程做法；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;设计院的数字化决策者&lt;/strong&gt; —— 可以看清&amp;quot;AI 辅助深化&amp;quot;当前真实的成熟度边界在哪里。&lt;/li&gt;&#10;&lt;/ul&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;，热度很低（约 1 star），社区基本没有，不要指望它开箱即用；&lt;/li&gt;&#10;&lt;li&gt;真正落地&lt;strong&gt;强依赖各专业专家背书&lt;/strong&gt;——M1 数值、M2 图层约定、M5 权限模型三块全是外部依赖，机制通了但值待补；&lt;/li&gt;&#10;&lt;li&gt;第一版范围只覆盖&lt;strong&gt;建筑专业 · 住宅套型&lt;/strong&gt;，跨专业、跨项目的通用性还有待验证；&lt;/li&gt;&#10;&lt;li&gt;在线协同（真·多机 socket / 消息总线 / CRDT）仍处于&lt;strong&gt;骨架占位&lt;/strong&gt;阶段。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;但它的真正价值，恰恰不在&amp;quot;能不能直接用&amp;quot;，而在于它把一件事讲透了：&lt;/strong&gt;&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;让 AI 做 AI 擅长的事（规则化、重复性工作），让人做人擅长的事（判断、决策、创新）。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;在一个人人都在喊&amp;quot;AI 画图&amp;quot;的领域里，愿意老老实实说&amp;quot;我们不做画图，我们做深化；规范判断坚决不用 LLM；没做完的部分我们列清单&amp;quot;——&lt;strong&gt;这份清醒本身就是这个项目最大的参考价值。&lt;/strong&gt;&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;本文基于 AI-CAD 官方仓库（&lt;code&gt;github.com/flowerjunjie/AI-CAD&lt;/code&gt;，默认分支 &lt;code&gt;master&lt;/code&gt;）的 README、DELIVERY.md、capability-map.md、architecture.md 及源码目录结构整理，数据截至 2026-10-01 最后一次提交。项目处于活跃开发阶段，功能与状态可能变化，请以官方仓库为准。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;&lt;strong&gt;项目信息&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;仓库&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="https://github.com/flowerjunjie/AI-CAD" target="_blank" rel="noopener"&#10; &gt;https://github.com/flowerjunjie/AI-CAD&lt;/a&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;Python（+ TypeScript 前端）&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;ezdxf · LangGraph · FastAPI · React · ChromaDB · PyInstaller&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;409 passed / 5 skipped / 0 failed（47 个测试文件）&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;code&gt;master&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;2026-10-01&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;</description></item></channel></rss>