前言¶
DSH 的擴展方式強調「一切皆插件」。在需要讓 Agent 直接處理遠程服務器文件的場景裏,常見做法是先在本地終端執行 SSH 命令,再手動查看結果;如果有多臺服務器,還要在多個連接和多個工作目錄之間來回切換。
cslht11/dsh-ssh-remote 是面向這個場景的 DSH 插件:管理多臺服務器、同時保持多個 SSH 連接,並在每臺機器上選擇遠程工作區,讓 Agent 通過 rw_* 工具查看、編輯、執行遠程文件。
本文只基於已覈實資料介紹。相關社區目錄頁是獨立站點,不與 DeepSeek / 幻方構成官方從屬關係。
這是什麼¶
cslht11/dsh-ssh-remote 是 DeepSeek Harness(DSH)的 SSH 遠程工作區插件,多機並行版。維護者爲 cslht11,許可證爲 MIT。
該項目是 flymysql/dsh-remote 的 fork + 改造,非完全原創。上游版本爲 0.5.10,本倉庫版本爲 0.6.0。
插件適配 @deepseek-ai/dsh@0.1.1-rc.2,並增強 standard、code、minimal、cordis 現有模式,使這些模式可以直接使用遠程工作區工具。
核心功能¶
多機註冊與並行連接¶
- 多機 SSH 註冊表:支持任意多臺服務器,配置
host/port/user,以及密碼或私鑰 + 口令;註冊表保存在~/.dsh/remote-workspaces/machines.json。 - 同時連接多臺:每臺機器獨立連接池,互不干擾。
- 當前機切換:
rw_switch用於切換當前機器,rw_disconnect用於斷開指定機器。
遠程工作區與同步¶
- 遠程工作區:爲每臺機器選擇遠程目錄,本地鏡像位於
~/.dsh/remote-workspaces/<host>/...。 - 雙向 SFTP 同步:
rw_sync:遠程 → 本地鏡像rw_push:本地鏡像 → 遠程
Agent 工具¶
rw_* 工具均支持 machineId 指定目標機;不傳 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 |
斷開指定機器 |
設置面板¶
在 DSH Web 中可以通過 Settings → 遠程工作區 管理機器,支持多機增刪改查、測試連接、切換當前機。
安裝與啓用¶
下面是一鍵安裝命令。安裝腳本會自動安裝依賴、註冊 symlink,並複製/追加 standard、code、minimal、cordis 的用戶 preset。
git clone https://github.com/cslht11/dsh-ssh-remote.git
cd dsh-ssh-remote
bash install.sh
kill $(pgrep -f 'dsh web') 2>/dev/null; dsh web
經過上面的步驟後,打開 DSH Web,新建會話,選擇 standard、code、minimal 或 cordis 模式。這些模式已經內置 rw_* 工具,無需切換到額外模式。
安裝腳本會創建 ~/.dsh/profiles/web/node_modules/dsh-ssh-remote symlink,並複製/追加各模式用戶 preset。
卸載推薦執行:
bash install.sh --uninstall
手動卸載時,需要刪除 symlink,並從各模式 agent.cordis.yml 中移除 SSH 插件行。
典型用法¶
對話方式:註冊兩臺機器¶
在 DSH 會話中,可以讓模型按下面內容調用工具:
rw_connect 添加 192.168.1.10(root,密鑰 /Users/me/.ssh/id_rsa)
rw_connect 添加 192.168.1.20(root,密碼 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_write_file (machineId=<第一臺id>, path=/srv/app/config.yml, content='...')
rw_sync (machineId=<第一臺id>)
rw_sync 會把遠程工作區鏡像到本地 ~/.dsh/remote-workspaces/;如果要把本地鏡像寫回遠程,使用 rw_push。
設置面板方式¶
打開 DSH Web,進入:
Settings → 遠程工作區
在這裏可以添加、刪除、修改機器,測試連接,並切換當前機。
適用場景與注意¶
適合的使用者包括:
- 需要在 DSH 會話中直接查看、編輯、執行遠程服務器文件的人。
- 需要同時維護多臺服務器 SSH 連接的人。
- 希望在
standard、code、minimal、cordis現有模式中加入遠程工作區工具的人。
使用前需要注意:
- 該插件適配
@deepseek-ai/dsh@0.1.1-rc.2。更換 DSH 版本時,應結合版本機制重新安裝或適配。 - 插件會以當前
dsh進程權限運行,並涉及 SSH 憑據、遠程文件讀寫、遠程命令執行和 SFTP 同步;安裝前應檢查源碼、依賴和許可證。 - 本項目基於
flymysql/dsh-remote改造,主倉庫許可證爲MIT。倉庫包含 vendored 組件@deepseek-ai/dsh-client-ui-aionui-panel與@deepseek-ai/dsh-ssh,均爲BSD-3-Clause;其中dsh-aionui-panel的面板設計參考iOfficeAI/AionUi(Apache-2.0)重新實現。 - 機器註冊表保存在
~/.dsh/remote-workspaces/machines.json,每臺設備獨立維護。
鏈接¶
- 目錄頁:
https://www.skillhub.cn/plugins/cslht11/dsh-ssh-remote - GitHub:
https://github.com/cslht11/dsh-ssh-remote