dsh-nx:讓智能體判斷 Siemens NX Journal 是否真正成功

前言

在 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
羽毛球分组比赛记分
小程序二维码

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

小夜