前言¶
DeepSeek Harness(DSH)默認在本地目錄上執行 shell、讀寫文件和搜索代碼。若項目只在服務器或開發機上、本機只有客戶端,常見做法是手動 SSH 進機器再操作,或把代碼同步到本地再開會話——步驟多,且 agent 用的工具鏈與本地 workspace 不一致。
下面介紹社區插件 DeepSeek Harness SSH Toolkit(npm 包名 dsh-ssh-toolkit):在 DSH 0.2 上把會話綁定到遠程主機上的任意目錄,工具名與官方一致(bash、read、write 等),調用按會話工作目錄路由到 SSH 遠端執行。維護者爲 MaiwulanjiangMaiming;倉庫見 GitHub,社區目錄頁見 SkillHub。分類爲客戶端;它是 dsh-ssh/dsh-ssh 在 DSH 0.2 上的獨立延續,並非上游提交的鏡像。
這是什麼¶
一句話:SSH remote workspaces for DeepSeek Harness——在遠程 Linux/macOS 上選文件夾作爲 workspace,每次 shell / 文件 / 搜索類工具調用都在該機器上完成,而不是筆記本本地。
插件是增量的:未選遠程 workspace 時,本地 workspace 行爲與未安裝前相同;卸載後 DSH 本體不受影響。
核心功能¶
主機與跳板¶
在 Settings → SSH Connections 中新增、編輯、測試(經跳板鏈)、刪除主機;可選跳板(Jump host)。UI 中密碼爲只寫不回顯。支持通過 ProxyJump 主機引用鏈式跳轉(含環檢測),或在本地執行 OpenSSH 風格的 ProxyCommand;終端側與 ssh -J / -o ProxyCommand 一致。
從現有 SSH 配置導入¶
掃描 ~/.ssh/config、~/.ssh/config.d/* 及 Include 鏈(與 VS Code Remote-SSH 同源),一鍵批量導入 user、port、密鑰路徑;缺少 User 的條目會標記,避免靜默錯誤。
七類路由工具¶
bash、read、write、edit、read_image、glob、grep 保持官方名稱與參數 schema;是否走遠程僅取決於會話 cwd,無需改 prompt 或改工具名。
遠程 workspace 與 UI¶
瀏覽遠程目錄並選定後,本地得到佔位 workspace;刪除 workspace 會清理佔位。Files 側欄經 SFTP 列出/預覽遠程樹;Terminal 面板用 ssh -tt 打開遠程 shell,複用官方終端的 resize/scrollback。在遠程 workspace 中附加文件會上傳到遠程目錄(重名安全命名),消息裏仍保留附件卡片。
後臺任務與沙箱¶
run_in_background 以及 job_list / job_output / job_kill 在遠程主機執行。三種 sandbox 模式對遠程工具調用的約束與本地一致。
連接與傳輸¶
未知主機密鑰首次連接會彈出指紋確認,之後校驗 known_hosts。連接池支持重連;遠程寫入原子化;SFTP 失敗時可回退到 exec + base64。
版本提示¶
Settings → SSH 顯示已安裝版本;若倉庫有更新 tag,頁腳提示「Update available」(至多每 6 小時檢查一次,帶 Release 鏈接)。DSH 僅對官方插件提供內置 Update 按鈕,本插件需手動拉取/重裝並完全重啓 DSH。
環境要求¶
| 項 | 要求 |
|---|---|
| DSH | 0.2.1-rc.4 – 0.2.x(README 寫明 rc.5 已測、rc.4 已審計) |
| Node | ≥ 22 |
| 遠程系統 | Linux 或 macOS(僅需 sshd,無需在遠端裝 agent) |
| 認證 | 密鑰(路徑或 ssh-agent)或密碼 |
| 拓撲 | 多跳 via ProxyJump 或 ProxyCommand |
遠程 grep 使用 GNU grep,忽略規則與本地 rg 略有差異。不支持 Windows 作爲遠程 OS。
安裝與啓用¶
插件隨 DSH 進程與當前 profile 運行;安裝前建議自行查看倉庫源碼與 MIT 許可證。社區目錄 SkillHub 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
桌面 profile 直接從 GitHub 安裝:
dsh plugin --profile desktop add github:MaiwulanjiangMaiming/Deepseek-harness-SSH-toolkit
無頭 Web 環境將 --profile desktop 換成 --profile web。若 pnpm 報 ERR_PNPM_ADDING_TO_ROOT,在命令末尾加 -w。安裝後完全重啓 DSH,再打開 Settings → SSH Connections。
指定 tag 或 Release 附帶的 .tgz(該頁自動生成的 Source code 壓縮包不可作爲可安裝包):
dsh plugin --profile desktop add github:MaiwulanjiangMaiming/Deepseek-harness-SSH-toolkit#v1.4.4
dsh plugin --profile desktop add ~/Downloads/dsh-ssh-toolkit-1.4.4.tgz
若 profile 拒絕覆蓋已裝副本,先移除再裝:
dsh plugin --profile desktop remove dsh-ssh-toolkit
pnpm 若因 ERR_PNPM_IGNORED_BUILDS(cpu-features、ssh2)停止,可在 profile 的 pnpm-workspace.yaml 中顯式聲明(ssh2 可不編譯可選 native addon):
allowBuilds:
cpu-features: false
ssh2: false
卸載:
dsh plugin --profile desktop remove dsh-ssh-toolkit
典型用法¶
按 README Quick start,順序如下:
- Settings → SSH Connections → Import from ~/.ssh/config(或 Add host)。
- 測試連接一次;首次連接確認主機密鑰指紋。
- New session → 選擇主機 → 瀏覽並選定遠程文件夾 → 該目錄成爲 workspace。
- 此後 agent 執行的命令與文件操作均發生在該遠程機器上。
主機記錄保存在 storage 域 dsh_ssh_hosts(文件路徑約爲 ~/.dsh/storages/dsh_ssh_hosts.json)。設置頁通過 Typert 遠程 RPC(如 ssh/listHosts、saveHost、testConnection、scanSshConfig 等)與 host 通信,不把 settings 命名空間暴露到 wire。
適用場景與注意¶
適合:代碼與構建環境在遠程 Linux/macOS;已用 OpenSSH config 管理多臺主機或跳板;希望在 DSH 0.2 裏用與本地相同的工具名做遠程開發。
務必知曉的限制與 trade-off(來自 README Notes):
- 密碼以明文寫入
dsh_ssh_hosts.json(與上游相同取捨);更推薦密鑰,私鑰文件本身不會被複制。 - 終端跳板鏈走本地
ssh -J,中間跳 credentials 來自系統 ssh config/agent;存儲的密碼僅用於目標主機。 ProxyCommand在本地/bin/sh執行配置中的命令,信任模型同 OpenSSH;僅對你已配置的主機會執行。- Files 標題仍顯示本地佔位路徑,實際讀寫指向遠程路徑;終端使用本機
ssh客戶端。 - 上傳寫入遠程 workspace;附件卡片仍引用本地暫存副本供模型側展示。
連接測試失敗時,README 建議先覈對 host、port、user(後續 Troubleshooting 章節在抓取資料中已截斷,細節以倉庫 README 爲準)。
結尾¶
DeepSeek Harness SSH Toolkit 把 DSH 0.2 會話落到 SSH 遠程目錄:導入現有 ~/.ssh/config、管理跳板、七類官方工具遠程路由,以及 Files/Terminal 的遠程 parity。本地 workspace 不受影響,按需安裝即可。