在 DSH 智能体开发中,网络设备的控制台交互往往依赖外部工具。对于使用串口服务器或终端服务器映射网络设备 Console 的情况,通用的方案通常缺乏细粒度的会话管理与指令拦截能力。dsh-console-hub 插件旨在解决这一痛点,提供经 Telnet 或 Raw TCP 连接设备控制台的能力,并支持会话管理、命令交互及高危指令审批。

这是一个面向网络设备 console 映射端口的 DSH 插件。它通过 Telnet 或 Raw TCP 协议连接设备控制台,提供会话管理、设备配置增删改查、命令交互以及分页自动处理等功能。

核心功能

  1. 连接与会话管理:经 Telnet 或 Raw TCP 连接设备控制台,提供会话管理(连接、发送、读取、唤醒、关闭)。
  2. 设备配置管理:提供设备配置管理(增删改查)。
  3. 分页自动处理:支持分页自动处理(auto-more / auto-quit / auto-interrupt / manual)。
  4. 指令拦截与审批:支持高危指令拦截与审批机制。
  5. 休眠检测与唤醒:支持会话休眠检测与自动唤醒。

安装与启用

安装该插件需要先满足前提条件(Node.js、Harness 版本及 dsh-better-sidebar)。安装完成后重启 Harness。

dsh plugin --profile web add github:RBkreb/dsh-console-hub

典型用法

插件注册了 console_* 系列工具。核心流程是先通过 console_upsert_view 配置设备清单,再使用 console_connect 连接设备,随后通过 console_send 发送文本命令,利用 console_wait_for 等待设备提示符或模式。

配置设备清单的示例:

# 配置设备清单
console_upsert_view:
  viewId: "router-01"
  name: "Core Router"
  host: "192.168.1.1"
  port: 23
  kind: "telnet"
  password: "secret"

配置项

配置项主要分为连接与读取、分页与休眠、拦截与模型三类。

连接与读取

  • trustedHosts:非回环部署被访问的 host:port(或仅 host);未声明拒绝所有请求。
  • defaultKind:默认连接类型,支持 'telnet' 或 'raw'。
  • defaultEncoding:默认编码,支持 utf-8 / gbk / gb18030 / big5 / shift_jis / euc-kr / latin1。
  • connectTimeoutMs:socket 连接预算,默认 8000ms。
  • readTimeoutMs:单次 read 等待新字节的时长,默认 15000ms。
  • idleTimeoutMs:空闲控制台回收时长,默认 600000ms(10分钟)。

分页与休眠

  • pagingMode:缺省分页反应,可选 auto-more / auto-quit / auto-interrupt / manual。
  • dormantAutoWake:检测到半关闭标记时自动唤醒,默认 true。
  • wakeOnConnect:连接自动输入回车,默认 true。

拦截与模型

  • approvalMode:拦截模式,可选 always(每条提问)或 high-risk(仅未命中规则放行)。
  • fenceRules:高危拦截规则数组,支持 deny(直接拒绝)、ask(人工确认)、allow(放行)动作。

限制与安全

  • 协议限制:仅支持 Telnet / Raw TCP,不支持 SSH 或串口直连。
  • 依赖正则:提示符、分页、休眠识别依赖正则,部分 CLI 需要调整。
  • 会话隔离:控制台池全宿主共享,无会话隔离。
  • 安全建议:高危拦截是防护栏不是沙箱,建议同时在设备侧限制权限。
  • 权限范围:对已配置设备发起出站 TCP;不执行 shell;无 PTY。

适用场景与注意

适用于使用串口服务器映射网络设备的场景。使用前应检查源码与许可证(MIT)。安装前应检查 Node.js 版本(>=22.19.0)及 Harness 版本依赖。

该项目由 RBkreb 维护,为 DSH 生态提供了网络设备控制台的标准接入能力。