前言¶
在 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)。
典型用法¶
- 打開右側邊欄,選擇「自動配置終端」標籤頁(或點「+ 連接」)。
- 選擇 SSH / Telnet / 串口 / SFTP,填寫地址和憑據,在終端裏直接操作。
- 或在主對話中描述連接信息,例如:
連接 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。