dsh-autoconfig:DSH 里的网络设备自动配置终端

前言

在 DSH(DeepSeek Harness)里让 AI 改路由器、交换机配置时,常见做法是单独开 SecureCRT、MobaXterm 或脚本里的 SSH 客户端,对话区和真实终端往往不在同一界面,AI 发了什么命令、设备回了什么,事后也不一定能对齐。社区插件 dsh-autoconfig(维护者 liuxin4566-web)把「主对话驱动 + 右侧 xterm 终端」收进 DSH 右侧边栏:SSH、Telnet、串口 Console、SFTP 统一入口,每次连接与 AI 操作可审计,并按设备名、IP、时间落盘会话日志。架构思路参考 dsh-ssh-ops 的重新实现,面向路由器、交换机、防火墙等日常配置与排障。

这是什么

dsh-autoconfig 是分类为「客户端」的 DSH 插件,npm 包名 dsh-autoconfig,当前 README 附带版本 0.1.3,许可证 MIT。它在官方右侧边栏注册「自动配置终端」标签页,用 xterm 展示交互;同时为 AI 暴露 device_connect、device_list、device_send、device_read、device_close、device_sftp、device_logs 等工具,使模型可在对话中发起连接与命令,而操作者能在同一终端里全程看见。

插件以当前 DSH 进程权限运行;安装前建议阅读 GitHub 仓库 源码与 LICENSE,并理解文末安全说明(SSH 主机密钥校验默认关闭等)。

核心功能

右侧终端与四种接入

  • SSH:基于 ssh2 的交互式 shell(PTY),支持密码、私钥、keyboard-interactive,并对旧设备提供 SHA-1 group14 KEX 回退。
  • Telnet:原始 TCP 与 RFC 854 选项协商(ECHO/SGA/TTYPE/NAWS),可自动应答 login: / Password:。
  • Console:串口(Windows 上 COMx,Linux 上 /dev/ttyUSBx),默认 9600 8N1,可自动登录;依赖 serialport 原生绑定。
  • SFTP:SSH 认证后仅打开 SFTP 子系统;SSH 会话也可在「文件」页切换做 SFTP。

AI 的每一次连接、输入、读取和 SFTP 操作都会显示在同一终端里;device_send 会在终端留下 [agent ...] 标记,并在日志中记为 INPUT (agent)。

会话栏、凭据与高亮

左侧会话栏保存连接过的设备,行为类似 MobaXterm / SecureCRT:双击带锁标记(已保存密码)的会话可直接重连;无密码会话会预填地址。密码写入 DSH 凭据库,~/.dsh/autoconfig-profiles.json 只保存地址、用户名和端口,不存明文密码。

关键字高亮内置 colorful-network.ini 的 22 条规则(例如 no/down/error 红、up/connected 绿等),大小写不敏感、最长匹配、整词边界;工具栏「高亮」可关闭。终端默认纯黑背景,背景与高亮开关保存在浏览器 localStorage(dsh-autoconfig.terminal-background / dsh-autoconfig.keyword-highlight)。

自动会话日志

连接建立即开始记录,默认目录 ~/.dsh/autoconfig-logs。文件名形如 SW-Core_10.1.1.1_20261027-231530.log(<hostname>_<ip>_<YYYYMMDD-HHmmss>.log);从设备提示符识别到真实 hostname 后会自动重命名;未填设备名时先用 device 占位。同目录有同名 .json 元数据。单会话上限 32 MB,目录上限 512 MB,超出按最旧优先清理。

面板「日志」按钮可预览、下载、删除日志。

安装与启用

推荐通过 npm 安装(包已发布至 npmjs.com/package/dsh-autoconfig):

dsh plugin --profile desktop add dsh-autoconfig
# 或 dsh plugin --profile web add dsh-autoconfig

也可从 GitHub 添加:

dsh plugin --profile desktop add github:liuxin4566-web/dsh-autoconfig
# Web profile:
dsh plugin --profile web add github:liuxin4566-web/dsh-autoconfig

等价写法:dsh plugin --profile desktop add git+https://github.com/liuxin4566-web/dsh-autoconfig.git。

dsh plugin add 会把包加入 profile 依赖,并自动把声明了 dsh.bundle 的包加入 dsh.profile.bundles。桌面版多为 live profile,一般会热加载;若未出现标签页,请完全退出并重启 DSH Desktop。

串口依赖:若 pnpm 拦截了 serialport 构建,可在 ~/.dsh/profiles/desktop/pnpm-workspace.yaml 中允许:

allowBuilds:
  '@serialport/bindings-cpp@13.0.0': true

然后重新执行安装命令。不使用串口时,SSH/Telnet/SFTP 不受影响。兼容 DSH Desktop 0.2.x / Web profile(sidebarRightTabs + sidebarRight)。

典型用法

  1. 打开右侧边栏,选择「自动配置终端」标签页(或点「+ 连接」)。
  2. 选择 SSH / Telnet / 串口 / SFTP,填写地址和凭据,在终端里直接操作。
  3. 或在主对话中描述连接信息,例如:
连接 10.1.1.1 的 SSH,用户名 admin,密码 ...,设备名 core-sw-1

AI 会调用 device_connect,随后用 device_send / device_read 执行和读取命令;右侧终端同步显示,日志自动落盘。

适用场景与注意

适合:需要在 DSH 同一界面里做网络设备 SSH/Telnet/串口/SFTP 操作、并希望 AI 代发命令且可审计、可留档的网络工程师或智能体开发者。

务必注意:

  • SSH 主机密钥校验默认关闭(hostVerifier: () => true),存在中间人风险;仅在可信管理网络使用,或按 README 修改 src/transport-ssh.js 接入 known_hosts 或指纹白名单。
  • 插件不做命令白名单;风险需通过 DSH 权限与设备侧 AAA 控制。
  • 高亮只装饰完整且不含 ANSI 转义的一行;高亮规则暂不提供运行时编辑。
  • 社区目录 skillhub.cn 与 dsh-plugin.org 为社区生态站点,与 DeepSeek / 幻方无官方从属关系;问题可提 GitHub Issues。

结尾

dsh-autoconfig 把网络设备终端、AI 工具链和按设备命名的会话日志放进 DSH 右侧边栏,减少「对话在一个窗口、SSH 在另一个窗口」的割裂。进一步了解可访问插件目录页 skillhub.cn/plugins/liuxin4566-web/dsh-autoconfig 与源码 github.com/liuxin4566-web/dsh-autoconfig。

羽毛球分组比赛记分
小程序二维码

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

小夜