前言¶
DeepSeek Harness (DSH) 的插件化架構允許開發者通過插件擴展功能。在本地文件處理或單機 SSH 操作之外,管理多臺服務器通常需要頻繁切換連接。dsh-ssh-remote 插件解決了這個問題,它支持同時保持多個 SSH 連接,併爲 Agent 提供直接查看、編輯和執行遠程文件的能力。
這是一個基於 flymysql/dsh-remote 的 fork 項目,將傳統的單連接池模型改造爲多池並行連接模型。
維護狀態與適配版本¶
本項目已於 2026 年 9 月 10 日停止維護。
- 適配基準版本:
@deepseek-ai/dsh@0.1.2-rc.1 - 未驗證版本:
0.1.5-rc.1及以後 - 許可證:MIT
代碼保持現狀可用(仍爲 MIT),但在 DSH 0.1.5+ 版本上不保證工作。
安裝¶
安裝過程建議在已安裝 DSH 的環境進行。只需三步:
# 1) 克隆本項目
git clone https://github.com/chai1110/dsh-ssh-remote.git
cd dsh-ssh-remote
# 2) 一鍵安裝(自動裝依賴 + 註冊 symlink + 創建 SSH 增強預設)
bash install.sh
# 3) 重啓 DSH
kill $(pgrep -f 'dsh web') 2>/dev/null; dsh web
安裝腳本會自動完成以下操作:
1. 安裝依賴(如 ssh2)。
2. 創建 symlink 到 profile 的 node_modules。
3. 爲官方模式(standard、code、minimal、cordis)增強同名用戶 preset,使 SSH 工具直接出現在現有模式中。
功能特性¶
- 多機 SSH 註冊表:管理多臺服務器配置(host、port、user、密碼或私鑰),存儲於
~/.dsh/remote-workspaces/machines.json。 - 同時連接多臺:每臺機器擁有獨立的連接池,互不干擾。
- 遠程工作區:爲每臺機器指定遠程目錄,本地鏡像存儲於
~/.dsh/remote-workspaces/<host>/...。 - 雙向 SFTP 同步:支持
rw_sync(遠程→鏡像)和rw_push(鏡像→遠程)。 - Agent 遠程操作工具:提供
rw_*系列工具,支持文件瀏覽、讀寫、命令執行。 - 設置面板:DSH Web 的設置頁面中提供遠程工作區管理界面,支持增刪改查機器及測試連接。
工具用法¶
所有工具支持 machineId 參數指定目標機器,不傳參數則默認爲當前機器。
| 工具 | 作用 |
|---|---|
rw_info |
查看所有已註冊機器及連接狀態、當前工作區。 |
rw_connect / rw_switch |
註冊新機器或切換當前機器。 |
rw_pick_workspace |
爲指定機器設置遠程工作區目錄。 |
rw_list_dir / rw_read_file |
瀏覽遠程目錄、讀取遠程文件。 |
rw_write_file |
直接寫入遠程文件(自動創建父目錄)。 |
rw_exec |
在遠程執行 Shell 命令。 |
rw_sync / rw_push |
遠程與本地鏡像同步。 |
rw_disconnect |
斷開指定機器的連接。 |
使用示例¶
Agent 可以直接通過對話驅動這些工具。例如:
- 註冊並連接兩臺服務器:
rw_connect (host=192.168.1.10, user=root, privateKeyPath=/Users/me/.ssh/id_rsa)
rw_connect (host=192.168.1.20, user=root, password=xxx)
- 爲第一臺服務器設置工作區:
rw_pick_workspace (machineId=<第一臺id>, path=/srv/app)
- 在遠程執行命令並查看文件:
rw_exec (machineId=<第一臺id>, command='docker compose ps')
rw_list_dir (machineId=<第一臺id>, path=/srv/app)
rw_read_file (machineId=<第一臺id>, path=/srv/app/src/main.py)
- 同步遠程文件到本地:
rw_sync (machineId=<第一臺id>)
注意事項¶
- 本項目 fork 自
flymysql/dsh-remote,底層 SSH 引擎、SFTP 同步等組件來自該上游項目(BSD-3-Clause)。 - 由於維護已暫停,若 DSH 官方版本升級至
0.1.5-rc.1或更高,插件可能無法正常工作。 - 插件以同名用戶 preset 覆蓋機制掛載,升級 DSH 後通常需要重新運行安裝腳本。