cslht11/dsh-ssh-remote:DSH 的 SSH 遠程工作區插件

前言

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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜