Aira AI-CAD 增长基准协议(v1,2026-09-07)
本协议定义一组可公开复算的真实模型建模任务,测量成本与可靠性随重复规模和续改深度的增长。
它关闭上线计划 §11 当前目标的第 4 条(“增加重复规模和续改轮数观察增长”),并且是此后契约或验证改动触及
AI 建模路径时的回归集合。判据在运行前写死;运行结果只追加到 docs/benchmarks/results/,不改判据。
- 任务经真实 provider(DeepSeek)和产品入口运行:浏览器工作台、AI SDK 网关、宿主验证、独立 STEP 回读。 假 provider 与离线几何只用于接线检查,不进入结果表。
- 只统计能由封闭公式给出体积、实体数、面数、边界的任务。成功由独立 OCP 回读对照公式判定,与模型自述无关。
- 每次付费运行需用户明确授权;协议本身不构成费用授权。
2. 任务集与解析真值
Section titled “2. 任务集与解析真值”单位 mm,体积 mm³。N = cols × rows。
| 编号 | 类别 | 起始状态 | 指令(逐字) | 真值 |
|---|---|---|---|---|
| T1 | 薄壁阵列,创建 | 空白文档 | 从空白创建一个顶部敞开的薄壁盒体:外形 X 0–120、Y 0–80、Z 0–40 mm,底厚 2 mm,四周壁厚 2 mm;在底面上打 {cols} 列 × {rows} 行的 Ø6 mm 贯穿孔,列沿 X、行沿 Y,孔中心在 X 15–105、Y 20–60 范围内等距分布,首末孔中心落在范围端点上。用参数 cols、rows、holeDiameter、wall 表达;最终返回一个实体。 | V = 120·80·40 − 116·76·38 − N·π·3²·2;1 实体;面数 11 + N;边界 [0,0,0]–[120,80,40] |
| T2 | 扫掠 + 法兰,结构续改 | sweep-created.aira.json(e56930:R=10、r=8、L₁=60、L₂=40、ρ=40) |
在管子起点端面(X=0 处的截面)加一个与管同轴的法兰盘:外径 40 mm、厚 4 mm,从 X=0 向 −X 延伸到 X=−4,中心通孔与管内径相同并贯穿法兰;用新参数 flangeDiameter 与 flangeThickness 表达;其他不变,实体仍命名为 tube。 | V = π(R²−r²)(L₁+L₂+πρ/2) + π(20²−r²)·4 = 22,638.15;1 实体;X 下限 −4 |
| T3 | 放样,结构续改 | loft-saved.aira.json(98fbe7:60×40 矩形 → Ø24 圆,h=70) |
把顶部截面从直径 24 mm 的圆改为边长 20 mm 的正方形(中心不变,仍在 height 高度处),用新参数 topSide 表达正方形边长;其他几何与参数不变。 | V = h/6·(A₁ + 4A_m + A₂),A₁=2400,A₂=400,A_m=40·30=1200 → 88,666.67(h=70);1 实体;6 面 |
| T4 | 多实体,结构续改 | complex-part-v2-edits-1e8f86.aira.json(cols 6、holeDiameter 8、pinDiameter 14,138,388.42) |
在两片叉耳之间的底板上,沿 Z 轴增加一个 Ø10 mm 贯穿孔,中心在 X=60、Y=40;用新参数 centerHoleDiameter 表达孔径;保持其他几何、参数与 bracket / pin 命名不变。 | V = 138,388.42 − π·5²·8 = 137,760.10;2 实体,命名 bracket / pin 不变 |
| T5 | 多实体,结构续改(改路径) | 同 T4 | 把弯管的弯曲半径从 10 mm 改为 15 mm,用新参数 bendRadius 表达;保持其他几何、参数与 bracket / pin 命名不变。 | V = 138,388.42 + π(4²−2.5²)·(π/2)·5 = 138,628.99;2 实体;Y 上限 105 |
勘误(2026-09-08):T5 的指令有两种读法——直段长度不变(管子随弯曲半径伸长,Y 上限 100 → 105)或端点不变(直段各缩 5 mm,体积 −65.73); 真值按前者。2026-09-08 的 T5-5 取了后者,程序、期望声明与实测自洽而按真值判失败。此后运行的指令末尾加“两段直段长度不变”以消歧; 2026-09-08 结果行保留原判。
起始文件按 SHA-256 记录在结果里;文件本身存于用户授权的临时目录,不进仓库。
3. 增长轴
Section titled “3. 增长轴”3.1 规模轴(T1)
Section titled “3.1 规模轴(T1)”| 格 | cols × rows | N | 真值体积 |
|---|---|---|---|
| S1 | 4 × 3 | 12 | 48,313.42 |
| S2 | 8 × 6 | 48 | 46,277.66 |
| S3 | 16 × 12 | 192 | 38,134.66 |
| S4 | 32 × 24 | 768 | 5,562.62(公式值,不判) |
同一指令只改两个数字。假设:程序用循环表达阵列,token、费用与耗时应与 N 无关;若随 N 线性增长,说明模型在 逐孔写几何,这是失败模式而不是“更难的题”。S4 的孔距 90/31 ≈ 2.90 mm 小于孔径 6 mm,孔相互重叠,真值公式 不再成立——S4 只测成本增长,几何判据改为“1 实体、有效、边界不变”,体积不判。 勘误(2026-09-08):S3 同样病态——cols 16 在 90 mm 上的孔距 6.0 mm 等于孔径(相邻孔相切),rows 12 在 40 mm 上的孔距 3.64 mm 小于孔径(重叠), 真值公式不成立;宿主修复栈溢出后该格实测为 166 实体、1,053 面、40,907.45 mm³。N=192 要有真值须换板材尺寸或孔径;改动前 S3、S4 两行只表示成本与宿主行为。 修订格 S3′(2026-09-08 增补,同一指令只改两个数字):cols 15 × rows 7,N = 105,孔距 X 6.43 mm、Y 6.67 mm 均大于孔径,真值 V = 43,054.39、1 实体、116 面、边界不变。 它是 Ø6 孔在该板上不相交的最大阵列(cols ≤ 15、rows ≤ 7),规模轴因此止于 N = 105;零付费复核:S1-1 的程序改参数后宿主 18 s 提交,独立回读与公式一致。
3.2 深度轴(T1 的 S1 状态上连续续改)
Section titled “3.2 深度轴(T1 的 S1 状态上连续续改)”每条序列从 S1 的创建结果重开,六轮依次执行;每轮都必须满足真值,前几轮的几何不得被后一轮破坏。
| 轮 | 指令(逐字) | 真值(w=壁厚,d=底孔径,N=底孔数) |
|---|---|---|
| k1 | 把 cols 改为 8,其他不变。 | N=24:47,634.83 |
| k2 | 在盒体两个短边(X=0 和 X=120 的壁)外壁中央各加一个 Ø8 mm 的贯穿孔,孔轴线沿 X,中心在 Y=40、Z=25;其他不变。 | 47,634.83 − 2·π·4²·2 = 47,433.77 |
| k3 | 把 holeDiameter 改为 5 mm,其他不变。 | 47,433.77 + 24·π(3²−2.5²)·2 = 47,848.46 |
| k4 | 把 wall 改为 3 mm,其他不变。 | 120·80·40 − 114·74·37 − 24·π·2.5²·3 − 2·π·4²·3 = 70,152.69 |
| k5 | 在底板中心 X=60、Y=40 处加一个 Ø6 mm 的贯穿孔,用新参数 centerHoleDiameter 表达;其他不变。 | 70,152.69 − π·3²·3 = 70,067.87 |
| k6 | 把 rows 改为 4,其他不变。 | N=32;底孔 y 在 20–60 四等分:20、33.33、46.67、60,与中心孔 (60,40) 的距离 6.67 > 3 + 2.5;70,067.87 − 8·π·2.5²·3 = 69,596.63 |
k5 的中心孔与底孔互不相交(cols 8 的 x 序列 15、27.86、40.71、53.57、66.43、… 与 60 的最小距离 6.43 > 3 + 2.5),所以真值仍是简单相减;Ø10 会与相邻底孔重叠,故取 Ø6。 假设:每轮成本只随程序长度变化,不随历史轮数增长;守恒律保证未提及的几何不变。
4. 样本与统计
Section titled “4. 样本与统计”- 每格 n = 5 次独立运行;每次从同一起始文件重开(规模轴从空白文档),互不共享上下文。
- 成功率报 Wilson 95% 区间,不报点估计;成本与时间报中位数与最大值。
- 序列(深度轴)以整条序列为样本:n = 5 条序列,报每轮的成功率与每轮成本中位数。
- 跑前写死,跑后不改:n、判据、终止规则、封顶。中途发现协议错误只能作废整格重跑并在结果里注明。
5. 指标定义
Section titled “5. 指标定义”数据来源为产品自身的任务卡与 trace(FlowMeter 的 gauges/counters、NativeAgentUsage)、网关标准输出
与独立回读,不另建采集器。
| 指标 | 定义 | 来源 |
|---|---|---|
| 首试成功 | 第一份计划被宿主接受并提交,没有 needs-repair 诊断 | 流程记录无 rejected |
| 最终成功 | 预算与终止规则内提交且几何判据全部通过 | 回读 |
| 修复次数 | 宿主拒绝后模型重发计划的次数 | 流程记录 |
| 调用数 | provider 请求数 | counters calls |
| 查库数与查询词 | aira_library_reference 调用数与每次的查询词 |
counters lookups;网关 [gateway] library lookup 行 |
| token | 已结算请求的输入/输出 token,及 provider 报告的缓存命中/未命中 | counters in/out;raw usage |
| 未结算用量 | 取消或超时时在途请求的用量,记 unknown,不估算 |
— |
| 费用 | 按运行日 DeepSeek 官方牌价与缓存命中拆分计算;记录牌价日期 | gauge cost 与牌价 |
| provider 耗时 | 全部 provider 响应时间之和 | counters provider |
| CAD 耗时 | 浏览器内计划执行(预览、验证、提交、回读)时间之和 | counters cad |
| 首个可见结果 | 提交指令到第一次 model.commit 完成的时间 |
页面记录器以头版本变化时刻计 |
| 总时长 | 提交到任务卡终态 | gauge duration |
| 峰值内存 | 任务期间评估 trace 的 wasmMemoryBytes 最大值 |
快照 evidence wasmMemoryBytes |
| 上下文字节 | 用户消息字节数与其中模型上下文、签名清单的字节数 | 网关请求捕获(假 provider 栈同一函数),或 counters chars |
6. 几何判据
Section titled “6. 几何判据”回读命令(仓库现有工具):
uv run --no-project --python 3.12 --with cadquery-ocp-novtk==7.8.1.1 python tools/independent-step-verifier/verify_step.py <STEP>全部满足才算通过,任一不满足即失败,没有“近似成功”:
status = passed且valid = true;- 体积相对误差 |V_measured − V_expected| / V_expected ≤ 1e-6(S4 除外,见 §3.1);
- 实体数、面数与真值相等(面数只在真值列给出时判);
- 边界各分量与真值之差 ≤ 1e-6 mm;
- 命名实体(T4、T5)名字集合不变,由守恒报告确认。
7. 终止与封顶
Section titled “7. 终止与封顶”- 提交后 3 分钟内没有计划到达即点击停止,记失败,用量按“未结算 unknown”处理; 勘误(2026-09-08):2026-09-08 的 48 次付费运行里 9 次失败有 8 次是这条规则停止的,且没有一次是几何错误;产品自身的任务时长默认已改为 5 分钟, 此后“无计划停止”改按产品预算(5 分钟),由产品的 TASK_TIMEOUT 判定,记录器不再自行点停。已记录的行保留原判。
- 单次任务最多 2 次修复,第 3 份计划被拒即失败;
- 每格费用上限 $0.15(规模轴 S4 为 $0.30),超出即停止该格剩余运行,已跑样本保留并注明 n;
勘误(2026-09-14,M3):该上限按 2026-09-07 实测单价(创建 $0.02–0.05)设定。M3 在提交 27ce6d14 上重跑 S1 时,一次创建即结算 $0.2122(7 次调用、432,358 输入 token、2 次查库、turn 4),是 09-08 同格复测均价 $0.027 的 8 倍;来源是内置代理循环续传后模型在提交计划后回读自检(与目标探测协议 §14 记录的现象一致),不是几何或产品错误。按原上限每格都会在 n=1 停下,P1 拿不到区间。自 S1-2 起规模轴每格上限改为 $1.25(5 × $0.25),深度轴每轮每次上限 $0.40,超出即记
budget并终止该序列;S1-1 原判保留(按原规则触顶,n=1 → 续跑至 n=5)。判据、n 与终止规则不变。 - 单次任务预算沿用产品默认(16 轮、6 次修复、12 分钟、$0.5),不为基准放宽。 勘误(2026-09-08):括号里的数字是当时工作树里一段未提交的临时预算,不是提交版本的默认;2026-09-07 与 09-08 两轮运行的构建都取自提交,产品默认为 48 轮、16 次修复、30 分钟、$5。自 2026-09-08 起产品默认时长改为 5 分钟,单次程序执行另有 60 秒上界、单次评估 120 秒上界;此后运行按当次构建的默认记录。
8. 控制变量(每次运行记录)
Section titled “8. 控制变量(每次运行记录)”代码提交号;Web 与 Gateway 构建的 dist 哈希;运行时身份(aira_occt_feature_graph v0.16,248 个绑定);
模型 id、思考模式与推理强度、温度(沿用产品配置,不改);预算配置;指令文件哈希;起始文件 SHA-256;
牌价日期;浏览器与 OS 版本;机器(CPU/内存)。provider 侧的随机性不可控,所以用 n=5 与区间表述。
改进结论只能来自同条件对照。基线为提交 fbdd9f3(签名清单、上下文最小化、守恒律与导出修复之前;计划合同
0.5.0,Web 与 Gateway 必须同为该提交的构建)。基线子集:S1、S2 各 n=3,深度轴 k1–k3 一条序列 n=3。
基线的失败也如实记录;基线与现状的差异只按同一格同一判据比较。
10. 流程
Section titled “10. 流程”- 启动真实栈(网关 dist + Web dist + 夹具/抓取助手),记录 §8 的全部变量。
- 规模轴每次:清空本地存储 → 提交 T1 指令 → 等待终态 → 导出 STEP → 回读 → 写一行结果。
- 深度轴每条序列:从 S1 的保存副本重开 → k1…k6 逐轮提交、等待、导出、回读、写行;任一轮失败则序列在该轮终止,后续轮记
not-run。 - 每行结果附 STEP 与
.verify.json的 SHA-256;文件存临时目录。 - 汇总表按格给出成功率区间、成本与时间的中位数/最大值、峰值内存,附增长曲线的数值表。
11. 产出与复算
Section titled “11. 产出与复算”docs/benchmarks/results/<日期>-<提交号>.jsonl:每次运行一行,字段见results.schema.json。docs/benchmarks/results/<日期>-<提交号>.md:汇总表与结论;结论只陈述测到的增长,不外推。- 复算:任何人用同一起始文件、同一指令、同一回读命令与本文的公式可以重新判定每一行;token 与费用可用 牌价与结果里的用量重新计算。
12. 费用估算
Section titled “12. 费用估算”规模轴 4 格 × 5 = 20 次创建,深度轴 5 条序列 × 6 轮 = 30 次续改,基线子集 6 + 9 = 15 次;按本轮实测单价 (创建 $0.02–0.05、参数续改 $0.003、结构续改 $0.01–0.05)估算合计 $1.0–1.5,跑前按 §7 封顶。