dsh-cad
通过 cad_view/cad_info 与 OCCT 参数化建模工具查看和构建 CAD 模型(STL、OBJ、STEP、IGES、DXF、SVG),并在 Web UI 中提供交互式查看卡片与常驻 CAD 面板。
安装
dsh plugin --profile web add dsh-cad
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✗ |
| 2 列装 | — |
| 3 挂载 | — |
| 4 启动 | — |
dsh: initialized profile web at /home/node/.dsh/profiles/web四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
dsh-cad — CAD Plugin for DeepSeek Harness








[English](./README.md) | 简体中文
DeepSeek Harness (dsh) 的 CAD 插件:
在 Web UI 中提供内嵌 3D/2D CAD 查看器与原生参数化建模工具族(OCCT 内核),
让 agent 能够"边建边看"地完成 CAD 工作。
预览
一次完整的建模会话:在对话中直接搭参数化装配体——先建 120×80×8、四角 R5
圆角的底板,再在四角放置 4 个螺栓实例——右侧常驻 CAD 面板全程实时跟踪
(带逐实例配色的零件树、ViewCube、"装配体"页签、5 实例 · 1,740 三角形)。
完成后导出结构化 STEP 文档,agent 回读文件自检——2 个实体、3 个产品、
2 个装配引用、1,125.00 mm³:
下载量
npm 官方源的累计下载量,由 CI 每日刷新:
功能总览
能力 · 说明
⚙️ 内核链:cadorange → occt.ts · 建模经 cadorange(agent 原生 CAD 运行时,底层 occt.ts/OCCT WASM;公共 API + 官方 cadorange/occt 逃生口承担网格/HLR/线构造),occt.ts 直连保留为回退层级——DSH_CAD_KERNEL 可显式指定(opencascade.js 档已于 v0.15.1 移除,安装体积 −64MB)。旧版的「抽壳后不可编辑」接缝消失——抽壳/拔模后可继续圆角/倒角/布尔
🔍 CAD 查看 · STL / OBJ / STEP / IGES / BREP / DCPRT(3D),DXF / SVG(2D),右侧常驻面板交互视口(轨道旋转 / 缩放 / 线框 / 平移),对话中只留一行结果摘要
🌗 深色模式绘制面 · 所有绘制面跟随宿主主题——视口底板、DXF/工程图描边、Three.js 网格 / XYZ 轴 / 特征边 / 默认网格色 / 草图覆盖层,以及 ViewCube 面板;主题切换实时重绘已挂载的查看器。覆盖钩子:--dsh-cad-bg、--dsh-cad-stroke、--dsh-cad-paper
🧭 CAD 编辑器交互 · Onshape 风格 ViewCube(26 区域点击定向)、悬停/点选面与边实时测量(面积 mm² / 长度 mm)、面+边 / 面 / 线框三种渲染模式、支架 / 法兰 / 轴 BRep 示例件一键切换
🏗️ 参数化建模 · 基本体、轮廓拉伸、放样、扫掠、旋转体、布尔、全边圆角/倒角、抽壳、拔模、阵列(线性/圆周)、变换;轮廓支持曲线段(圆弧/圆为精确 BRep,B 样条为采样近似)—— OCCT 精确 BRep,非网格近似
✏️ 命名草图 · 文档中独立的可命名轮廓(Sketch1…):cad_sketch_new / edit / list / delete;拉伸/旋转/扫掠按名字引用,cad_sketch_edit 原位改写定义并全量重放,所有引用特征级联重建——参数化闭环。草图以 Onshape 式蓝色曲线 + 平面框在视口中实时渲染(回改即刷新),并列于零件页签左侧的特征树(草图 + 特征、眼睛显隐、点选高亮实体)
🗂️ Codex 式文档页签 · 右侧显示区页签栏 + 「+」菜单:零件(Part Studio,默认)/ 装配体(实例插入/移动/移除)/ 工程图(真实隐藏线图纸),页签可关闭、常驻不丢状态
🔩 关节驱动的装配体 · build123d 关节族(刚性/旋转/滑动/圆柱/球面/平面/极坐标):cad_assembly_joint 定义、cad_assembly_connect 配对求解(父侧固定、子侧重定位至关节帧重合)、cad_assembly_drive 驱动运动值并级联重解算(运动仿真)、cad_assembly_explode 爆炸视图;装配树面板新增 JOINTS 区(类型/当前值/配对链接);纯主线程位姿代数,与内核无关、随操作日志重放
📥 STEP 装配导入 · cad_step_import 结构化导入 STEP 装配文档:部件名/嵌套结构/实例位姿保留,相同几何自动去重为一个体被 N 实例引用(螺栓阵列即一个体);文件按内容寻址缓存为工作区资产,操作日志重放自洽(cadorange 内核)
📁 多文档 file 空间 · 工作区命名的建模文档(.dsh-cad/docs/),每个会话绑定自己的活动文档——新会话从空文档开始,不再继承历史遗留零件;面板上的文件夹按钮列出全部文档(预览 / 删除),对话中用 cad_doc_new / cad_doc_open 切换建模目标
📐 工程图 · GB 第一角布局:主视图 / 俯视图 / 左视图 + 轴测图,occt.ts 内核(npm 依赖)真实隐藏线消除(虚线);图框、标题栏、总尺寸标注、标准比例系列;导出 SVG / DXF
🔗 约束求解与运动 · 集成 Ansatz 几何约束求解器(ansatz-wasm 一条命令即可:npm install ansatz-wasm,零 Rust 工具链 / 零原生二进制 / 零依赖):实体/约束建模(装配实例 ↔ rigid3 位姿自动映射)、求解回写、DOF/残差/冗余/建议全量诊断(面向 LLM 的中文报告)、参数扫描运动学(cad_constraint / cad_solve / cad_motion)
📐 几何测量 · 精确体积(mm³)、包围盒、三角统计、DXF 图层
📤 按需导出 · STEP(参数化)/ STL(网格),仅在用户要求时写文件
🖥️ 常驻 CAD 显示区 · 会话页右侧常驻面板:Codex 式页签(零件 / 装配体 / 工程图),建模时实时跟踪最新模型
⚡ 直通渲染管道 · worker 网格 → 内存二进制 → three.js typed-array,零 base64 / 零中间文件 / 零每步落盘
💾 建模文档持久化 · 操作日志(JSON)+ 防抖磁盘镜像,进程重启后自动重放恢复
🖼️ 图片 → 轮廓 · PNG 草图/截图 → Otsu 二值化 → 轮廓追踪 → 可直接拉伸的多边形(cad_image_profile)
🔌 FreeCAD 执行器 · 在外部 FreeCAD 控制台运行同一 op 族(STEP 输入/输出闭环);需本地安装
☁️ Onshape 执行器 · 经签名 REST API 在 Onshape 云端运行同一 op 族——零本地安装:每个 op 编译为一个标准 Onshape 特征推入目标 Part Studio(无需 Feature Studio 配置)。回传分三级:默认按零件的廉价 STL、readback: "step" 精确 BRep 命名网格(服务端 STEP 翻译 + 本地 OCCT 解析)、readback: "none" 只建模型回文档链接(约 3 次调用,最省配额)。导出支持 .stl / .step / .x_t(Parasolid 原生内核 BRep)。配额感知错误区分密钥问题与免费档冷却;始终返回 Onshape 文档链接
安装
插件已发布到 npm,一行命令即可:
dsh plugin --profile web add dsh-cad
安装器会通过 dsh.bundle 清单自动应用包内自带的 cordis.patch.yml,无需手工改任何配置。
版本要求
- Node.js 与 dsh CLI(
@deepseek-ai/dsh)的最低版本以顶部徽章和
package.json 的 engines 字段为准——正文不再写具体版本号,避免过时
从源码安装(开发模式)
git clone https://github.com/LAU-MARS/dsh-cad.git cd dsh-cad npm install && npm run build && npm test # 依赖含 occt.ts(工程图真实消隐内核,~20MB wasm) npm install -g @deepseek-ai/dsh pnpm dsh web # 首次启动初始化 profile 后 Ctrl-C dsh plugin --profile web add /path/to/dsh-cad dsh web
patch 内容以包根目录的 cordis.patch.yml 随包分发,安装器经同一条 dsh.bundle 清单自动应用。
设置 DEEPSEEK_API_KEY 后对话即可使用,例如:
- “打开 bracket.stl 看看” →
cad_view - “画一个 100×60×5 的板,中间打 ⌀20 孔,四角 R2 圆角,加 ⌀16 高 20 凸台,导出 plate.step”
→ cad_create_prim + cad_boolean + cad_fillet + cad_export,每步 3D 页签实时更新
- “堆一个雪人” → 球体 + 圆锥鼻子 + 圆柱帽子(
at/axis精确定位) - “再放两个 b1,一个转到 90 度” →
cad_assembly_insert+cad_assembly_move,装配体页签实时更新 - “给 b1 出一张 A3 工程图,导出 dxf” →
cad_drawing(三视图 + 轴测 + 虚线隐藏线 + 尺寸标注)→cad_export.dxf
模型工具族
工具 · 说明
cad_view · 打开 CAD 文件,渲染交互式查看器卡片
cad_info · 只读几何元信息(格式/数量/包围盒/单位/图层)
cad_create_prim · 基本体(mm,Z-up),at 定位、axis 定向(精确轴角旋转)
cad_sketch_new · 新建命名草图(Sketch1…):{start, segments} / {circle} / 平面点列——供轮廓特征按名引用
cad_sketch_edit · 回改草图:定义 op 原位改写 + 日志全量重放,所有引用特征级联重建
cad_sketch_list · 列出文档草图(名称 / 形式 / 规模)
cad_sketch_delete · 删除草图(仍被特征引用时拒绝
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:20,最后更新 2026-10-29