跳转到内容

Aira CAD 底座复用、版本兼容与证据体系修正调查

项目 内容
状态 调查与实施记录 — §10.11 记录 CAD 接管,§10.12 记录收敛审查,§10.13 为 AI SDK 调查快照,§10.14 记录已采用的 AI SDK 实现;§1–10.10 为历史调查快照
日期 / 最后修改 2026-09-03
文档版本 0.1.10,仅用于本研究记录,不新增软件协议版本
调查基线 main,HEAD b721a673133f38c098743c3fa3a1c113036af820,加调查时未提交的工作树
范围 版本兼容、运行时证据、工程治理、成熟 CAD 实现复用;§8 为最小产品,§9 推导 CAD 底座,§10 为 OCAF/Replicad 实测接入调查
兼容性影响 §10.11 已改变内部默认实现及 WASM 资源版本;公开模型、历史身份和提交协议保持;未公开发布

本报告保留不同时间点的调查和实现证据,不覆盖产品宪法、Accepted RFC、已发布 AMIR 或现行实施计划。 阅读顺序:现行职责看实施计划 §6, 实现证据看 §10.11,收敛审查看 §10.12,AI SDK 采用实现看 §10.14。 §1–10.10 中的“当前”“下一步”仅指对应调查时点, 不是待执行清单;已被采用决定取代的“暂缓/先比较”不继续生效。早期调查时工作树包含未提交改动,单凭当时 HEAD 不能复现所有观测;具体基线须匹配记录中的源码和运行时字节。CAD 接管已提交为 51f4822,SDK 采用已提交为 f3ea4c1。

后续补充:开源底座与自研实现重叠审计进一步核对 原生拓扑索引/history、OCAF、批量网格提取和草图 wrapper,并复现三个手写层缺口;本报告的候选建议 不应被误读为这些实现已经没有问题。

用户随后明确要求先核对成熟实现,再从“实现 AI 可理解可操作的建模软件”推导最小充分方案, 补充见 §8。§1–7 保留原调查及其范围;§8 的起点是产品任务,现有架构作为待比较的实现。 随后明确聚焦 CAD 底座,其成熟实现核对、目标/约束推导与具体裁决见 §9。 用户随后纠正:当前任务是比较成熟库与现有实现哪个更好,不转为产品缺陷修复,也不预设替换数量。 该次比较口径记录在 §10.9;§10.6–10.8 的观测保留,其中暂缓/转向建议不作为自研胜出的证明。 逐库建议记录在 §10.10;用户随后采纳浏览器路线并授权实施,结果见 §10.11。 不再以旧比较程序作为当前工作的前置;开发维护成本与运行性能仍须区分。

历史初查结论;下述“未使用 OCAF”等陈述描述本节调查基线,后续接入见 §10.11。

  1. 存在功能层面的重复建设。 Aira 已使用 OCCT 几何算法,但没有在当前检查到的应用路径中直接采用 OCAF 的文档、事务、持久化、命名框架;其中若干对应机制由 Aira 自行实现。不能再将这些工作全部解释为“开源库只提供几何,其他都没有”。
  2. 重复覆盖不等于可以直接替换。 OCAF 的文档命令事务,与 Aira 的候选验证、分支发布、内容寻址修订不是同一契约;OCAF 持久化也不等于浏览器 IndexedDB 存储适配。应比较复用成本与保留成本,不能只比较功能名称。
  3. 版本兼容和结果绑定有真实产品用途。 它们保护用户设计、依赖语义和提交正确性,不能作为“无用底座”整体删除。
  4. 已发现可具体审查的成本: 多处手工目录登记、语义与说明文字共同参与模块哈希、尚不完整的用户级迁移流程,以及检查到的 Exact 路径在候选验证后再次进行提交后几何求值。
  5. 过去的瘦身已经发生。 共享事务实现、模块化 AMIR 0.4、普通/发布/历史证据分层已经落地。修正应接着做,不得把已经解决的问题重新列为待重构任务。

本报告不提供“多少代码白写了”“整体能省多少人月”的数字:目前没有反事实实现、性能对照或工时记录支持这种量化。

  • 已证实: 直接检查当前代码、绑定配置、导入关系、注册表及证据策略;或由官方技术文档明确说明。
  • 候选优化: 代码存在成本或耦合,但改变方案的收益、正确性与迁移代价尚未验证。
  • 未证实: OCAF 接入当前浏览器构建后的包体、内存、延迟、命名成功率和净维护收益;任何“立即替换能节省多少”的断言。

调查包括搜索自有 TS/Rust/C++ 代码中的 TDocStd、TDF_Label、TNaming、TFunction,检查 OCCT 自定义绑定、事务与存储实现、候选/修订求值路径。没有发现直接使用上述 OCAF 类的应用代码或当前受查绑定;这不是对所有第三方二进制内部链接符号的穷尽证明。

§1–7 的原始调查没有读取用户浏览器中的真实设计库存,没有执行 OCAF 替换原型,没有修改运行时代码,没有重跑全套产品测试;后续隔离实测见 §10。历史验收记录仅作为历史事实引用,不能当作本工作树当前测试通过。

必须区分:文件结构版本、建模操作语义版本、内核/求值器版本、用户设计修订,以及开发测试报告版本。这五者不能都当作“旧 CAD 文件兼容”。

Onshape 的 Context 记录标准库版本,旧特征重建可使用旧行为;跨文档导入固定到指定版本,由用户选择升级。这支持锁定建模语义与依赖,而非每次运行隐式采用最新版。官方 Context 说明、官方 Imports 说明

SOLIDWORKS 的 Save as Previous Version 支持向前两代保存,并要求处理不兼容项目。这是“降版本保存”的边界,不能误读成“新版本只能读取两代旧文件”。官方兼容说明

推论:Aira 需要公开、有限、可执行的支持策略;保存历史字节,不意味着所有历史实验协议永远参与新功能开发。

项目 调查时结果 正确解释
Schema registry 0.16.0;47 项,公开 37、实验 10 不同数据契约,不是 47 代模型格式
AMIR 事务入口 0.1、0.2、0.3、0.4 四条明确兼容线,已共用生命周期与 Rust 泛型事务实现
0.4 Exact catalog 0.4.0~0.4.5,六个快照 共用模块化模型信封,不是六套 Core
迁移证据 存在迁移记录定义和固定迁移样例 尚不能等同完整的用户项目升级服务

来源:Schema registry(packages/aira-contracts/src/version.ts)、兼容入口测试、共享 Rust 事务。

早期 0.1/0.2/0.3 使用封闭 Node union,新增操作会放大协议修改。ADR-CORE-002 引入 0.4 的通用节点信封、独立操作模块与目录快照,正是在解除这一耦合。它应保留,不应因目录快照较多而整体否定。ADR-CORE-002

旧线也不全是纯历史包袱:0.1、0.2、0.3 分别仍有关联 Mesh、Exact、Field 的实现或实验消费者。单凭版本号不能决定删除。

V-01:补齐支持与迁移策略,而非继续默认兼容所有线。

当前检查到固定迁移 fixture,以及拒绝跨线误读的测试;没有在受查产品路径中找到完整的跨版本升级工作流及明确退出窗口。数据库自身的 IndexedDB 升级存在,但不等于 AMIR 建模语义迁移。

建议在现有计划中列出每条线的真实消费者、可编辑/只读/迁移/研究状态和退出条件。任何退出都先确保备份、可恢复、语义对照与不支持情况的明确报错,不自动将未知旧格式按最新格式解释。迁移 fixture(packages/aira-contracts/fixtures/operation-modules-v0.4/manifest.json)、存储实现

V-02:减少多处手工注册。

Rust 仍分别维护目录 ID/hash、支持列表、模块装载列表和部分语义扩展绑定。候选方向是从同一来源生成登记数据,不删除语义验证,也不为此建立另一套 registry。canonical.rs、operation_modules_v04.rs

V-03:审查文案与语义身份的耦合。

hashOperationModule 对整个 module 求 canonical hash;module 包含 summary 和约束描述。因此说明文字改变也改变模块 hash。这是已证实的身份耦合,不是已证实的错误。

候选方向:未来协议明确区分纯展示元数据与可执行语义。影响 AI 能力发现或约束含义的文字不能未经分析直接排除;已发布模块的 hash 不得原地重算。哈希实现、圆角模块

Onshape 记录文档修改、操作者及历史状态,支持比较和恢复,说明追溯本身有明确产品价值。官方文档管理说明

CAx-IF 的交换验证包括源端记录几何属性、目标端重新计算并按约定容差比较;CADIQ 提供原生/衍生模型验证、修订比较及质量检查。独立验证并非 Aira 独创,也并非没有工业用途。CAx-IF 验证实践、CADIQ 官方说明

这些事实不等于“每次普通编辑必须携带完整数学证明”。质量属性相近也不是任意几何等价的充分证明,更不代表设计意图或制造要求正确。

层次 Aira 中的作用 处理方向
运行时结果绑定 candidate/baseRevision/model/patch/manifest/evaluation 与提交对应 保留,防止旧结果或其他模型的结果被错用
几何检查 内核有效性、闭合性、测量、转换质量 保留;检查范围与保证强度必须说清
工程发布证据 回归测试、构建身份、发布产物和历史报告 分层、去重、按用途运行,不冒充用户操作历史
数学证明研究 Lane R 的特定拓扑/网格化性质与形式化工作 维持独立边界,不自动成为普通 Exact 功能前置条件

哈希在可信预期值的基础上帮助识别数据和检测不一致;哈希本身不证明内容真实、来源可信或几何正确。不能把“哈希链完整”表述成“模型已被数学证明”。

当前通用 assurance 明确使用 kernelDerived,并未将内核自产指标当作独立证明。对 Exact 结果的 Manifold 网格检查也不能被扩大解释为对原始精确 B-Rep 和设计意图的完整证明。assurance 实现(apps/web/src/geometry/certificate-assurance.ts)、RFC-0003、Exact Fillet 证据(apps/web/src/sketch/legacy-fillet-evidence.ts)

4.3 E-01:提交后重复求值是具体优化候选

Section titled “4.3 E-01:提交后重复求值是具体优化候选”

检查到的共享 Exact session 路径为:候选求值和检查 → 验证收据 → Core commit → 持久化候选证据 → evaluateCommitted → 持久化修订证据。持久化审计要求一份候选证据和一份修订证据。

调查时圆角和旋转 worker 的两个阶段分别再次调用几何操作,圆角还重建源实体;这是几何工作而非复制 JSON。 2026-09-03 替换后两个专用 Worker 已退役,当前由共享 session 调用图执行器完成 Candidate 与 committed replay; 统一执行不代表取消必要的第二次求值。

候选方向:在模型、依赖、内核与容差一致的条件下,保留已验证的不可变几何结果,提交时创建明确的修订绑定;完整重算按恢复、发布、导出或回归场景安排。该方向尚未实现或证明安全。

不能简单删掉第二次调用,因为现在它还生成绑定修订的产物与引用。必须验证资源生命周期、Artifact/SemanticRef 身份、持久化失败恢复、取消、分支冲突,以及双证据格式的迁移。不得把旧证据中的 RevisionId 改写后冒充新证据。

最低测量:候选阶段、提交阶段、重算阶段的耗时和峰值内存;冷/热启动、小/长特征链分别记录。比较优化前后的几何、选择引用、重启恢复和错误行为。本调查没有延迟对照,不声称可以提速一倍,也不把此结论推广到所有操作路径。

5. 开源复用:我们是否重新造了一部分?

Section titled “5. 开源复用:我们是否重新造了一部分?”

5.1 已证实:已有应用框架能力没有直接接入

Section titled “5.1 已证实:已有应用框架能力没有直接接入”

答案是:有部分功能覆盖重叠,但不是整个 CAD 都重造,也不是每项都能直接替换。

OCCT 除几何算法外,还提供 OCAF 应用框架。其能力包含文档/属性组织、命令事务与 undo/redo、持久化、函数依赖/更新,以及 TNaming 拓扑命名。命名仍依赖应用提供历史与选择信息,不是自动解决所有失效引用。OCCT 8.0.1 OCAF 官方指南

当前受查的 Aira 自定义绑定主要暴露 TopoDS、BRep*、测量、网格化和几何操作,没有直接暴露上述 OCAF 文档/属性/命名类。现有 Extrude 绑定、工作树 Feature Graph 绑定

早在 2026-08-28,仓库调研就已列出 OCAF 能力;RFC-0001 也明确提到借鉴 OCAF,但产品 ID 不直接等于 OCAF label。故不能称为“从未知道开源已有”;准确说法是:已有调研提及,但当前选择了独立产品模型和自研上层机制。现有受查材料没有提供足以量化两条实现路线净成本的浏览器对照实验。早期调研、RFC-0001

下表的 OCAF 能力依据上面的官方指南;Aira 对应实现依据表后代码。重叠是功能责任层面的比较,不表示实现等价或逐行重复。

责任 OCAF 的相关设施 Aira 当前做法 判断
文档和属性组织 Document / Label / Attribute AMIR 文档、节点、参数、Revision 同类基础责任重叠,语义模型不同
命令事务、撤销重做 文档命令事务与撤销机制 Rust transaction、Patch、proposeRevert 事务/恢复部分重叠;追加式修订、候选验证、分支发布不等价
文档持久化 OCAF 文档存取及驱动 AMIR 序列化、IndexedDB repository、项目备份 存取责任部分重叠;浏览器存储适配仍需做
依赖和重算 TFunction 相关设施 自研 Feature Graph / 求值调度 有框架重叠;多表示调度与具体建模操作仍需适配
拓扑引用保持 TNaming 与拓扑演化记录 ArtifactGraph、SemanticRef、选择器和历史映射 部分重叠;产品级跨修订/跨表示语义仍不等价
AI 授权、任务分支、审批发布 未提供 Aira 的同类产品契约 grants、Candidate、Task、用户头发布边界 不能据 OCAF 功能表判定为重复建设

Aira 对应代码:事务、存储、Feature Graph、ArtifactGraph。

5.3 已经复用的不能算成自研重造

Section titled “5.3 已经复用的不能算成自研重造”

Aira 并未自行重写 OCCT 的拉伸、旋转、布尔、圆角、倒角和壳体算法。受查代码直接使用 OCCT 几何构造、BRepCheck_Analyzer、质量属性与 Generated / Modified / IsDeleted 历史;自研的是围绕它们的编排、产品身份和持久化规则。圆角适配、旋转适配

“用了内核但没用其应用框架”是当前有依据的描述;“什么都没复用”“这些自研都不必要”没有依据。

  • “产品 ID 不应直接等于 OCAF label”不推出“OCAF 不能在 adapter 内部使用”。可以保留外部 AMIR 身份,同时映射内部 Label/命名结果;可行性需验证。
  • “AI 产品有特殊权限”不推出“文档存储、局部事务、命名、依赖管理都必须自研”。特殊需求应限制在确有差异的边界。
  • “OCAF 提供某功能”也不推出“现在采用更省”。新增 WASM 绑定、C++ 对象持有、浏览器存储、已有项目迁移和双重状态同步都可能抵消收益。
  • 不能因为已经投入就拒绝复用,也不能为了复用比例推倒已有稳定公共实现。判断对象是未来维护与产品交付成本。

6. 修正准备清单:建议顺序与验收条件

Section titled “6. 修正准备清单:建议顺序与验收条件”

以下均为建议,尚未改变当前架构或授权执行运行时迁移。沿用现有任务与文档,不另建一套治理系统。

顺序 事项 产出与最低验收 不能做的捷径
1 补版本支持/消费者矩阵 逐线明确编辑、读取、迁移或研究范围;至少一条真实旧项目备份→迁移→重建→恢复流程 按版本号直接删旧线;把 fixture 等同用户迁移
2 测量并试验候选结果复用 对照候选/提交重算耗时、内存;引用、恢复、错误路径均保持正确 直接删除提交后求值或改写旧证据身份
3 合并目录登记来源 新增模块时不再手工同步同一事实到多个列表;保留跨语言一致性负例 删除校验代替去重;再建第二注册表
4 限定范围验证 OCAF 复用 在现有一个 Exact 修改与引用恢复用例上比较 adapter 内部复用与现有实现 全面迁移 Core、替换权威存储、启用双重可写模型
5 核查剩余治理与文案身份耦合 仅保留有独立消费者/风险覆盖的检查;明确未来元数据身份边界 改写已发布契约或历史报告;再为本次调查建立证明链

OCAF 验证建议首先只回答一个问题:能否在不改变 AMIR、用户数据与提交权威的条件下,减少一个具体 Exact 引用/更新用例的手写维护? 原型应一次只验证一种内部复用方式,不同时替换文档、存储、事务和命名。

原型记录绑定增量、WASM 体积、启动/峰值内存、引用恢复成功与失败行为、资源释放,以及可移除的自有逻辑。若需要维护两个可写的权威模型,或没有可说明的净收益,应停止扩展该方案。此处不预设 OCAF 一定胜出,也不把试验列为全部产品功能开发的阻塞条件。

修正前仍需保留:用户设计可恢复、几何检查、失败不得发布错误结果、候选与提交模型一致、显式版本解释、授权边界和实际回归测试。保留这些能力不等于永久保留当前实现方式。

尚待回答:

  • 真实用户数据分别使用哪些 AMIR 线?哪些旧入口只是测试/研究消费者?
  • 内核升级后的兼容目标是几何容差内等价、拓扑/引用保持,还是特定产物字节一致?不能混为一个“确定性”承诺。
  • 重复求值在真实建模链中的成本占比是多少?候选结果当前能安全保留多久?
  • 哪些文案参与 AI 行为或合同解释,哪些确实只是展示?
  • OCAF 局部复用在当前 WASM、资源生命周期和存储架构中是否有净收益?

最终处置原则:承认部分自研覆盖了开源已有的基础责任;通过有限实验证明哪里该复用、哪里保留薄适配。把版本与证据体系压到实际用户保护和发布质量所需的范围,而不是将可靠性能力整体撤掉。