dsh-product-model-compare: A Local STEP/STL/OBJ 3D Workbench Inside the Harness Side Panel

前言

在 DeepSeek Harness 里做机械、结构或硬件相关对话时,经常需要对照本机 CAD 模型:看外形、量大致尺寸、或并排对比两个版本。常见做法是切到独立查看器或在线平台,往往伴随上传、资料库绑定或额外客户端。NOMAD-bri 维护的 dsh-product-model-compare 是 DSH 生态里的客户端类插件:在侧栏打开本地 STEP/STP/STL/OBJ 与模型 JSON,支持单视窗或双视窗对比,不建产品库、不上传、不改磁盘上的原文件。

这是什么

插件仓库:NOMAD-bri/dsh-product-model-compare。社区目录页:skillhub.cn 条目(独立站点,与 DeepSeek / 幻方无官方从属关系)。

README 写明:插件不包含产品库、参数持久化到云端或同步;只做本地文件的查看与临时测量。模型仅在本机读取;视窗状态写入浏览器 IndexedDB(dsh-local-model-viewer),STEP 解析用一次性临时目录,请求结束即删。

核心功能

下面按界面区域归纳 README 中的能力(均已出现在官方文档,此处不扩展未列出的功能)。

区域 能力
顶部 打开本地文件、搜索本机 STEP 列表、下拉选模型、刷新列表
左侧工具条 旋转、部件尺寸、两点距离、三点角度、当前姿态尺寸、摆正模型
中央视窗 自适应取景,前 / 顶 / 侧 / 等轴视角,蓝色实体高亮选中部件
右侧属性面板 选中部件名称与 X / Y / Z 尺寸、操作按钮、测量记录
工作区 单模型或双模型对比;两侧各自记忆模型与视角
恢复 重新进入或重启后恢复上次的模型、视角、姿态、孤立部件与测量

补充行为:

  • 摆正模型:点选一个平面,将该面法线对齐到 Z 轴;恢复原始姿态可撤销。
  • 单独查看部件:只显示选中部件,可单独摆正和测量;返回整机复原。
  • 清除测量只清标记;清除模型只清当前视窗与该侧缓存,不会删除磁盘原文件。
  • 双模型模式下左右两侧独立缓存,互不覆盖。

技术栈要点:index.js 负责 Host(索引、读文件、STEP 子进程、静态资源);client.js 注册侧栏;local-viewer.js 为 Shadow DOM + three.js(vendor 内带 three.js r170)。STL、OBJ、模型 JSON 在前端解析;STEP/STP 经 parse-step.py 与 OCP 三角化。

环境要求

  1. DeepSeek Harness,且支持以本地目录安装 bundle 插件。
  2. Node.js 20 及以上(扫描脚本与插件 Host)。
  3. 仅 STEP/STP 需要 Python 3.10+ 与 OCP(OpenCascade 绑定;README 推荐 pip install cadquery-ocp)。STL、OBJ、模型 JSON 不需要 Python。

安装与启用

官方说明是在 Harness 里以本地目录安装 bundle,或在支持插件的界面中选择含下列文件的目录:

<仓库目录>            # 含 package.json / cordis.patch.yml / index.js / client.js

安装后侧栏出现 「本地3D工作台」。README 未给出 dsh plugin add github:... 一类命令,安装方式以目录 bundle 为准。

插件以当前 DSH 进程权限运行;安装前请自行通读源码与 MIT 许可证。

首次配置与典型用法

1. 生成本地 STEP 索引

模型下拉列表读取索引文件。在仓库目录执行:

node scripts/scan-models.mjs

默认扫描所有固定磁盘,输出到 ~/.product-model-compare/step-index.json。

只扫指定目录或改输出路径:

node scripts/scan-models.mjs --root "D:\CAD" --root "E:\Models"
node scripts/scan-models.mjs --root "D:\CAD" --out "D:\my-step-index.json"

package.json 中也可通过 npm script 调用:npm run scan(等价于上述 scan 脚本)。

2. STEP 解析相关环境变量(可选)

仅当 Python 不在 PATH 上的 python,或 OCP 安装路径非默认时需要设置;改完后重启 Harness 让 Host 读到变量。

环境变量 作用
PRODUCT_VIEWER_PYTHON Python 解释器完整路径
PRODUCT_MODEL_OCP_PATH 含 OCP 包的目录;多个路径 Windows 用 ;,macOS/Linux 用 :
PRODUCT_MODEL_INDEX 索引文件路径,覆盖默认 ~/.product-model-compare/step-index.json

3. 打开工作台

侧栏进入「本地3D工作台」→ 从下拉选择模型,或 打开本地模型。首次打开后,后续会自动恢复上次状态。

典型对比流程(双模型模式):左右各自选文件或索引项 → 分别旋转、摆正、孤立部件 → 用两点距离或三点角度做临时测量 → 右侧查看测量记录;需要重来时对单侧 清除模型 或 清除测量。

适用场景与注意

适合:需要在 Harness 对话旁快速查看本机 STEP/STL/OBJ、做网格近似测量、或左右对照两个本地文件,且希望数据不出本机的开发者或工程师。

测量与精度(README「已知限制」):

  • 尺寸、距离、角度基于三角网格,为近似值;不是精确 B-Rep,不含壁厚测量。
  • 姿态尺寸为世界轴向外形包围盒,随摆正/孤立变化,不等同于 CAD 精确外形。
  • STEP 三角化容差:线性 0.8、角度 0.35;极大装配体可能慢或占内存。
  • 摆正需点选平面;圆管曲面上单个三角面作基准不可靠。
  • 外部修改原文件后,缓存网格不会自动更新,需重新打开该文件。
  • 目前没有部件树、剖切、爆炸图、模型对比差值。

隐私与本地数据:索引仅记录路径,存于 ~/.product-model-compare/step-index.json;不上传模型。点「清除模型」会删除该侧 IndexedDB 缓存。

结尾

dsh-product-model-compare 把本地三维查看与临时测量收进 DSH 侧栏,强调无库、无上传、不碰原文件,适合在智能体工作流里就地核对几何。进一步了解实现与贡献约定见仓库 README 与 UI-ARCHITECTURE.md。

  • 目录页:https://www.skillhub.cn/plugins/NOMAD-bri/dsh-product-model-compare
  • GitHub:https://github.com/NOMAD-bri/dsh-product-model-compare
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye