中文EN

dsh-cad

tools装不上npmMIT

通过 cad_view/cad_info 与 OCCT 参数化建模工具查看和构建 CAD 模型(STL、OBJ、STEP、IGES、DXF、SVG),并在 Web UI 中提供交互式查看卡片与常驻 CAD 面板。

下载量 / Downloads
6,254
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

安装

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

![homepage](https://lau-mars.github.io/dsh-cad/)

![npm](https://www.npmjs.com/package/dsh-cad)

![downloads](https://www.npmjs.com/package/dsh-cad)

![dsh](https://www.npmjs.com/package/@deepseek-ai/dsh)

![Node](https://nodejs.org/)

![occt](https://github.com/LAU-MARS/opencascade-ts)

![occt.ts](https://www.npmjs.com/package/occt.ts)

![ansatz](https://www.npmjs.com/package/ansatz-wasm)

![License: MIT](./LICENSE)

[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

链接

GitHub · Homepage · npm

同类插件