dsh-nx: Determining the Successful Execution of Siemens NX Journals via Agent Judgment

前言

在 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

启用前须知

  1. 不必、也无法靠已打开的 NX 窗口:每条路径都会通过 run_journal.exe 自启批处理 NX;已开窗口不会被复用。
  2. NX_HOME 应指向目标安装;dsh-nx doctor 会打印选用哪一套及原因。
  3. 空闲许可证席位:批处理 NX 运行期间占一个席位;若出现 failed to initialize UFUN 948792,可先关闭已开 NX 再试。
  4. 可写工作目录(-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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye