DeepSeek Harness 插件

llyy-t/multisim-toolkit

Star 数 ★ 0 分类 工具与能力 收录于 2026-11-02

在 Windows 上把本机的 NI Multisim 14.3 变成可编程对象:九个 msim_* 工具可开关 .ms14 设计、读写元件值与电路参数、跑直流工作点/交流扫频/单频交流/瞬态分析、导出原理图与 BOM/网表;Win32 通道驱动可见窗口操作分析对话框并截取 Multisim 自己的电路视图与波形图;SPICE 命令文件引擎处理没有探针的设计;离线解析器完全不启动 Multisim 就能读出 .ms14 内容。需要 Windows、NI Multisim 14.3,以及装好 pywin32 的 32 位 Python 3.11-3.13。

安装

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:llyy-t/multisim-toolkit

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

一个把 NI Multisim 14.3 变成可编程对象的 DSH 插件 + skill。

它同时是两样东西,装在同一个仓库里:

  1. 一个 DSH 插件(Host 侧 Cordis bundle)—— 仓库根目录的 package.json / cordis.patch.yml / index.js / lib/ / worker/,注册 9 个 msim_* 工具;
  2. 一份 skill —— SKILL.md + references/,教模型怎么正确使用这些工具,以及所有踩过的坑。
DSH Host (node)
  └── index.js                     注册 msim_* 工具 + 一段系统提示词
        └── spawn 32-bit python worker/msim_worker.py --port N --token T
              └── 常驻进程(独占 COM 公寓),TCP + 行 JSON
                    ├── com.*     msim_com.py     → Multisim Automation (COM)
                    ├── gui.*     msim_gui.py     → 可见窗口(Win32 消息)
                    ├── spice.*   msim_deck.py    → DoCommandLine + 网表
                    │              msim_spice.py / msim_raster.py
                    └── design.*  msim_ms14.py    → .ms14 容器(离线只读)
                                   └── bin/blast_harness.exe (PKWare DCL)

能力一览

工具 做什么
msim_status 自检:worker 位数、COM 版本、GUI 进程
msim_circuit 新建 / 打开 / 保存 .ms14,读当前电路信息
msim_inspect 读元件、输入、输出、变体、段落、电路参数、RLC 值
msim_edit 改 RLC 值、电路参数、活动变体,替换库器件
msim_analyze 瞬态 / DC / AC 扫频 / 单频 AC / 命令文件,以及启停仿真
msim_export 原理图图片、网表、BOM、设计片段
msim_gui 驱动可见窗口:启动、截图(四档裁剪)、拖入网表、清数据库告警、另存为、发按键、跑分析、抓波形窗
msim_spice 把网表直接喂给 Multisim 的 SPICE 引擎,返回表格 + CSV + 图
msim_design 不启动 Multisim,离线读取 .ms14 里的元件、值、仪器设置

多数操作在首次 Connect()(约 6 秒,Multisim 启动开销)之后是毫秒级——实测 10 次连续读操作 median 0.000s。

安装

前提:

  • Windows,已安装 Multisim 14.3(C:\Program Files (x86)\National Instruments\Circuit Design Suite 14.3\);
  • 一个 32 位 Python 3.11–3.13 并装了 pywin32(Multisim 的 Automation API 是 32 位 COM 服务器,64 位解释器 Connect() 会 E_ACCESSDENIED);
  • DSH(本插件是 Host-only bundle,不需要浏览器端代码)。

方式一:直接从 GitHub 装

dsh plugin --profile <你的 profile> add github:llyy-t/multisim-toolkit

方式二:从本地 clone 装

powershell -ExecutionPolicy Bypass -File scripts\install.ps1 -Action check    # 体检
# 然后把 install.ps1 -Action install 打印出来的那行 plugin_manager(...) 贴进 DSH 会话

验证:msim_status({ connect: true }) —— 期望 worker.pythonBits: 32、com.version: Multisim 14.3。

也可以不经过 DSH,直接跑离线自检:

python scripts\selfcheck.py --design "C:\path\to\some.ms14"

插件配置(可选):

- id: multisim-toolkit
  name: 'dsh-multisim-toolkit'
  config:
    pythonPath: 'C:\Users\me\.dsh\multisim-mcp\py32\python.exe'
    startTimeoutMs: 30000

文档

文件 内容
SKILL.md 面向模型:先选通道,再动手;最贵的几条判断;参数速查
references/com-automation.md COM 面完整参考:每个方法、枚举值、8 类失败的症状与规避、类型库注册信息
references/spice-channel.md SPICE 通道:语法、用 B 源写数字门、子电路、4 个致命坑、9 种分析命令
references/gui-and-files.md 可见窗口(含 Save As 三个真实根因、分析对话框操作链)与 .ms14 容器格式、元件值三种形态
PLUGIN.md 插件本体说明与全部实测边界(安装/自测/协议入口)
worker/PROTOCOL.md 插件内部模块契约(要改代码时读)
docs/README.md 四档截图对比 + 实机电路图/波形图样例的生成命令

这个仓库为什么值得看

除了"又一层包装",这里有几条别人不太容易自己撞出来的实测结论:

  • Multisim 的 COM 服务器与客户端同生命周期——Python 进程一退出,multisim.exe 就消失。所以必须常驻 worker,不能每条命令起一个短命进程。
  • app.OpenFile() 对 SPICE 网表会让 Multisim 静默崩溃(无任何可捕获错误)。网表只能通过 WM_DROPFILES 注入到可见窗口。
  • GUI 另存为不能靠 WM_SETTEXT——它只改编辑框的显示文本,不改对话框内部状态,Multisim 仍按旧名字写盘,会静默覆盖同名文件。必须用 SendInput + KEYEVENTF_UNICODE 逐字符输入并在保存前回读校验。
  • 数据库告警框的文字藏在跨进程 Edit 控件里,GetWindowText 读到空串,必须用 WM_GETTEXT;这些模态框会吞掉之后所有按键。
  • .ms14 是 36 字节魔数 + u64 长度 + 若干段 PKWare DCL "implode" 数据,zlib/bz2/lzma/cabinet.dll 全都解不开;用 Mark Adler 的 blast.c 编译出的薄壳解压,毫秒级。
  • .ms14 里元件值的"真正来源"是 CiaParamList.parameters,另一条 <doubles> 数组是可能已过期的遗留初值(实测某电阻 doubles 还是 1000,parameters 已经是 2.2k);&UNI..._uc<hex> 的 _uc 后缀是进程内指针号,不可逆。
  • 截图 crop=content 的墨迹判据必须是"暗 或 有彩度"——只按"暗"判断会漏掉全部蓝色导线(Multisim 的连线是纯蓝 (0,0,255))。
  • Multisim 的仿真菜单是 BCG 自绘的,GetMenu() 返回 0、投递 WM_COMMAND 会把进程打崩;但 alt+s 之后按 3 次 VK_DOWN 再回车能稳定打开「Analyses and Simulation」,进去之后里面的控件全是标准 Win32 控件,可以按消息操作。
  • 仿真结果画在一个独立的 图示仪视图 窗口里,跟电路图不是同一个窗口——要「实机电路截图 + 实机波形截图」就得分别截两次。

能力边界

诚实地说,这个插件不能凭空在原理图上放元件、画连线——Multisim 的 Automation API 没有对应方法,Win32 合成鼠标画线也不可靠。新电路的可行路径只有两条:

  1. 写网表,拖进可见窗口,Multisim 会自动还原成带真实库器件和连线的可编辑原理图;
  2. 直接生成/修改 .ms14(容器格式已破解,但写回收尚未实现)。

许可

MIT,见 LICENSE。第三方组件的许可见 THIRD-PARTY-NOTICES.md:worker/bin/blast.c / blast.h 来自 zlib(zlib license,Mark Adler)。

本项目与 National Instruments 无关,不包含也不分发任何 NI 软件;它只是驱动你本机已装好的 Multisim。

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。