前言¶
在 DSH(DeepSeek Harness)里让模型帮学生或工程师做 eNSP 实验,瓶颈往往不在「会不会配 VRP」,而在「怎么稳定地操控 Windows 上的 eNSP 客户端」:逐次模拟点击要抢前台、等窗口、还容易点到用户正在用的别的窗口;读拓扑靠截图肉眼找,下发一条命令若走界面往往要数秒。
dsh-ensp 是社区维护者 YunoSeng 发布的 DSH 工作流类插件(SkillHub 目录:yunoseng/dsh-ensp)。它把界面动作批量化并放到提权 Python 侧车执行,同时尽量改走 telnet、直接读写 .topo、窗口 DC 截图等通道,使 AI 能自行打开拓扑、启停设备、下发配置、验证连通性、截图,并生成带截图的 Word 实验报告。仓库当前在 GitHub 上星标为 0;插件版本以发布包为准(package.json 中为 0.2.1,README 安装示例仍引用 tag v0.1.0,装某一版时请与 Release 对齐)。
这是什么¶
dsh-ensp 是一个标准 DSH bundle:通过 package.json 里的 dsh.bundle.patch 指向 cordis.patch.yml,由 DSH 启动时加载 index.js。定位是「让 AI 更好地使用华为 eNSP 做网络实验」——批量 GUI 驱动、telnet 下发、.topo 读写、实验报告生成四块能力打包成六个工具与一个技能 ensp-automation。
同仓库还提供 MCP 服务器(bin/dsh-ensp-mcp.mjs),可在 Claude Desktop、Cursor 等支持 MCP 的客户端里复用同一套工具实现,传输为 stdio JSON-RPC,与 DSH 插件共用 handler,不复制业务逻辑。
环境约束(README 实测说明):仅 Windows(依赖 UIPI、ShellExecuteW、BitBlt);eNSP 实测 1.3.00.100(client 1.2.0.500);宿主为 DSH Desktop;Python 3.9+ 且需 pywin32、Pillow(提权桥);生成 docx 依赖 DSH 自带 Python(含 python-docx)。建议 以管理员身份运行 DSH,否则 UAC 会在提权 job 时反复弹框。
核心功能¶
下面按工具说明已核实能力;模型侧还有技能 ensp-automation(skills/ensp-automation/SKILL.md),汇总坐标、端口、验证流程与常见错误,减少每次从零摸索。
六个 DSH 工具¶
| 工具 | 用途 | 典型耗时(README 本机实测) |
|---|---|---|
ensp_status |
探桥是否可用/已提权、eNSP 实例与窗口、版本、已开设备窗口、.topo 设备与标注、控制台端口 |
0.4–1 s |
ensp_gui |
一批界面动作:start_all / stop_all / open_console / close_console 及点击、拖拽、滚轮、打字、按键、截图、读控件 |
约 0.3 s 起,批内每步 15–90 ms |
ensp_shot |
主窗口 / 设备 CLI / 整屏截图(窗口 DC) | 主窗口约 74 ms |
ensp_cli |
telnet 下发 VRP,处理分屏、提示符、AAA、save 确认;可选键盘回显到设备窗口并截图 |
约 60 ms/条 |
ensp_topo |
列设备、改设备名、改 PC/Server IP、重排控制台端口(不原地改源文件) | 1–5 ms |
ensp_doc |
按截图清单生成两份 docx(说明版 + 纯截图版) | 1–1.5 s |
README 给出的通道优先级(从轻到重):ensp_topo(读文件)→ ensp_cli(telnet)→ ensp_shot(窗口 DC)→ ensp_gui(消息投递 / 真实点击)。不需要界面时不应动界面。
设计要点(与自动化安全相关)¶
- 点击守卫:真实点击需带
expect(如"ensp"、窗口标题、句柄),避免 eNSP 被全屏窗口盖住时误点其它程序。 - telnet 与后台截图:
ensp_cli、主窗口ensp_shot、.topo操作与窗口是否在前台无关;设备 CLI 截图、工具栏点击才需要短暂前置,README 建议做完用close_console收起。 - 自动 save:
ensp_cli在非只读命令后会自动return→save→ 确认[Y/N],结果在返回值的saved.ok。 - 提权桥:界面操作经
lib/bridge.py侧车;唯一主动提权点是runas启动 Python。验证:ensp_status返回bridge.available: true且bridge.elevated: true。
MCP 侧¶
node bin/dsh-ensp-mcp.mjs --workspace E:/labs
npx dsh-ensp-mcp --workspace E:/labs
--workspace 决定相对路径基准与沙箱边界。离线可跑 npm test(README:24 项断言,无需 eNSP、Python 或管理员)。
安装与启用¶
插件是 DSH profile 依赖 + bundles 声明,不是 dsh plugin add 一类命令。README 给出三种方式:
| 方式 | 命令 / 写法 |
|---|---|
| 本地 link(开发) | "dsh-ensp": "link:E:/dsh-plugins/dsh-ensp" |
| 从 GitHub 装固定 tag | pnpm add github:YunoSeng/dsh-ensp#v0.1.0 |
| Release zip | 从 Releases 解压后用 link: 挂上 |
下面以 link 为例(路径按本机修改):
- 在 DSH profile 的
package.json(例如C:\Users\<你>\.dsh\profiles\web\package.json)增加依赖并在dsh.profile.bundles里启用:
{
"dependencies": {
"dsh-ensp": "link:E:/dsh-plugins/dsh-ensp"
},
"dsh": {
"profile": {
"bundles": ["dsh-ensp"]
}
}
}
- 让 Node 能解析到包(junction 示例):
New-Item -ItemType Junction `
-Path "C:\Users\<你>\.dsh\profiles\web\node_modules\dsh-ensp" `
-Target "E:\dsh-plugins\dsh-ensp"
-
重启 DSH。技能目录应出现
ensp-automation,工具列表出现ensp_*六个工具。 -
让 AI 调用一次
ensp_status,确认bridge.available: true、bridge.elevated: true。
配置可在 cordis.patch.yml 的 config 中覆盖,例如 enspExecutable(默认 C:/Program Files/Huawei/eNSP/eNSP_Client.exe)、pythonExecutable / pythonCandidates 等;完整键表见仓库 README「配置项」一节。
典型用法¶
- 开工前:调用
ensp_status,确认桥、拓扑路径、设备与控制端口状态。 - 改 IP / 设备名 / 端口规划:优先
ensp_topo,避免为读拓扑去点界面。 - 下发配置与验证:用
ensp_clitelnet;需要交作业截图时再配合ensp_shot或ensp_gui的open_console。 - 整实验启停:
ensp_gui的start_all/stop_all(README 本机:启动 11 台约 8.7 s,含等端口)。 - 收尾:收集截图路径后调用
ensp_doc生成两份 docx。
若在 Cursor 等环境只用 MCP,在客户端 stdio 配置中指向 bin/dsh-ensp-mcp.mjs 并设置 --workspace,例如:
{
"mcpServers": {
"ensp": {
"command": "node",
"args": ["E:/dsh-plugins/dsh-ensp/bin/dsh-ensp-mcp.mjs", "--workspace", "E:/labs"]
}
}
}
只想搭拓扑、自动布局时,README 提到可并存社区项目 Heaxu/ensp-mcp;本插件侧重启设备、开 CLI、截图与报告。
适用场景与注意¶
适合:已在 Windows 上跑 DSH + eNSP,希望把重复实验流程交给 AI agent(课程实验、连通性验证、带截图报告)。
务必注意:
- 非 Windows 无法使用;坐标与窗口布局在不同分辨率/主题下可能需重新确认(技能与 README 中 ⚠ 标注项)。
- 插件通过提权桥操作本机 GUI 与 telnet;以当前 DSH 进程权限运行,安装前请阅读 MIT 许可证 与源码,仅在可信环境启用。
- UAC 默认且 DSH 非管理员时,一场完整实验可能弹大量授权框;README 建议管理员运行 DSH,或桥配置
mode: "serve"常驻侧车(整个会话约弹一次)。 - SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系;版本、星标以各站点与 GitHub 页面为准。
结尾¶
dsh-ensp 把 eNSP 实验里「慢且易错的鼠标路径」压缩成批量 GUI 与 telnet / 文件 / 截图通道的组合,并附带实验报告生成与可选 MCP 暴露,适合作为 DSH 工作流插件接入网络实验自动化。
- 目录页:https://www.skillhub.cn/plugins/YunoSeng/dsh-ensp
- 仓库:https://github.com/YunoSeng/dsh-ensp