前言¶
在 DeepSeek Harness(DSH)裏,如果希望 AI 能在對話中直接連 SSH、執行命令、查看狀態並斷開連接,同時又希望人在 Web GUI 裏能看到同一類終端輸出,就需要一個既能接入模型工具、又能提供可視終端面板的插件。
下面介紹 @jmcc-guo/dsh-ssh。它由 jmcc-guo 維護,許可證爲 MIT,定位爲 DSH 的 SSH terminal panel + AI connection manager。
這是什麼¶
@jmcc-guo/dsh-ssh 是一個 DSH 插件,提供兩類能力:
1、AI 連接管理:讓 DSH 中的 AI agent 通過工具調用創建、查看、執行、斷開和刪除 SSH 連接。
2、Web GUI 終端面板:在 DSH 的 Web 界面中提供一個多標籤 SSH 終端,支持真實 PTY、ANSI 顏色和回滾緩衝區。
它的目標是把“模型操作 SSH”和“人看 SSH 終端”放在同一套 DSH 環境裏,而不是隻給模型一個命令執行器。
核心功能¶
AI 連接生命週期¶
插件暴露一組 SSH 相關工具,AI agent 可以調用以下工具完成連接管理:
ssh_connect
ssh_exec
ssh_list
ssh_status
ssh_disconnect
ssh_exec_read
ssh_exec_kill
ssh_delete
通過這些工具,AI 可以按名稱或參數創建連接、執行命令、列出 AI 管理的連接、查看連接狀態、讀取執行輸出、終止執行、斷開連接以及刪除連接。
自動保存與重啓複用¶
SSH 連接會按名稱保存。DSH 重啓後,對已保存連接名稱執行 ssh_exec 時,會基於已保存配置重新建立連接。
這意味着同一臺遠端服務可以在 DSH 中保存爲多個獨立連接,每個連接有自己的名稱、會話狀態和命令隊列。
AI 連接與用戶連接的邊界¶
插件區分兩類連接來源:
1、AI 創建的連接標記爲 ai。
2、從設置頁創建的連接標記爲 user。
AI 不能查看或操作 user 連接。ssh_list 會隱藏用戶連接,ssh_exec、ssh_status、ssh_disconnect、ssh_delete 等工具會明確拒絕用戶連接。
如果用戶希望把某個 user 連接交給 AI 使用,需要執行一次明確的確認,完成從 user 到 ai 的單向轉移。轉移後會保持原連接可用,不會先斷開。
保活、重連與執行互斥¶
插件爲每條連接提供空閒保活。對於非預期斷開,例如網絡抖動或服務端重置,會自動重連;重連有次數上限,並在重連後提示 shell 狀態已重置。
顯式斷開會保持斷開狀態。以下操作都不會觸發自動重連:
1、關閉終端標籤頁。
2、調用 ssh_disconnect。
3、從設置頁執行斷開。
對於 ai 來源連接,在 AI 命令執行期間存在執行互斥。此時服務端輸入可能被丟棄,或者模型等待當前 shell 安靜後再執行,也可能返回可讀的 busy 結果。用戶連接不受該互斥邏輯影響。
多標籤終端面板¶
插件在 DSH Web GUI 中提供 XShell/Uniterm 風格的多標籤終端面板。終端使用真實 PTY,支持 ANSI 顏色和 scrollback。
終端面板會顯示 AI 和用戶側產生的命令輸出。關閉一個標籤頁會立即斷開對應連接;AI 調用 ssh_disconnect 後,標籤頁會保留並顯示 disconnected 狀態,便於後續重新連接。
設置頁與憑據管理¶
DSH 設置頁中的 SSH Connections 區域用於管理連接,包括:
1、創建 SSH 連接。
2、編輯連接,包括重命名。
3、刪除連接及其憑據。
4、連接與斷開連接。
密碼和私鑰保存在 DSH credential store 中,使用生成的引用。連接記錄、日誌和工具結果中不應包含密鑰材料。工具參數中內聯密鑰會被拒絕,認證失敗會返回經過清理的可讀原因。
插件支持中文和英文界面。
安裝與啓用¶
安裝前需要滿足以下條件:
1、Node.js >= 18,並且使用 ESM。
2、pnpm。
3、已安裝 DeepSeek Harness(DSH),並且啓用 web profile。
將插件安裝到 web profile:
dsh plugin --profile web add @jmcc-guo/dsh-ssh
安裝後,如果修改了插件集合或客戶端 bundle graph,需要重啓 profile 進程。DSH 會在啓動時組合插件集合和客戶端 bundle graph。
如果需要覆蓋插件配置,可以在 profile patch 中配置 dsh-ssh。已列出的配置鍵包括:
- id: dsh-ssh
config:
heartbeatIntervalMs: ...
reconnectMaxAttempts: ...
outputLimitBytes: ...
這裏的鍵名來自插件配置說明。實際值應根據遠端環境、網絡穩定性和輸出大小需求設置。
典型用法¶
安裝到 DSH¶
dsh plugin --profile web add @jmcc-guo/dsh-ssh
讓 AI 調用 SSH 工具¶
安裝並啓用後,AI agent 可以在對話中調用這些工具:
ssh_connect
ssh_exec
ssh_list
ssh_status
ssh_disconnect
ssh_exec_read
ssh_exec_kill
ssh_delete
例如,先建立連接,再執行命令,查看狀態,最後斷開連接。具體連接參數由你提供的 SSH 配置決定;憑據類信息應通過 DSH credential store 管理,而不是直接寫在工具參數裏。
在設置頁管理連接¶
進入 DSH 設置頁,找到 SSH Connections。
在這個頁面中可以執行:
1、創建新的 SSH 連接。
2、編輯已有連接。
3、刪除連接。
4、連接指定連接。
5、斷開指定連接。
覆蓋運行參數¶
在 profile patch 中覆蓋 dsh-ssh 配置鍵,例如:
- id: dsh-ssh
config:
heartbeatIntervalMs: ...
reconnectMaxAttempts: ...
outputLimitBytes: ...
保存後重啓 profile 進程,使配置生效。
適用場景與注意¶
適合誰¶
這個插件適合以下使用者:
1、在 DSH Web GUI 中使用 AI agent,並希望 AI 能直接處理 SSH 任務。
2、希望 AI 命令和人工操作都能在同一終端面板中查看。
3、需要管理多條 SSH 連接,並區分 AI 連接和用戶連接。
4、希望把 SSH 憑據放入 DSH credential store,而不是散落在日誌、記錄或工具參數中。
運行權限¶
插件會在當前 DSH 進程的權限下運行。安裝前建議先檢查源碼、依賴和許可證,確認它符合你所在環境的安全要求。
憑據安全¶
密碼和私鑰應保存在 DSH credential store 中。連接記錄、日誌和工具結果中不應出現祕密材料。工具參數中內聯密鑰會被拒絕,認證失敗會返回清理後的可讀原因。
重連語義¶
自動重連只用於非預期斷開。顯式斷開會保持斷開狀態。關閉標籤頁會立即斷開;AI 調用 ssh_disconnect 後標籤頁仍會保留,並顯示 disconnected。
構建與依賴¶
ssh2 以 bundled 方式隨插件提供,不需要額外執行構建步驟。可選的 native crypto binding 不會被編譯。
如果使用 pnpm 檢查 peer dependencies,可能會看到 @deepseek-ai/* 相關包缺少 peer 的提示。根據插件說明,這類警告被視爲 harmless;插件在 DSH 的 shared profile 佈局中運行時,會從宿主環境解析這些包。
結尾¶
@jmcc-guo/dsh-ssh 把 SSH 終端面板和 AI 連接管理放進 DSH。它適合需要在 DSH 對話中讓 AI 操作 SSH,同時希望在 Web GUI 中看到同一終端輸出的場景。
倉庫地址:
https://github.com/jmcc-guo/dsh-ssh
插件線索中給出的目錄頁爲:
https://www.skillhub.cn/plugins/jmcc-guo/dsh-ssh
該目錄頁屬於插件線索信息,安裝前仍建議以 DSH 插件目錄、倉庫和源碼中的實際說明爲準。DSH 插件生態由社區維護,目錄站點是獨立站點,不應理解爲 DeepSeek 或幻方的官方應用商店。