Files
cadSet/README.md
T
2026-07-28 14:41:26 +08:00

198 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CadSet
CadSet 是一个面向机械零件的 STEP-first 参数化 CAD 系统。它覆盖自然语言与图文生成、上传 STEP 的独立参数化重建、模型修改、几何验收,以及从批量 STEP 案例中蒸馏可复用建模经验。
系统的统一设计源是自有的 **DesignIR 3.0**。文字/图片生成使用语义参数化层,上传 STEP 使用 SurfaceIR 层;STEP 是主要交换与验收格式,但上传的源 STEP 只作为教师证据和验收真值,不作为重建时的几何依赖。
## 产品范围
当前主线只包含三类工作流:
1. 根据自然语言生成可编辑 CAD。
2. 根据文字和参考图片生成或修改可编辑 CAD。
3. 将上传的 STEP 重建为 DesignIR,独立生成新的 STEP,并继续参数化修改。
CAD Router 会在两个执行后端之间选择:
- **text-to-cad / Build123d**:通用机械零件、特征建模、几何验证和 STEP 输出。
- **SimpleCADAPI**:可重放操作图、语义化机械结构和专用机械零件能力。
## 系统架构
```text
┌────────────────────┐
Text / Image / STEP ──> │ CAD Agent Studio │
└─────────┬──────────┘
┌─────────▼──────────┐
│ CAD Router │
└──────┬───────┬─────┘
│ │
┌───────────▼─┐ ┌─▼──────────────┐
│ Build123d │ │ SimpleCADAPI │
└───────────┬─┘ └─┬──────────────┘
└────┬────┘
DesignIR 3.0 + STEP
┌───────────▼───────────┐
│ Viewer / Acceptance │
└───────────────────────┘
```
上传 STEP 的重建链路使用严格的教师隔离:
```text
Teacher STEP
-> private geometry evidence
-> Reconstruction Agent
-> DesignIR 3.0 / SurfaceIR
-> isolated compiler without Teacher STEP access
-> rebuilt STEP
-> independent Acceptance Agent
-> deterministic experience promotion
```
## 仓库结构
| 路径 | 职责 |
| --- | --- |
| [`cad-agent-studio/`](cad-agent-studio/README.md) | 独立 Next.js 前端,负责对话、图片与 STEP 上传、任务管理和模型预览。 |
| [`designir-pipeline/`](designir-pipeline/README.md) | DesignIR Schema、双 Agent、隔离编译、验收和经验晋升。 |
| [`text-to-cad/`](text-to-cad/README.md) | CAD Router、Build123d CAD Skill、CAD Viewer 和共享 CAD 运行时。 |
| [`SimpleCADAPI/`](SimpleCADAPI/README.md) | 第二建模后端,提供可重放操作图和机械建模 API。 |
| [`llm.config.yaml`](llm.config.yaml) | 前端共享的模型供应商、模型和密钥配置。 |
依赖目录、虚拟环境、构建缓存和批量运行数据不会进入 Git。锁文件、源码、Schema、Agent 定义和确定性测试会进入版本控制。
## DesignIR 3.0
DesignIR 3.0 使用统一外壳和三种明确模式:
- `fully_semantic_parametric`:文字/图片生成的设计意图与特征程序。
- `surface_parametric`:上传 STEP 推断出的独立 SurfaceIR 重建程序。
- `hybrid_semantic_surface_parametric`:语义程序加生成 STEP 的 SurfaceIR 快照,语义层仍是修改权威。
语义层保存设计意图,而不是复制教师 STEP 的 B-Rep 或三角网格。主要结构包括:
- coordinate systems 与 datums
- editable parameters 与 expressions
- sketches 与 constraints
- ordered features、patterns 与 attachments
- construction stages
- edit interface
- validation and perturbation contracts
Schema 位于:
[`designir-pipeline/contracts/designir-3.0.schema.json`](designir-pipeline/contracts/designir-3.0.schema.json)
当前两个后端共同支持的首批操作包括:
- `extrude_circle`
- `extrude_rectangle`
- `add_cylinder`
- `through_hole`
- `polar_hole_pattern`
不支持的几何必须显式进入 quarantine,并记录缺失能力;系统禁止使用源 STEP、嵌入 B-Rep、完整网格替身或源拓扑引用绕过重建。
## STEP 蒸馏与验收
将待处理的 STEP/STP 文件放入:
```text
designir-pipeline/input/
```
蒸馏目录只保留三层:
| 路径 | 用途 | Git |
| --- | --- | --- |
| `designir-pipeline/input/` | 原始教师 STEP/STP | 不提交 |
| `designir-pipeline/runs/` | 证据、DesignIR、重建件、验收、草稿和失败记录 | 不提交 |
| `designir-pipeline/output/library.json` | 通过确定性校验的经验库 | 提交 |
`runs/` 内部由程序按需创建 `evidence``designir``rebuilt`
`acceptance``review``quarantine`。目录层级只负责整理文件;两个
Agent 的读写边界由程序和合同控制。
详细说明见 [`designir-pipeline/README.md`](designir-pipeline/README.md)。
批量提取教师证据:
```bash
designir-pipeline/scripts/cad-experience extract-folder
```
蒸馏得到的经验必须同时通过几何一致性、特征语义、参数可编辑性和修改稳定性验收。两个 Agent 都无权直接发布经验,最终晋升由确定性策略执行。
## 本地开发
### 环境要求
- Node.js 22+
- Python 3.12
- OpenCascade/Build123d 所需的本地运行依赖
### 启动前端
```bash
cd cad-agent-studio
npm install
npm run dev -- -H 127.0.0.1 -p 53821
```
打开 `http://127.0.0.1:53821`
前端默认读取仓库根目录的 `llm.config.yaml`。也可以通过 `CAD_AGENT_STUDIO_CONFIG` 指向其他配置文件。
### DesignIR 命令
```bash
text-to-cad/.venv/bin/python \
designir-pipeline/scripts/designir_pipeline.py validate \
designir-pipeline/examples/raised_hub_flange.designir.json
text-to-cad/.venv/bin/python \
designir-pipeline/scripts/designir_pipeline.py isolated-rebuild \
designir-pipeline/examples/raised_hub_flange.designir.json \
--output /tmp/raised_hub_flange.step \
--backend build123d
```
`simplecadapi` 后端还会在 STEP 旁生成可重放的 `*.simplecad.model.json`
## 验证
前端:
```bash
cd cad-agent-studio
npm test
npm run build
```
DesignIR、经验库与 CAD Router
```bash
text-to-cad/.venv/bin/python -m unittest \
designir-pipeline/tests/test_designir_pipeline.py \
designir-pipeline/tests/test_experience_library.py \
text-to-cad/tests/python/skills/cad-router/test_route.py
```
经验库审计:
```bash
text-to-cad/.venv/bin/python \
designir-pipeline/skills/cad-experience-builder/scripts/cad_experience.py \
audit designir-pipeline/output/library.json
```
## 当前边界
DesignIR 当前优先覆盖规则机械零件,例如法兰、板件、支架、轴套、带孔块和基础壳体。自由曲面、多轨扫掠、复杂铸造过渡和高阶连续曲面仍需要扩展特征词汇。
工作区已经具备批量证据提取、角色隔离、独立重建、验收和经验晋升能力;批处理目前由命令或 Agent 任务触发,尚未提供常驻目录监听服务。