标准件库来源搜集:数据、几何实现、模型集合、属性字典与商业目录
状态:Research Note 版本:
0.2.0日期:2026-09-07 研究问题:如果 Aira 要让 AI 直接插入和编辑标准件(紧固件、轴承、型材、管件),哪些外部零件库可以真正被复用?各自的许可、数据形态、标准覆盖和再分发边界是什么? 对应文档:产品宪法、AMIR v0.1 §18 Operation Catalog、CAD 基线与维护边界 前置调研:开源底座与自研实现重叠审计、本地开源源码与研究参考基线 后续调研:标准件开源库整合基底设计(源码级取证,修正本文对 BOLTS 许可与 bd_warehouse 数据形态的判断) 后续变化(2026-09-14):M1 公共产品结构已于 2026-09-13 落地(方案、状态),本文三处前提随之移动,正文保留原判—— ① §1.11、§9、§11.3、§11.8 所依赖的assembly.compose/assembly.transformInstance从未实现,实例共享改经set-product:Body 为共享零件定义,组件按完整路径引用定义与局部放置,位置修改不重算几何;② §1.5、§5、§5.1 的前提“AMIR v0.1 无 STEP import”已不成立,imported-brep/imported-product是当前计划步骤,§5 对现成模型集合“无落点”的判定须按新前提重下,本文未重下;③ §9 所述 BOM 现有落点为 Body 的 item identity(partNumber+partRevision)。
本文只做来源搜集与许可判定,不改变当前产品目标,也不授权任何实现或依赖引入。仓库此前没有任何
标准件相关记录(docs/plans、docs/specs、docs/vision 全文检索无 标准件/fastener 命中),
本文是这条线上的第一份证据。
1. 结论摘要
Section titled “1. 结论摘要”- “标准件库”不是一种东西,而是五层:尺寸数据 → 参数化几何实现 → 现成模型集合 → 分类与属性字典 → 商业目录 API。 选型必须分层做;混在一起谈,会把可复用的数据层和不可再分发的目录层判成同一件事。
- 唯一把标准号、等效替代关系、参数类型与量纲一起写进机器可读结构的开源来源是 BOLTS 的
.blt(YAML), 它的形状最接近 AMIR 的 typed parameter,是数据层的首选。 - 数据最全的是 FreeCAD Fasteners Workbench(DIN 40+、ISO 30+、ASME/ANSI 25+ 个 CSV 定义文件), 但仓库许可是 GPL-2.0,把数据文件并入产品分发物存在传染性风险,不能默认可用。
- 许可最干净的是 cq_warehouse / bd_warehouse(Apache-2.0):紧固件、轴承、螺纹、法兰、齿轮、挡圈、轴键、 链轮成套,且 cq_warehouse 把尺寸表外置成约 30 个 CSV,可以只取数据不取代码。
- 现成 3D 模型集合对 Aira 现阶段没有落点:AMIR v0.1 的 Operation Catalog 没有 STEP import(明确排到 v0.2), 导入型零件库进不了当前 exact 管线。
- 商业目录(TraceParts、CADENAS PARTcommunity/3Dfindit、3DSource)明确禁止再分发, CADENAS 写明超范围使用每次可主张 €20,000 合同罚金外加每文件 €500。它们只能是“用户自带模型”的下游,不能作为内置库。
- GB/T 在所有开源库中全部缺失:FastenersWB 的
FsData里有 DIN/ISO/ASME/EN/GOST/BSP/NFE,没有 GB 文件; BOLTS 是 ISO/DIN/EN 体系。中文市场覆盖只能靠“ISO 尺寸表 + GB/T 标注映射”。 - 产品内置零件库的第一许可要求是“用户设计产物不被库许可约束”。KiCad 库的 CC-BY-SA 4.0 例外条款是这方面 唯一成熟的先例:库本身 copyleft,但用库数据做出的设计与导出文件不受该许可约束,只有再分发库集合本身才受约束。 没有同类豁免的 CC-BY-SA / GPL 数据,一旦进入用户模型输出就是风险。
- ISO 13584(PLIB)与 IEC 61360 共用同一数据模型,并有专门的紧固件本体 ISO 13584-511。 它规定的是“零件类别与属性字典”,不是几何;对 Aira 的价值在于 AI 可查询的属性命名与分类,不是模型来源。
- Aira 需要的是“表驱动的参数化模板”,不是静态模型目录,且这条路线成熟: Inventor Content Center(family 模板 + 尺寸表)与 SOLIDWORKS Toolbox(master part + 配置)是商业先例, FreeCAD Fasteners WB 与 cq_warehouse 是同为 OCCT 血统、正在出货的开源实现(见 §4.1)。 只有这条路线能同时给出可编辑参数与配合能力(间隙孔/攻丝孔/BOM)。
- 综合判断:数据层复用 BOLTS + cq/bd_warehouse,几何层在维护版 Replicad 内生成,发现层复用既有 AI SDK 工具,
实例化走 AMIR
assembly.compose。不引入 GPL 数据文件,不集成商业目录,不新建平行的零件检索执行器。 默认按光圆柱建螺纹,真实螺纹是显式可选项。
2. 分层框架
Section titled “2. 分层框架”| 层 | 内容 | 判定要点 |
|---|---|---|
| L1 尺寸数据 | 标准号 → 规格 → 尺寸表 | 能否再分发;是否机器可读;是否带标准号与等效关系 |
| L2 参数化几何实现 | 由尺寸表生成实体的代码 | 语言/内核绑定;能否移植到 OCCT/Replicad |
| L3 现成模型集合 | STEP/FCStd/STL 成品 | 体积;来源可信度;能否进入当前管线 |
| L4 分类与属性字典 | 零件类别、属性命名、单位 | 是否影响 AI 可查询语义 |
| L5 商业目录与 API | 厂商件、超大规格空间 | 再分发条款;是否要求上报用户数据 |
3. L1 尺寸数据源
Section titled “3. L1 尺寸数据源”| 来源 | 许可 | 覆盖 | 数据形态 | 对 Aira 的可用性 |
|---|---|---|---|---|
| BOLTS | 工具链 GPL-3.0、bolttools/ LGPL-2.1;数据逐集合声明:13×LGPL 2.1+、4×MIT、1×Unlicense,无 GPL |
螺母、六角、内六角、垫圈、轴承、型材(C/I/L/Z/空心)、法兰、管件、挤出型材、连接杆、真空件 | data/*.blt(YAML):classes → standards(body/standard/replaces) → parameters(free/defaults/types/description) → tables(index/columns/data) |
首选。标准号、替代关系(ISO 4035 的 replaces: DIN439B)、参数量纲(Length (mm))全部机器可读 |
| FreeCAD Fasteners WB | GPL-2.0 | DIN 40+、ISO 30+、ASME/ANSI 25+、EN 3、GOST 2、BSP、NFE;另有 PEM 件、热熔螺母、钻孔/攻丝孔径表 | FsData/*.csv,每个标准一个定义文件 |
覆盖最广,但 GPL-2.0 数据进入分发物需法务判断;可作为尺寸交叉核对来源 |
| cq_warehouse | Apache-2.0 | 六角头/内六角/盘头/沉头/半沉头/奶酪头/紧定螺钉、六角螺母/法兰螺母/方螺母/盖形螺母、平垫/倒角垫圈、轴承、通孔与攻丝孔径、公称长度 | src/cq_warehouse/*.csv 约 30 个参数表 + fastener.py(82KB)/bearing.py/thread.py |
许可最干净的可取数据集;CSV 与代码解耦,可只取表 |
| bd_warehouse | Apache-2.0 | 紧固件、轴承、法兰、齿轮、O 形圈、挡圈、轴键、链轮、管件、OpenBuilds 型材 | src/bd_warehouse/data/ 下 48 个 CSV、1752 行 + Python 生成器 |
cq_warehouse 的严格超集,取数首选(见整合基底 §3) |
| BOSL2 | BSD-2-Clause | 公制/UTS 螺纹与螺钉、齿轮、球轴承、直线轴承 | OpenSCAD .scad |
许可最宽松,但数据与 OpenSCAD 语义强绑定,提取成本高 |
| NopSCADlib | GPL-3.0 | vitamins/ 下的螺钉、螺母、垫圈、轴承、型材、电机等 |
OpenSCAD | 许可与形态双重不利,仅作参考 |
关键证据(BOLTS 数据形态,直接取自 data/nut.blt):文件头是 LGPL 2.1+ 声明,YAML 体内每个 class 同时给出
standards(body: ISO / standard: ISO 4035 / replaces: DIN439B)、parameters.types(d1: Length (mm))
与 tables.data(M1.6: [1.6, 3.2, 1, 3.48])。这一结构可以逐字段映射到 AMIR 的 typed parameter 与单位系统,
不需要另立一套零件参数模型。
4. L2 参数化几何实现
Section titled “4. L2 参数化几何实现”- cq_warehouse / bd_warehouse:Python + CadQuery/build123d,底层同样是 OCCT,按需生成而非预烘文件。 能生成真实螺旋螺纹,但默认不生成(见 §4.1)。移植到 Replicad 属于同内核换 API,不是重写内核。
- FreeCAD Fasteners WB:
screw_maker.py由 CSV 驱动生成实体,同样是 OCCT 血统,但与 FreeCAD 文档模型耦合。 - BOLTS:几何以 OpenSCAD 模块或 FreeCAD Python 函数表达,已有 OpenSCAD / FreeCAD / SolidWorks 三种后端; 数据与几何是分离的,这正是 Aira 可以只取数据层的前提。
- PartCAD(Apache-2.0):不是零件库而是零件包管理器,用
partcad.yaml声明包与零件,支持 STEP/BREP/STL/3MF/OBJ 与 CadQuery/build123d/OpenSCAD/Chili3D 多种零件类型,并提供 Claude Code 插件。 它解决“零件如何被寻址、版本化和组装”,与 Aira 的 AMIR + Document/Revision 体系职责重叠,不建议引入; 但其零件声明的分层值得在设计 Aira 零件目录时对照。公共 registry 的实际规模未证实 [待验证]。
4.1 程序化(表驱动参数化)路线的成熟度判断
Section titled “4.1 程序化(表驱动参数化)路线的成熟度判断”结论:成熟,且是专业 CAD 三十年的主流形态;静态模型目录反而是 agent/web 生态的新做法。
- 商业先例:Autodesk Inventor Content Center 的基本单位是 family(模板 + 尺寸表),换规格按标准尺寸表重新生成几何; SOLIDWORKS Toolbox 为每个标准维护 master part 加规格/配置信息,用到新尺寸时更新 master 或按尺寸生成零件文件。 两者都是“模板 + 表”,不是每个规格一个死文件。
- 开源正在出货的同内核实现:FreeCAD Fasteners WB 由
FsData/*.csv驱动screw_maker.py生成实体, v0.5.66 发布于 2026-09-06;cq_warehouse 覆盖螺钉 26 个标准(ISO 4014/4017/4762/7380/10642/14580 等 + ASME B18.3/B18.6.3 + DIN)、 螺母 7 个、垫圈 6 个,全部按需生成。两者都是 OCCT 血统,移植到 Replicad 属同内核换 API。 - 配合能力只有这条路线给得了:cq_warehouse 提供
clearanceHole()/tapHole()/threadedHole(), 通孔与攻丝孔径随紧固件实例走,并能从装配体导出 BOM。静态目录只能交付文件,交付不了配合。 - 必须照抄的工程教训——默认不建真实螺纹:cq_warehouse 紧固件的
simple参数默认为True, 螺纹按光圆柱建模,尺寸与装配/干涉检查仍然成立;simple=False才生成真实螺纹并显著增加模型复杂度。 Aira 的 OCCT 运行在浏览器 WASM 上,螺旋扫掠加布尔是最慢的一类操作,这条只会更关键。 [待验证] 具体开销需在 Aira 自己的管线上实测。 - 覆盖边界:有标准尺寸表的(紧固件、垫圈、轴承、型材、管件)适合程序化; 厂商件(伺服、电机、连接器、板卡)没有公式,只能是模型文件,须等 STEP import。二者是分工,不是二选一。
5. L3 现成模型集合
Section titled “5. L3 现成模型集合”| 来源 | 许可 | 规模/格式 | 判定 |
|---|---|---|---|
| FreeCAD-library | CC-BY 3.0,逐件署名 | 约 5 GB,FCStd/STEP/STL | 社区投稿,来源与精度不统一;当前管线无 STEP import,暂无落点 |
| KiCad packages3D | CC-BY-SA 4.0 + 设计豁免例外 | STEP/WRL 电子封装 | 与机械标准件无关,但其许可例外条款是 Aira 内置库应当照抄的模式 |
| step.parts | MIT(仓库层面) | API 实测 16,847 件静态 STEP + GLB/PNG 预览 | 目前发现的许可最宽松的静态目录;但逐件上游来源未在记录中暴露 [待验证];无 STEP import 则无落点 |
KiCad 例外条款要点(转述,非原文):用库数据做出的电子设计及其生成文件,不因此被当作衍生作品, 不需要以同一许可发布,也不要求在设计内部标注归属;只有再分发库集合本身(含修改版)才必须沿用同一许可并保留归属。 这条把“库的 copyleft”与“用户产物的自由”切开,是任何随产品分发的零件库都必须先解决的问题。
5.1 对照样本:text-to-cad(MIT,14.5k star,Python)
Section titled “5.1 对照样本:text-to-cad(MIT,14.5k star,Python)”这是当前最受关注的 AI CAD agent 项目,它的分工恰好把“程序化建模”和“非程序化零件库”切开,是本文分层框架的现成反例:
- 建模层是程序化的:
packages/cadgen的模型脚本写在 build123d(同样是 OCCT 血统)上,有AssemblyHelper+ build123d joints、#o1.2.f1选择器、staleness store 与常驻 daemon。 - 零件层不是程序化的:
skills/step-parts查询托管目录 APIhttps://api.step.parts/v1/parts, 按stepUrl下载预先烘好的静态 STEP,用sha256校验;文件托在 GitHub LFS(commit 固定),预览另存对象存储。 - 判定证据:
iso10642_socket_countersunk_screw_m3x6与..._m3x10是两条独立记录、两个独立文件—— 2118 个紧固件是 2118 个烘好的文件,而不是一张尺寸表加一个生成器;packages/cadgen/src/cadgen/下 50 余个模块中没有任何紧固件/标准件生成模块。 - API 实测(2026-09-07):目录 16,847 件;分类 electronics 7822、power-transmission 2488、fastener 2118、
stock 976、mechanical-hardware 826、motion 570、spacer 434、actuator 339、enclosure 294、thermal 275、
profile 185、pin 121、bearing 86。记录含
standard {body, number, designation}、 family 专属attributes(如thread/lengthMm/headStyle/driveStyle)、aliases、sha256, 并提供/v1/catalog/schema与/v1/openapi.json。 - 静态路线的代价:
bearing_608zz只有bearingCode/sealType/shielded,没有内外径与宽度,也没有标准号。 拿不到可编辑参数,规格空间只能靠穷举文件覆盖。 - 对 Aira 的判定:AMIR v0.1 无 STEP import,这条路当前走不通;且下载所得几何不可编辑,与“AI 可编辑标准件”的需求相反。 可借鉴的是其目录记录 schema(标准号三段式 + 别名 + family 属性 + facet 检索),它印证了 L4 的必要性—— 但它是自造属性字典,没有对齐 ISO 13584。另外该项目整体以 agent skills 插件形式交付, 正是产品宪法 §0排除的路线,作为对照样本比作为复用来源更有价值。
6. L4 分类与属性字典标准
Section titled “6. L4 分类与属性字典标准”- ISO 13584(PLIB,Parts Library):由 ISO/TC 184/SC 4 维护,定义零件库的数据模型与交换格式; 与 IEC 61360 共用同一数据模型;1998–2004 年间共发布 12 项国际标准,含紧固件本体 ISO 13584-511 与测量仪器本体 ISO 13584-501。
- eCl@ss / UNSPSC:工业界实际使用的产品分类与属性体系,常被作为 PLIB 模型的实例化来源。
- DIN 4000(Sachmerkmalleisten,标准件特征表):本轮检索未取得可引用证据 [待验证]。
对 Aira 的意义:这一层不提供几何,但提供属性命名与类别层级。宪法要求核心能力可发现、可查询; 零件属性若自造命名,AI 与外部系统都无法对齐,ISO 13584-511 是紧固件属性命名的现成参照。
7. L5 商业目录与 API(不可再分发)
Section titled “7. L5 商业目录与 API(不可再分发)”| 来源 | 关键条款 |
|---|---|
| TraceParts | 数据仅限 CAD 设计或查看用途;未经书面同意不得作为外部服务分发、发布到网站、以任何存储介质分发,或用于与其服务竞争。API 使用方必须回传下载者的邮箱、姓名、公司与国家 |
| CADENAS PARTcommunity / 3Dfindit | 仅限 CAD/BIM 设计用途;禁止以复制或替代其数据库为目的的使用;免费额度 50 次下载/日;超范围使用每次可主张 €20,000 合同罚金,另加每个 CAD 文件 €500 |
| 3DSource 零件库(国内) | 商业授权,宣称覆盖 10 亿+ 规格的标准件与厂商件,以主流三维 CAD 插件形式提供 |
| McMaster-Carr | 站点内容受版权保护,未检索到公开的 CAD 再分发授权条款;其 STEP 文件只应作为用户自带输入,不进入 Aira 分发物 |
注:third_party/reference-sources/evals/cad-bench/.../mcmaster/91290A111.step 属于被 .gitignore 排除的
只读克隆(.gitignore:4 的 third_party/reference-sources/*/),不在版本控制内,不构成分发。
8. GB/T 覆盖缺口
Section titled “8. GB/T 覆盖缺口”开源库全部缺 GB/T。可行路径是尺寸走 ISO 表、标注走 GB/T 号,依据是主要紧固件的等效关系:
| GB/T | 对应 ISO | 件型 |
|---|---|---|
| GB/T 5782 | ISO 4014 | 六角头螺栓(半螺纹) |
| GB/T 6170 | ISO 4032 | 1 型六角螺母 |
| GB/T 70.1 | ISO 4762 | 内六角圆柱头螺钉 |
[待验证]:GB/T 对 ISO 多为“修改采用”,个别尺寸、公差与材料等级并不逐项相同; 把等效关系写进产品之前必须核对标准正文,不能以检索结果为准。ISO/DIN/GB 标准正文受版权保护, 可复用的是既有开源数据集里已整理好的尺寸表,不是自行转录标准文本。
9. 与 Aira 的接入判断(复用四项)
Section titled “9. 与 Aira 的接入判断(复用四项)”- 真实需求:AI 在建模过程中插入、替换和参数化标准件(紧固组、轴承座配合、型材框架),
并让规格标注(如
GB/T 5782 M8×30)、配合孔径与 BOM 可被查询和编辑。 - 上游设施:BOLTS
.blt(LGPL 2.1+,标准号与量纲齐全)、cq_warehouse CSV(Apache-2.0)、 bd_warehouse(Apache-2.0,覆盖更广);几何生成落在维护版@aira/replicad; 发现走既有aira_library_reference与同一套 AI SDK 工具;实例化走 AMIRassembly.compose/assembly.transformInstance(AMIR §18.3)。 - 已证实差异:三家的数据与几何耦合度不同——BOLTS 数据独立且带标准语义;cq_warehouse 数据独立但标准号散在代码里; bd_warehouse 数据内嵌 Python;FastenersWB 覆盖最全但 GPL-2.0;全部缺 GB/T; 没有任何一家提供 AMIR 需要的 typed parameter、单位与诊断语义,这部分是 Aira 自己的职责。
- 决定与边界:复用尺寸数据层(Apache-2.0 / LGPL 优先),不复制上游 builder,不把 GPL 数据文件放进产品分发物,
不集成商业目录,不新建零件检索执行器或平行工具声明。Aira 只负责参数与单位建模、语义选择、标注映射与诊断。
几何默认按光圆柱建螺纹(对齐 cq_warehouse 的
simple默认值),真实螺纹只在用户显式要求时生成。
10. 待验证项与下一步取证
Section titled “10. 待验证项与下一步取证”BOLTS 数据文件的 LGPL 2.1+ 声明与仓库 GPL-3.0 的关系→ 已取证:18 个集合逐个声明许可(13 LGPL 2.1+ / 4 MIT / 1 Unlicense), GPL-3.0 只覆盖工具链,见整合基底 §1.1。剩余法律关系问题在该文 §10.1。- [待验证] GPL-2.0 的 CSV 尺寸表并入闭源分发物的传染性判断。
- [待验证] GB/T 与 ISO 的逐项尺寸差异,需标准正文。
- [待验证] PartCAD 公共 registry 的实际内容与规模;DIN 4000 的现行状态。
- [待验证] step.parts 逐件模型的上游来源:仓库整体声明 MIT,但抽查的记录未暴露
stepSource/productPage; 电子件、伺服与执行器大概率来自厂商模型,仓库层面的 MIT 声明不必然覆盖上游条款。 - 若需要进一步取证,按
third_party/reference-sources/SOURCES.lock.json既有约定, 以 depth-1 只读克隆 pin 住 BOLTS、cq_warehouse、bd_warehouse、FreeCAD_FastenersWB 四个源并记录 licenseEvidence。 该动作需要显式授权,本文不代表已授权。
11. 算法机会:以最小描述为原则的效率、性能与压缩
Section titled “11. 算法机会:以最小描述为原则的效率、性能与压缩”本节是调研之后的架构推论,不是已验证结论,也不授权实施。证据标签沿用 外部先例扫描的约定:[实测]、[架构推论]、[待验证]。
11.0 起点:标准件是低熵对象
Section titled “11.0 起点:标准件是低熵对象”step.parts 的 iso10642_socket_countersunk_screw_m3x6 是 89,574 字节的 STEP,但它的全部信息是三个符号
(ISO 10642, M3, 6)。生成器一次性摊销后,每个零件的最小描述只有几个字节:2118 个紧固件文件约 190 MB,
等价于二十来个生成器加 200 KB 尺寸表,相差四个数量级。[实测]
这不只是存储问题。它意味着标准件应当以“最小描述”的形态存在于每一层——AI 的 prompt、AMIR 节点、hash、 缓存键。以下每条都是这个原则在不同层的展开。
11.1 尺寸表的预测编码:公式 + 残差
Section titled “11.1 尺寸表的预测编码:公式 + 残差”对 BOLTS data/hex_socket.blt 中 ISO 4762 的表(27 行 × 7 列 = 189 个数)逐列拟合:[实测,2026-09-07]
| 列 | 规律 | 残差 |
|---|---|---|
头高 k |
k = d |
27/27 行零残差 |
螺纹长 b |
b = 2d + 12(ISO 888 的形式) |
仅 M1.6 一处舍入(15.2 → 15) |
头径 d2 |
d2 = 1.5d |
M12 及以上全部精确;M12 以下系统性偏大(M3 为 1.83d) |
沉孔深 t_min |
t_min = 0.5d |
M2–M24 精确 |
内六角 s |
≈ 0.75d 量化到扳手格 {2.5, 3, 4, 5, 6, 8, 10, 12, 14, 17, 19, 22, 24, 27, 32, 36, 41, 46} |
残差即量化误差 |
189 个数压成 4 个公式加一张稀疏残差表,无损:公式 + 残差精确重现标准值。价值不在存储(全部表约 200 KB),而在:
- AI 通道:AI 不需要看表,只需要几个 token 的先验(头高等于直径、头径约 1.5 倍)做合理性判断,精确值由工具返回。 任务成本以 AI 通道计量,熵应被推出 prompt、进入确定性工具。
- 残差可解释:M12 以下头径偏大是标准委员会为小螺钉制造性与扳手强度做的让步;残差表是“规律被打破的地方”。
- 交叉校验:BOLTS / FastenersWB / cq_warehouse 三源对表时,偏离公式的值优先怀疑录入错误——预测编码当异常检测用。
边界:规范值以表为准,公式永远不能覆盖表。
11.2 优先数格:把标准当码本,把 AI 输出当噪声
Section titled “11.2 优先数格:把标准当码本,把 AI 输出当噪声”ISO 3 的 Renard 系列 R10 / R20 / R40 是 10^(k/n) 的等比格,在对数尺度上是等距格;螺纹公称直径、长度、
扳手尺寸都落在这种格上。AI 会生成 M3×7、M5×23 这类不存在的规格。信息论视角:标准定义码本,AI 输出是带噪声的码字,
解码 = 投影到最近码字,纠正量作为诊断返回——宪法要求诊断可见,不得静默修改意图。[架构推论]
附带收益:R20 上一个索引约 5 bit,比浮点便宜且每个码字都有制造意义;对数格上的量化误差是相对误差(乘性), 与工程公差直觉一致。推广到自由尺寸后,Plan–Compile 路线的搜索空间也随之收缩。
11.3 几何 hash-consing:静态目录是生成器的 memo 表
Section titled “11.3 几何 hash-consing:静态目录是生成器的 memo 表”现状:feature cache 按 nodeId 键控(third_party/maintained/replicad/src/aira/exact-feature-graph.ts 的
aira.ocaf-feature-cache/0.2),增量按文档内节点粒度(exact-feature-graph-session-v0.4.ts 的 executedNodeIds)。
往前一步:按节点语义投影的内容 hash + 上游 artifact hash 键控,feature DAG 变成 Merkle DAG,相同子树按构造共享。
[架构推论]
- 20 颗相同螺栓 = 1 次求值 + 20 个 transform(依赖
assembly.compose先落地;该 op 目前只有 spec,无实现)。 - 跨文档、跨会话、跨用户,相同
(生成器版本, 参数)命中同一键;本地 IndexedDB 与远端 CDN 都可按 hash 分发。 安全性由既有确定性机制保证:只有topologyStable及以上且executionManifestHash相同的条目允许命中 (AMIR §14.2)。 - 标准件参数域有限离散(标准 × 规格 × 长度 ≈ 10^5),可离线一次算完、按 hash 分发 tessellation。
这条消解了 §5.1 的二分法:step.parts 的 16,847 个静态文件正是一个生成器在其有限定义域上的 memo 表。 静态目录不是替代方案而是派生物,真源永远是生成器 + 参数。
风险:OCCT 面编号跨构建不是 bitwise 确定的,缓存命中必须走既有的 rebindCachedArtifactGraph 重绑定路径,
不得直接复用面索引。
11.4 家族级证书:有限格上的穷举验证
Section titled “11.4 家族级证书:有限格上的穷举验证”Geometry Certificate(AMIR §13)目前逐 artifact 签发。 标准件定义域有限,“对所有参数 p ∈ D,生成器 G(p) 产出有效实体”是可穷举检验的命题:10^5 个实例 × 毫秒级, 离线一次跑完,结果按 hash 存,与 §11.3 共用键;浏览器内插入标准件不再重新验证。[架构推论]
许多断言有闭式解:六角螺栓体积是表值的多项式,assert.volumeBetween 的边界可以符号地算出而非数值估计,
紧到足以抓内核回归。有限性 + 闭式 = 证书可以精确,而不只是“在容差内”。证书绑定内核构建,内核升级时重跑(成本低)。
11.5 螺纹作为螺旋不变场(Lane F 候选)
Section titled “11.5 螺纹作为螺旋不变场(Lane F 候选)”螺纹在螺旋运动群 (θ, z) ↦ (θ + α, z + (p/2π)·α) 下不变。取不变坐标 u = z − (p/2π)·θ (mod p),
螺纹实体即 {(r, θ, z) : r ≤ R(u)},其中 R 是 ISO 60° 牙型的二维折线(H = (√3/2)·p,牙顶牙底截平)。
一条螺纹 = 二维轮廓 + 螺距 + 旋向 + 长度,几十字节;每个采样点 O(1),无扫掠、无布尔。[架构推论]
落点:B-Rep 层按 §4.1 保持光圆柱(精确内核、可导出、可制造);显示层用同一份参数记录生成隐式场做装饰螺纹,
两层由同一参数派生,一致性由构造保证。螺纹配合检查是符号运算(designation 相等),不碰几何。
分类上它不是 TrueSDF(螺旋扭曲畸变距离),是带 Lipschitz 界的 GeneralImplicit,AMIR 已有该 kind。
状态:Lane F 尚在 F1 之前,Field3D 还不能作为
committed node 的端口类型;本条是 F2 IR 的候选节点,不是当前事项。[待验证] 距离误差界需要推导。
11.6 对称群商:规范化与稳定命名
Section titled “11.6 对称群商:规范化与稳定命名”六角头有 D6 对称,旋转 60° 是同一物体。把放置变换模零件的对称群规范化:modelHash 不再因等价旋转而变化,
diff 与重求值少一批假阳性。持久命名随之自然——六个平面是一个轨道,“头顶面”由家族定义,SemanticRef 基数先验已知。
只对家族声明的理想对称适用;倒角、标记会破坏对称。优先级最低。[架构推论]
11.7 MDL 作为规划目标
Section titled “11.7 MDL 作为规划目标”近期提交在“拒绝整体重写、把编辑引向增量”。可形式化为:一次编辑的代价 = patch 相对当前程序的描述长度 ΔL, 而非几何相似度。库调用天然便宜(一个标准件调用约 3 个符号),这是程序化零件库的 Kolmogorov 论证。 patch 已是结构化的,ΔL 可计算,可直接进入既有成本计量。[架构推论]
11.8 排序与依赖
Section titled “11.8 排序与依赖”按对当前目标(AI 复杂建模 + 连续编辑 + 成本可测)的杠杆:11.3 → 11.2 + 11.1 → 11.7 → 11.4 → 11.5 → 11.6。
- 11.1、11.2、11.3、11.7 不依赖标准件库先存在;
- 11.3 的实例共享依赖
assembly.compose实现; - 11.4 依赖标准件生成器存在;
- 11.5 依赖 Lane F 进入 F2。
以上全部是算法模式(hash-consing、预测编码、格量化、群规范化、MDL),不是要引入的库; 符合“先复用,再自研”——复用的是数学。任何一条进入实施前,须按 AGENTS.md 只保留一个当前产品目标的纪律另行排期。