前言¶
在 DeepSeek Harness 里用智能体驱动 Siemens NX,常见路径是写 NXOpen Python,再通过 run_journal.exe 在批处理 NX 里执行。问题在于:run_journal.exe 即使 Journal 内部吞掉异常,进程仍可能返回 0,智能体无法从退出码 alone 判断几何或会话是否真的完成。上游 NX 桥接还依赖 Python 3.10+,而仍在服役的 NX 12 内嵌 CPython 3.6.1,版本之间 Python 不共用,一套代码很难覆盖 2406、2506 与 12。
dsh-nx(GitHub:27painter/dsh-nx)面向上述缺口:在同一套 sidecar 与桥接代码上支持 NX 2406、2506 与 12,用执行器根据日志给出成败裁决,并用探针区分本机各 NX 安装与解释器能力。下面介绍它是什么、能做什么,以及如何安装与做最小验证。
这是什么¶
dsh-nx 由维护者 27painter 发布,在 SkillHub 目录中归类为工作流插件。仓库自述定位为:Other NX MCP servers tell the agent what to do;dsh-nx tells it whether it actually worked.
NXOpen 运行在 NX 进程内部,自动化意味着启动批处理 NX 并在其中执行 Journal。本仓库即该运行时:三版 NX 共用一套代码,附带可裁决 Journal 是否达成预期的执行器,以及按发行版隔离探测的 probe.py。作为 DSH 插件时,还提供 16 个类型化 MCP 工具(建模与导出;README 明确不含 Drafting 类能力)。
当前 package 版本为 1.2.1,许可证 MIT,仅支持 Windows(win32),Node >= 20。插件未发布到 npm,npm install -g dsh-nx 无法解析。
核心功能¶
执行器:run-journal¶
与仅看进程退出码不同,run-journal 从日志给出裁决,超时会对进程树做终止,并以 JSON 说明原因。这是 README 强调的两项动机之一(另一项是跨 2406 / 2506 / 12 的单一代码库)。
探针:probe.py¶
扫描本机各 NX 安装及其解释器,并打上 verified / expected 等标签,避免靠注册表猜测「当前是哪一版 NX」。
16 个 MCP 工具¶
桥接在 NX 内通过 JSON-RPC(loopback)暴露工具;README 状态表说明工具范围是建模与导出,没有工程图投影视图、标注、标题栏、国标图框或 PDF 等 Drafting 能力。若需要出图,仍需以 Journal 方式完成。
三种驱动方式(README 归纳)¶
| 路径 | 机制 | 适用 |
|---|---|---|
| skill(默认) | 智能体写 NXOpen Python,由 run-journal 执行 |
需组合的任务:建模、制图、FEA、运动等 |
| run-journal | 单次 Journal 命令行 | 脚本化、自检、CI 式检查 |
| MCP 工具 | 常驻桥接 + 16 工具 | 结构化建模/导出调用 |
与已有做法的对比(资料原文表格摘要)¶
| 能力 | 之前 | dsh-nx |
|---|---|---|
| 知晓一次运行是否真正成功 | Journal 吞异常仍可能返回 0 | run-journal:日志裁决、超时杀进程树、JSON 原因 |
| 2406、2506、12 一套运行时 | 上游桥需 Python 3.10+,NX 12 不可达 | 向 3.6.1 移植并向前 shim;三版 16 工具 |
| 知晓本机哪一版 NX | 读注册表或猜测 | probe.py |
| 安装 | 手工 venv、junction、NX_HOME 等 |
install.ps1 + doctor 指出缺失项 |
当前验证状态(README Status)¶
- NX 2406(2406.1700,CPython 3.10):参考发行版;16 工具、skill、
run-journal与四个示例端到端验证。 - NX 2506(CPython 3.12):从未实际跑过;在 3.12 下可解析导入,探针标为
expected而非verified。 - NX 12(12.0.0.27,CPython 3.6.1):16 工具、skill、
run-journal在真实零件上验证;四个 worked examples 未在此重跑。 - 无法驱动已打开的 NX 窗口(NXOpen 设计如此);与通过 COM 驱动已开 CAD 的
dsh-sw-cad相反。
安装与启用¶
安装不会修改 NX 本体。install.ps1 为 sidecar 建 venv、拉取 pinned skill 并建立 junction。官方 README 给出的步骤如下。
git clone https://github.com/27painter/dsh-nx
cd dsh-nx
npm install -g . # puts `dsh-nx` on PATH
dsh-nx install # [1/5] python [2/5] venv-nx [3/5] skill [4/5] NX_HOME [5/5] junctions
dsh-nx doctor # read-only; exit 1 when something is missing
dsh-nx install 是对 install.ps1 的薄封装;需要看完整输出可直接运行脚本:
.\install.ps1
.\install.ps1 -BaseDir "E:\cad" -Force # different location / rebuild
启用前须知¶
- 不必、也无法靠已打开的 NX 窗口:每条路径都会通过
run_journal.exe自启批处理 NX;已开窗口不会被复用。 NX_HOME应指向目标安装;dsh-nx doctor会打印选用哪一套及原因。- 空闲许可证席位:批处理 NX 运行期间占一个席位;若出现
failed to initialize UFUN 948792,可先关闭已开 NX 再试。 - 可写工作目录(
-w):默认是 Journal 所在目录;从 profile junction 加载时可能只读。
接入 DSH profile(MCP 工具)¶
Skill 与 run-journal 在安装与 quickcheck 通过后即可用;MCP 工具还需在 profile 中挂载插件。开发机示例为 junction + dependencies + bundle(pnpm 等价命令为 dsh plugin --profile desktop add link:<path>):
New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-nx" -Target "D:\path\to\dsh-nx"
经 link: 解析的插件从真实路径解析 bare import,需让 @deepseek-ai/dsh-mcp-client 从该路径可达(README 给出从全局 DSH 安装 junction 到插件 node_modules 的示例)。随后在 profile 的 dependencies 中加入 "dsh-nx": "link:D:/path/to/dsh-nx",并在 dsh.profile.bundles 中加入 "dsh-nx"。package.json 中 peerDependencies 要求 @deepseek-ai/dsh-mcp-client 版本 >=0.2.0-rc.1 <0.3.0-0,bundle patch 为 ./cordis.patch.yml。
典型用法¶
README 称下列检查为「the check that matters」:建 50 mm 立方体、用 MeasureManager 读体积,若不是 125000 mm³ 则判失败。成功时大致如下。
dsh-nx run-journal examples\quickcheck.py --expect QUICKCHECK_OK -w D:\nx-work
CUBE_EDGE=50.0
VOLUME=125000.000
QUICKCHECK_OK
[dsh-nx] OK 10.8s
冷启动约 20 s(需启动 NX),热跑约 11 s。若只需确认 NX 能否启动,可用 examples/smoke.py(无几何体积断言)。
CLI 还提供 where、serve、bridge-start / bridge-stop 等子命令(见 bin/dsh-nx.mjs);日常验证可配合 npm run check(即 dsh-nx doctor)。
适用场景与注意¶
适合谁:在 Windows 上已安装 NX 2406 / 2506 / 12 之一、希望在 DSH 或 Codex 中让智能体写 Journal 或调用 MCP 做建模与导出,且需要明确成败裁决与多版本 NX 统一 sidecar 的开发者。
务必注意:
- 插件与 sidecar 以当前 DSH 进程权限运行;安装前请阅读仓库源码与 MIT 许可证,并确认
@deepseek-ai/dsh-mcp-client等依赖来源。 - 不要假设 MCP 能出工程图 PDF;Drafting 需 Journal。
- NX 2506 在 README 中尚未端到端跑通,生产使用前应用
doctor、探针标签与 quickcheck 在本机自行验证。 - DeepSeek Harness 生态是「一切皆插件」;SkillHub 目录页为社区索引,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-nx 把「Journal 跑完」和「Journal 做对」分开:执行器读日志给裁决,探针标发行版,一套桥接覆盖 NX 12 与较新的 2406 / 2506。若你在 Harness 里做 NX 自动化,可从 doctor 与 quickcheck 开始,再按需挂 profile 启用 16 工具。
- 目录页:https://www.skillhub.cn/plugins/27painter/dsh-nx
- 仓库:https://github.com/27painter/dsh-nx