RFC-0001:AI 原生 CAD 系统架构:扩展、安全边界与交付
主文档与完整目录。本分篇与主文档共同构成同一规范,版本、状态与权威以主文档为准;仅拆分阅读结构,条款编号和正文语义不变。
22. 插件边界
Section titled “22. 插件边界”22.1 允许的扩展点
Section titled “22.1 允许的扩展点”- AMIR operation package;
- compiler lowering pass;
- kernel adapter;
- importer/exporter;
- validator/Geometry Certificate extension;
- catalog metadata;
- viewer overlay、gizmo 和非权威 visualizer;
- AI tool description/recovery policy。
22.2 插件清单
Section titled “22.2 插件清单”每个插件声明:
- package ID、semantic version、content hash、publisher/signature;
- compatible AMIR/compiler/adapter ABI;
- operations、输入输出类型和 capability;
- determinism grade;
- CPU/memory/time/output cost class;
- 文件、网络、GPU、worker、项目数据权限;
- license/SBOM;
- migration 和卸载行为。
22.3 隔离规则
Section titled “22.3 隔离规则”- 插件只通过 versioned SDK 访问 AMIR、artifact handle 和 transaction API;
- 禁止直接读写 revision DB、CAS 路径、Three.js scene internals 或 raw kernel handle;
- authoring/geometry 插件必须是纯、可重放且固定版本;不满足者只能标为 preview-only;
- viewer 插件不能提升 preview 工件、伪造 certificate 或提交 revision;
- native 插件使用进程隔离;WASM 插件使用 capability-based imports;
- 插件失败只影响当前 transaction/job,不能破坏 branch head;
- 卸载插件后旧 revision 仍可读取;重建需要锁定包或明确返回 PACKAGE_UNAVAILABLE。
23. 互操作
Section titled “23. 互操作”| 格式 | 角色 | 导入策略 | 导出策略 |
|---|---|---|---|
| .aira / AMIR JSON | 规范 authoring | schema/migration/签名检查 | canonical、可 diff、含 lock manifest |
| STEP AP242 | 精确 CAD 交换 | import node + immutable blob;解析为 ExactSolid artifact | 记录单位、容差、属性与 feature-history 不保留项 |
| IGES | 兼容交换 | 隔离解析、healing 和警告 | 仅按明确需求,提示语义限制 |
| 3MF | 打印网格 | 解析为 MeshSolid/attributes | MeshSolid 优先出口,附 manifold/单位证书 |
| glTF/GLB | 实时展示与交付 | 作为 mesh/scene asset 导入,不恢复 CAD 历史 | 从 RenderPacket/mesh 显式导出,绝非 authoring source |
| STL | 兼容出口 | 必须请求/推断单位并警告,无拓扑/材质/历史 | 仅兼容,附单位与损失报告 |
| OpenUSD | 未来装配/场景组合 | Phase 3 评估 | 不替代 AMIR feature graph |
规则:
- import 总是创建带 blob hash、格式 profile、单位和 healing policy 的显式 AMIR node。
- import 后的 body 选择一个 authority kind;无法可靠识别时要求用户/AI 显式决定。
- export 是 revision + Evaluation/artifact + delivery profile 的纯派生 job,不改变几何 Feature DAG;需要版本化的出口配置保存在独立 delivery profile 图及其 hash 中。
- 每次 export 产生 Exchange Geometry Certificate 和 machine-readable loss report。
- STEP round-trip 比较解析面类型、单位、属性、有效性和带容差几何,不以文件字节相等为目标。
- GLB/BREP sidecar 可以加速加载,但永远不能在缺失 AMIR 时被当作完整项目恢复源。
24. 可观察性与回归
Section titled “24. 可观察性与回归”24.1 Trace
Section titled “24.1 Trace”统一 trace context:
requestId → transactionId → revision/candidateHash → compiler pass → plan/node → scheduler job → adapter/worker execution → artifactHash → certificateHash → RenderPacket/export每个 span 记录版本、cache status、预算、取消和稳定 error code;不默认记录完整几何或用户内容。
24.2 Metrics
Section titled “24.2 Metrics”至少包括:
- API latency、queue time、事务成功/拒绝/冲突率;
- compile/type/unit/selector 成功率;
- dirty node ratio、subgraph cache hit、artifact reuse;
- adapter cold start、execute、validate、tessellate 时间;
- worker crash、timeout、cancel latency、峰值内存;
- triangle/cell/body/face 数;
- SemanticRef survival、missing/ambiguous;
- certificate validity、conversion loss、warning 分布;
- viewer frame time、上传量、拾取 latency;
- STEP/3MF/GLB export success 与 round-trip deviation;
- AI 首次 patch 成功率、修复轮次和无效请求拒绝率。
24.3 日志与重放
Section titled “24.3 日志与重放”- 结构化日志使用稳定 code,不解析本地化字符串;
- 生产日志中的实体用 hash/ID,敏感字段可采样或脱敏;
- 每个失败可导出最小 replay bundle:AMIR candidate、input hashes、manifest、budgets、diagnostics;
- golden corpus 覆盖 primitive、boolean、fillet、shell、selector 变更、STEP round-trip、Field bake、约束冲突和恶意输入;
- kernel/compiler/plugin 升级必须双跑 corpus,并比较语义不变量和证书误差界。
25. 性能预算原则
Section titled “25. 性能预算原则”性能指标必须与模型复杂度、质量和执行环境绑定,不能用一个“CAD 操作应在 100 ms 内”掩盖精度差异。
25.1 预算维度
Section titled “25.1 预算维度”每个 operation descriptor 和 transaction policy 声明:
- CPU/WASM wall time;
- worker cold-start 与 module-load;
- peak memory;
- output bytes、triangle/cell/subshape 数;
- main-thread blocking;
- network transfer;
- preview quality/error;
- authoritative validation;
- cancel grace period。
25.2 原则
Section titled “25.2 原则”- 主线程预算独立:权威几何不得阻塞 viewer;超过一帧的解析/拷贝也应移入 worker 或分片。
- 先反馈后精化:交互时可使用 coarse preview,停止操作后自动请求 authoritative refine;两者必须视觉标识并使用不同缓存。
- 可取消优先:长操作在计划中的安全点检查取消;取消延迟本身是 SLO。
- 先估算后分配:pattern、Field 和 tessellation 在执行前估算输出,超过 hard cap 直接拒绝或要求显式提高预算。
- 按 dirty subgraph 计费:性能回归以真正重算节点和复用率解释,不能只看总时长。
- 质量参数进入结果身份:任何通过降低 tolerance/采样换取速度的结果都成为不同 artifact。
- 分环境基线:browser low/mid/high、native、server 各有 reference machine 和 corpus,不跨环境混合 percentile。
- 冷/热路径分开:WASM 下载、编译、worker 启动与热执行分别报告。
- 内存是硬约束:超过 hard cap 终止 worker;不得依赖浏览器 OOM 回收。
- 无证书不达标:速度提升若降低 validity、reference survival 或误差界,不算性能优化。
25.3 Phase 0B 性能门槛
Section titled “25.3 Phase 0B 性能门槛”这些数字是样机门槛,必须在 reference devices 确定后由性能 ADR 固化:
- UI 主线程不执行 kernel;交互期间连续 long task(大于 50 ms)为失败;
- 静态 patch 检查的热路径目标为 p95 小于 50 ms;
- cached RenderPacket 的选择反馈目标为 p95 小于 100 ms;
- 参数拖拽必须在 150 ms 内显示状态或首个 coarse preview,不能无反馈等待权威重算;
- 所有超过 500 ms 的任务必须显示进度并可取消;
- browser worker 必须有经基准确定的 memory/triangle/cell hard cap;
- benchmark 必须同时报告 p50/p95、cold/warm、峰值内存、输出质量和 cache hit;
- 合并请求不得让固定 corpus 的 p95 时间或峰值内存无解释恶化超过 10%。
26. 兼容、版本与迁移
Section titled “26. 兼容、版本与迁移”- AMIR schema、operation descriptor、adapter ABI、RenderPacket 和 Geometry Certificate 由版本及内容哈希区分语义。
- 当前项目未发布,只维护当前读写契约;旧版 schema/catalog 明确拒绝,不维护兼容窗口、迁移层或别名。
- 替换实现同批删除退役入口和重复分支;不静默重解释旧 Revision,也不把版本兼容用作付费限制。
- kernel upgrade 不自动改写 AMIR Revision;新执行产生新的 Evaluation、ExecutionManifest 和派生 artifact hash。
- 缺失或退役的 operation 必须返回可解释的能力/契约错误。当前原子提交、撤销重做与保存恢复保持正确。
- 能力发现使用明确契约,不根据 User-Agent 猜测能力;当前决定遵循产品宪法 §10。
- 跨组件语义变化更新相关规范与现有验证记录,不增加迁移验收体系。
27. ADR 决策记录
Section titled “27. ADR 决策记录”以下是本 RFC 提议接受的架构决策;RFC 获批前状态均为 Proposed。
| ADR | 决策 | 理由 | 主要代价 |
|---|---|---|---|
| ADR-001 | canonical AMIR revision 是唯一 authoring source | 可重放、可 diff、可迁移、适合 AI patch | 需自研 schema、编译器和 formatter |
| ADR-002 | 每个 body 使用显式单一 geometry authority | 阻止多表示静默漂移 | 跨表示操作需要显式 conversion |
| ADR-003 | 多内核经 versioned adapter | 用 OCCT/Manifold/Field/solver 各自强项 | conformance、路由和打包复杂 |
| ADR-004 | 所有写入走 transaction engine | AI、GUI、CLI 一致且可审计 | 简单 UI 操作也需事务开销 |
| ADR-005 | Rust 承担 compiler/transaction core | WASM/native 共享、强类型、可控执行 | 团队需维护 Rust + TS + C++ 构建 |
| ADR-006 | kernel 在 worker/进程隔离 | 生命周期、取消、OOM/crash recovery | 序列化和跨边界成本 |
| ADR-007 | SemanticRef + ArtifactGraph,禁止 index identity | 支持重建、来源和可解释失败 | 引用解析与历史映射投入较大 |
| ADR-008 | Geometry Certificate 是提交/导出证据 | 让 AI 和回归系统知道保证边界 | 验证耗时与 schema 维护 |
| ADR-009 | Three.js 只做 viewer | 避免渲染结构污染建模语义 | 需要 Render Bridge 与 picking map |
| ADR-010 | 所有转换显式并带损失报告 | 防止精度与意图静默丢失 | 用户/AI 需要处理更多决策 |
| ADR-011 | revision/event + content-addressed artifacts | 原子历史、去重、可回放 | GC、索引和迁移更复杂 |
| ADR-012 | WebGL2 基线,WebGPU/TSL 渐进增强 | 兼容性与基本正确性独立 | 两条预览路径需要回归 |
28. Open Questions
Section titled “28. Open Questions”以下问题不阻塞 RFC 的总体方向,但必须在对应 phase 前关闭:
- OCCT browser custom build 的 capability 分包边界、压缩体积和冷启动预算是多少?
- OCCT LGPL exception 在目标应用商店、WASM 下载和离线桌面分发中的具体合规方案是什么?是否需要商业许可?
- Replicad 仅作 spike、长期 fork,还是直接过渡到自研最小绑定?
- PlaneGCS WASM 在拖拽、过约束、冗余、大尺度差异和初值敏感方面是否达到验收线?
- OCCT history/OCAF/BRepGraph 中哪些信号进入 ArtifactGraph,怎样避免把内部 UID 当产品 ID?
- Field 首版 authoritative evaluator 采用解释器、WASM codegen 还是两者;何时引入 Fidget/OpenVDB 类后端?
- Geometry Certificate 的几何距离/自相交算法由哪个 adapter 或独立 validator 承担?
- browser、native、server 哪一个是项目的默认 authoritative execution policy?
- 多人分支合并是 AST 三方合并、operation rebase,还是 intent-aware merge;几何冲突如何呈现?
- plugin ABI 使用 WIT/Component Model、JSON-RPC 还是自定义 typed binary protocol?
- 本地隐私模式下 AI 的 prompt、replay bundle 和遥测默认保留策略是什么?
- STEP AP242 属性、PMI、assembly 和 feature information 的首版保留范围是什么?
- OpenUSD 是否只承载大型场景组合,还是需要 AMIR assembly ↔ USD layer 的双向映射?
- Phase 0B reference devices、模型复杂度档位和性能 hard caps 的正式数值是什么?
29. 分阶段交付与验收
Section titled “29. 分阶段交付与验收”长期阶段依赖与外部调研裁决由 Aira 长期架构计划 统一维护;当前开发必须先完成 Aira Core MVP 实施计划。以下阶段是递进关系,Phase 0A 未通过时不得以评测框架、OCCT、SDF、约束或格式生态扩张替代产品纵向闭环。
Phase 0A:Aira Core MVP(当前主线)
Section titled “Phase 0A:Aira Core MVP(当前主线)”交付:
- Rust/WASM 最小语义 core;
- 六个 capability descriptor:
cap:primitive.box@1、cap:primitive.cylinder@1、cap:transform.translate@1、cap:boolean.union@1、cap:boolean.subtract@1、cap:parameter.set@1;它们分别 lower 到mesh.box、mesh.cylinder、mesh.transform、mesh.boolean.union、mesh.boolean.difference和 Patch opparameter.setValue; - 带完整
settings、ParameterRef/PortRef、Body authority 与 Body root 的最小 AMIR,以及 typed Patch、Candidate、immutable Revision、canonical hash、authoritative validation 与 CAS commit; - Manifold worker、RenderPacket 与 Three.js viewer;
- IndexedDB local revision storage、
.aira.jsonround-trip 与删除 cache 后重放;首版允许完整 DAG 重算,不把 dirty-subgraph 增量求值作为 Gate; interface.manifest、catalog.search/describe、model.read/proposePatch/preview/validate/commit/revert九个原生元操作;model.query/plan.check可以合并 transport,但不得跳过语义检查;- 一个无 Skills、无 CAD 状态、provider-neutral 的 AI gateway/adapter;模型密钥只保存在 服务端,gateway 只转发模型请求/结构化响应;tool call 回到浏览器后按 snapshot/grant 执行, 几何、事务、Revision 和渲染默认留在浏览器;
- prompt/command、viewport、参数、Patch diff/Diagnostic、Preview/Validate/Commit 与 history/revert 的最小 UI;
- 与 committed Revision 绑定的 ExecutionManifest、EvaluationBinding 与 Geometry Certificate;
- 接入现有 Inspect 基础设施的三条真实产品回归。
验收:
- 从空文档创建 box/cylinder boolean 零件并显示;
- 参数修改生成新 Revision,几何稳定重建;
- 删除派生 cache 后可由 AMIR 完整重放;
- 单位、引用、boolean、stale base 或权限失败时零部分写入;
- preview 或失配/过期的 validation token 不能提交,每个 commit 有完全绑定的权威证据;
- Three.js/Manifold 对象不进入 authoring source;
- 未预装 Aira 知识或 Skills 的模型只通过原生元操作完成创建、修改和 revert;
- provider API key 不进入浏览器 bundle、storage、日志或 AMIR;
- 三条 Inspect 产品回归可重复运行。
明确排除: OCCT、SDF、constraint solver、完整 SemanticRef、STL/STEP/3MF/GLB 几何出口、 assembly、dirty-subgraph 优化、Harbor/CADTestBench gate 和大规模 capability benchmark。
Phase 0B:扩展纵向样机
Section titled “Phase 0B:扩展纵向样机”Phase 0B 只有在 Phase 0A 全部通过后开始。
交付:
- Three.js Viewer + Render Bridge;
- Model Service 与统一 transaction API;
- canonical AMIR schema、20 个核心 node、单位/类型、stable ID、hash;
- proposePatch/preview/validate/commit/revert/export;
- Replicad/opencascade.js OCCT worker;
- manifold-3d worker;
- 最小 Field IR 与 Manifold LevelSet bake;
- constraints adapter mock 与 PlaneGCS spike;
- ExactSolid、MeshSolid、Field3D、DisplayMesh 和显式 conversion;
- ArtifactGraph v0、SemanticRef cardinality、Geometry Certificate v0;
- STEP、3MF、GLB 出口;
- browser 本地 revision/CAS/cache;
- 固定几何、安全和性能 corpus。
验收:
- 删除 cache 后,同一项目能从 AMIR 和 import blobs 完整重放。
- Three.js scene、BREP/GLB 文件均不参与 revision authoring hash。
- UI 和 AI 对同一操作生成相同 schema 的 patch,并通过同一事务路径提交。
- 修改单一参数只执行 dirty subgraph;未改变 artifact 保持 hash。
- preview 与 commit 绑定相同 candidate/manifest,precondition 变化能阻止提交。
- 至少展示一次 ExactSolid → MeshSolid 和 Field3D → MeshSolid 的显式损失证书。
- selector 缺失/歧义、单位错误、无界 Field、超预算和 worker crash 返回稳定 code。
- viewer picking 能追溯到 AMIR node/port,不保存 triangle index 为长期引用。
- STEP、3MF、GLB 导出均产生绑定 blob hash 的 certificate/loss report。
- 性能 corpus 记录 cold/warm、p50/p95、内存、输出规模和质量;达到第 25.3 节门槛或有获批 ADR。
Phase 1:可编辑机械 CAD
Section titled “Phase 1:可编辑机械 CAD”交付:
- 约束草图与 DOF/conflict 诊断;
- extrude、revolve、sweep、loft、boolean、fillet、chamfer、shell;
- OCCT history 映射、SemanticRef 多阶段解析和 source map;
- 几何/拓扑/质量属性 query;
- feature-ID segmentation 和诊断高亮;
- STEP AP242 import/export、healing 与 round-trip suite;
- native worker 原型。
验收:
- 参数 sweep 导致面/边 split、merge、delete 时,benchmark 中的 SemanticRef survival 达到团队设定阈值;其余必须明确 missing/ambiguous,零静默误选。
- 约束系统正确报告 fully/under/over constrained、DOF、residual 和冲突候选。
- fillet/shell/boolean 失败通过统一 Diagnostic 的
at、details和受限fixes提供 node、entities、已知事实与可执行恢复动作。 - STEP round-trip 在单位、解析 surface/curve 类型、颜色/名称范围和带界几何误差内通过 corpus。
- browser 与 native adapter 对相同 AMIR 通过同一 certificate conformance checks。
- 完成 OCCT 分发许可证与 SBOM 审核。
Phase 2:隐式与生成式差异化
Section titled “Phase 2:隐式与生成式差异化”交付:
- 完整 Field IR 类型、bounds、sign、Lipschitz/距离性质;
- CPU/WASM authoritative evaluator;
- TSL/WebGPU 交互预览和 WebGL2/mesh fallback;
- 自适应 quality budget;
- Manifold bake、smooth blend、lattice、gyroid、warp;
- Field/Mesh provenance 与制造检查;
- geometry distance/采样误差验证。
验收:
- TrueSDF 与一般 ImplicitField 在类型和允许 operation 上不可混淆。
- 无界/超预算 field 在执行前拒绝,所有运行任务可取消且不污染 commit。
- GPU preview 与 authoritative bake 的差异由证书量化;超阈值不能提交或导出。
- Field → Mesh 的 bounds、edgeLength、iso、sign、maxCells、误差全部进入 artifact identity。
- provenance 能从 mesh component/triangle range 回到 Field feature,丢失部分被显式报告。
- 固定 corpus 的 Hausdorff/采样距离、manifold、自相交、内存和时间达到批准预算。
Phase 3:生态、协作与服务化
Section titled “Phase 3:生态、协作与服务化”交付:
- package registry、签名、SBOM 和 capability catalog;
- TypeScript builder SDK、CLI、LSP;
- AI 结构化自修复与持续 benchmark;
- server authoritative worker pools;
- assembly、variant、branch/collaboration;
- OpenUSD 与服务端 OpenVDB/Fidget 等后端评估;
- 可复现 build worker image。
验收:
- 第三方插件无法直接访问 revision DB、raw kernel handle 或伪造 certificate。
- 卸载插件后旧 revision 可读,缺失 capability 有稳定错误与恢复路径。
- local/native/server 对同一 operation descriptor 通过协议和证书 conformance。
- 多租户配额、隔离、审计、取消、故障注入和数据删除测试通过。
- AI benchmark 同时报告创建、inspect、edit、validate、repair,而非只看 text-to-mesh 图片相似度。
- assembly/variant/协作语义通过独立 RFC;OpenUSD 仍不替代 AMIR feature graph。
30. RFC 总体验收条件
Section titled “30. RFC 总体验收条件”本 RFC 可从 Proposed 转为 Accepted,当且仅当:
- 团队确认第 5 节核心不变量;
- AMIR、Transaction、Evaluation、Adapter、ArtifactGraph、Certificate 和 RenderPacket 均有 v0 schema;
- 至少一个 OCCT 和一个 Manifold prototype 通过相同 adapter conformance harness;
- 演示端到端流程:AI/GUI patch → preview → validate → commit → viewer picking → export certificate;
- 能证明删除所有派生 BREP/mesh/GLB/cache 后可重建;
- 主要许可证、WASM 分发和插件供应链风险有 owner;
- Phase 0B reference devices、corpus 和性能 budget 通过独立性能 ADR;
- Open Questions 中 Phase 0B blocker 已关闭或有明确实验与截止日期。
31. 主要依据
Section titled “31. 主要依据”官方一手资料
Section titled “官方一手资料”- Open CASCADE Technology Overview
- OCCT Modeling Algorithms
- OCCT OCAF / Topological Naming
- OCCT Precision
- Open-Cascade-SAS/OCCT
- Manifold official repository
- Manifold JS/TS/WASM README
- Manifold C++ API / LevelSet
- Manifold algorithm notes
- opencascade.js
- opencascade.js Custom Builds
- Replicad
- FreeCAD PlaneGCS
- Three.js BufferGeometry
- Three.js WebGPURenderer / TSL
- glTF 2.0 Specification
- OpenUSD Introduction
32. 最终提案
Section titled “32. 最终提案”采用 AMIR + transaction engine 作为产品中心,而不是把任一几何库或渲染格式包装成产品中心:
- OCCT 提供 ExactSolid;
- Manifold 提供 MeshSolid 与首版 Field bake;
- 自研 Field IR 提供隐式建模语义;
- 自有 constraints abstraction 隔离具体 solver;
- ArtifactGraph 和 SemanticRef 提供跨重建身份;
- Geometry Certificate 提供可验证保证边界;
- Three.js 提供高质量交互视图;
- revision/event store 保存设计历史,CAS 保存可删除、可重建工件。
这使 AI 面对的是稳定、有限、可解释的建模语言和事务协议,而不是脆弱的 UI 自动化、任意脚本或庞杂内核 API。