dsh-ensp:让 AI 在华为 eNSP 上自动做网络实验

前言

在 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 为例(路径按本机修改):

  1. 在 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"]
    }
  }
}
  1. 让 Node 能解析到包(junction 示例):
New-Item -ItemType Junction `
  -Path "C:\Users\<你>\.dsh\profiles\web\node_modules\dsh-ensp" `
  -Target "E:\dsh-plugins\dsh-ensp"
  1. 重启 DSH。技能目录应出现 ensp-automation,工具列表出现 ensp_* 六个工具。

  2. 让 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「配置项」一节。

典型用法

  1. 开工前:调用 ensp_status,确认桥、拓扑路径、设备与控制端口状态。
  2. 改 IP / 设备名 / 端口规划:优先 ensp_topo,避免为读拓扑去点界面。
  3. 下发配置与验证:用 ensp_cli telnet;需要交作业截图时再配合 ensp_shot 或 ensp_gui 的 open_console。
  4. 整实验启停:ensp_gui 的 start_all / stop_all(README 本机:启动 11 台约 8.7 s,含等端口)。
  5. 收尾:收集截图路径后调用 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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye