前言¶
DeepSeek Harness(DSH)默認把 Web UI 綁在 127.0.0.1,CLI 也拒絕 --host 0.0.0.0,這是有意爲之的安全設計。實際開發裏,代碼和構建環境往往在另一臺機器上:雲主機、內網服務器,或者一臺 Windows 開發機。常見做法是 SSH 登錄後手工同步文件,或在本地再開一套編輯器,智能體無法直接操作遠端目錄。
下面介紹 dsh-remote(flymysql/dsh-remote):由社區維護者 flymysql 發佈的 DSH 聯網工具插件。它讓你從本機 DSH 主動連出去,選一臺 SSH 主機和遠端目錄,通過 rw_* 工具在遠端讀寫、執行命令,並把目錄鏡像到本地真實工作區,走 DSH 原有的 workspace 與 agent 文件流,無需改動 dsh-workspace 或 harness 核心。
這是什麼¶
dsh-remote 是 DeepSeek Harness 的遠程工作助手插件,分類爲聯網工具。一句話定位:管理多臺 SSH 主機,選定遠程(或本地)工作區,讓智能體在遠端目錄上直接操作,同時用 SFTP 把遠端目錄鏡像成本地 DSH 工作區。
- 維護者:flymysql
- 許可證:MIT
- 當前版本:0.8.8(npm 包名
dsh-remote) - GitHub:https://github.com/flymysql/dsh-remote(37 stars,8 forks)
- 社區目錄:https://www.skillhub.cn/plugins/flymysql/dsh-remote
多機 SSH 與工作區選擇¶
多機註冊與連接¶
Settings 面板提供「遠程工作區」入口,可保存任意數量的 SSH 主機(host / port / user,私鑰或密碼)。密碼僅存本地,UI 不回顯。每臺機器可單獨配置:
- passphrase、host-key 模式、SSH agent
- keyboard-interactive(OTP)
- 代理跳轉(bastion)
- 可選 OS 鑰匙串加密保存密碼(macOS Keychain / Windows DPAPI / Linux
secret-tool)
支持從 ~/.ssh/config 導入 Host 別名(只引用路徑,不讀取密鑰內容)。保存前可用「測試連接」校驗,並按認證、網絡、host key、超時等類別給出錯誤提示。
雙標籤工作區選擇器¶
插件填充 DSH 原生的「添加工作區 / 選擇工作區」流程,彈出居中模態框,兩個標籤頁:
本機(Local) — 調用系統文件夾選擇器(macOS osascript、Linux zenity→kdialog、Windows FolderBrowserDialog),或直接輸入本地路徑,作爲普通 DSH 本地工作區。
遠程(Remote) — 先選機器,路徑框預填 / 並即時補全目錄(選中一級立即列出下一級,類似 OS/VSCode 體驗)。「瀏覽…」浮層展示 size 與 mtime,目錄優先、跟隨符號鏈接,填入路徑但不立即提交,確認後點「設爲遠程工作區」。還提供最近工作區、~ 主目錄快捷和「新建目錄」。
確認遠程工作區後,插件在本地創建真實鏡像目錄:
$DSH_HOME/remote-workspaces/<host>-<user>-<port>/<base>
經 fs.realpath 後由 harness 採納爲正式工作區,dsh-remote 通過 SFTP 保持同步。
核心能力¶
雙向 SFTP 同步¶
rw_sync(遠端 → 鏡像)和 rw_push(鏡像 → 遠端)採用三方比對(遠端、本地、上次同步快照)。兩側都改過的文件會報告衝突,不會靜默覆蓋;force=true 可強制覆蓋。兩者均支持 dry-run、後臺任務,並遵守 gitignore 風格忽略規則(remote-workspaces 下的 .dsh-remote-ignore,默認忽略 .git、node_modules、target、dist、build 等)。
20 個 rw_* 模型工具¶
全部基於 SFTP,Windows 與 POSIX 遠端均可使用:
| 工具 | 作用 |
|---|---|
rw_info |
查看當前連接與工作區信息 |
rw_connect |
建立 SSH 連接(可 save 保存配置) |
rw_pick_workspace |
選擇遠程工作區 |
rw_list_dir |
列目錄(含 size、mtime) |
rw_stat |
文件元信息 |
rw_read_file |
讀文件(支持 utf-8 / gbk 編碼) |
rw_write_file |
寫文件 |
rw_edit |
字面量替換編輯,帶 mtime 樂觀鎖 |
rw_append |
追加內容 |
rw_mkdir |
建目錄 |
rw_remove |
刪除(遞歸,有界) |
rw_move |
移動/重命名 |
rw_exec |
遠端執行命令(支持 pty / env) |
rw_search |
SFTP 樹遍歷搜索(含上下文行,遵守忽略規則) |
rw_download / rw_upload |
流式傳輸(fastGet/fastPut,有大小上限) |
rw_forward |
SSH 端口轉發 |
rw_sync / rw_push |
同步與推送 |
rw_disconnect |
斷開連接 |
rw_sync / rw_push 設 async: true 時返回 taskId,通過 /dsh-remote/task 查詢進度、結果或取消(單飛隊列)。
端口轉發¶
Settings 頁面或 rw_forward 可創建、啓動、停止、刪除本地轉發(127.0.0.1:port → remote)與反向轉發(remote → local)。定義持久化,重連時可自動重啓,斷開時全部停止。
側欄遠程編輯¶
自 v0.7.2 起,dsh-better-sidebar 爲硬依賴並自動掛載。側欄遠程文件標籤頁支持點擊「編輯」→ 修改 →「保存到遠程」,帶 mtime 樂觀鎖(併發修改返回 409,提示「重新讀取」)。資源管理器行顯示文件大小,右鍵菜單支持下載到本地鏡像、重命名、刪除、新建目錄。
安全與審計¶
- Host-key 驗證(TOFU):默認
hostKeyMode: accept-new,首次連接記錄 host key,後續變更拒絕(防中間人)。verify拒絕從未見過的主機;off關閉驗證。記錄存於$DSH_HOME/remote-workspaces/known_hosts.json,可用/remote forget-key重置。 - 命令審計日誌:每次
rw_exec、寫、刪、移動、轉發操作追加到$DSH_HOME/remote-workspaces/audit.log(時間 · user@host · 操作 · 退出碼 · 命令);Settings 展示最近 30 條。 - 當前活躍的
user@host:/path以及活躍轉發會注入系統提示詞。
跨平臺與數據位置¶
所有文件訪問在 SFTP 協議層完成,不依賴遠端 shell,因此 Linux、macOS、Windows 遠端在列目錄、讀寫、搜索、同步上行爲一致。機器配置與鏡像目錄均在 $DSH_HOME 下;0.6 之前的數據在 ~/.dsh/remote-workspaces,首次運行會自動遷移。
安裝與啓用¶
社區目錄與 README 給出的安裝命令一致:
dsh plugin add dsh-remote
一條命令安裝完整 bundle。自 v0.7.2 起側欄組件 dsh-better-sidebar 隨包掛載,無需額外步驟;若已單獨安裝側欄,內嵌副本會自動退讓,不與獨立 bundle 重複掛載(v0.8.7+ 起順序無關,早期版本若獨立側欄排在 dsh-remote 之後可能因重複路由 /sidebar/api 導致啓動失敗)。
環境要求:profile 的 pnpm linker 須爲 hoisted(DSH profile 默認值,即 pnpm-workspace.yaml 中 nodeLinker: hoisted)。
典型用法¶
1. 添加插件並配置主機¶
dsh plugin add dsh-remote
啓動 DSH 後,打開 Settings →「遠程工作區」,添加 SSH 主機(密鑰或密碼),點「測試連接」確認可達,設爲當前機器。
2. 選擇遠程工作區¶
在 DSH 原生「添加工作區」流程中,切到「遠程」標籤:選機器 → 瀏覽或輸入遠端路徑 →「設爲遠程工作區」。本地鏡像創建完成後,工作區即被 harness 採納。
3. 讓智能體操作遠端¶
連接建立後,智能體可通過 rw_* 工具在遠端讀寫文件、執行構建命令。例如同步遠端變更到本地鏡像:
rw_sync
將本地鏡像推回遠端(衝突時先查看報告,必要時 force=true):
rw_push
需要訪問遠端內網服務時,在 Settings 或工具裏配置 rw_forward 本地端口轉發。
4. 側欄直接編輯¶
在 better-sidebar 的遠程文件標籤頁打開文件,編輯後「保存到遠程」;若遠端已被他人修改,按提示重新讀取再保存。
適用場景與注意¶
適合誰
- 日常在 DSH 裏驅動智能體,但代碼、構建、測試環境在遠程 SSH 主機上的開發者
- 需要同時管理多臺機器(雲服務器、跳板機後的內網主機、Windows 遠程桌面替代方案)的場景
- 希望在單一 harness 界面完成遠端文件瀏覽、編輯、命令執行與目錄同步,而不改 harness 核心的用戶
使用前注意
- 權限邊界:插件以當前 DSH 進程權限運行,可讀寫你配置的 SSH 憑據、本地鏡像目錄並執行遠端命令。安裝前應閱讀 源碼 與 MIT 許可證,確認符合你的安全策略。
- 密碼與密鑰:密碼存本地(可選 OS 鑰匙串加密),私鑰路徑由你指定;插件不從
~/.ssh/config讀取密鑰內容,但連接時會使用你填寫的路徑。 - 同步衝突:默認不靜默覆蓋雙側修改;推送前留意
rw_sync/rw_push的衝突報告。 - 側欄版本:若從 ≤0.8.6 升級且單獨安裝了
dsh-better-sidebar,v0.8.7+ 已修復 bundle 順序導致的重複路由問題;也可移除獨立側欄,改用內嵌副本。
結尾¶
dsh-remote 把「出站 SSH + 遠程工作區 + 本地鏡像」封裝進 DSH 插件模型:不改 harness 核心,用 SFTP 統一跨平臺文件訪問,用三方同步避免靜默覆蓋,用審計日誌和 host-key TOFU 補上基本可追溯與安全校驗。若你的開發環境在遠端,值得把它列入 DSH 聯網工具清單。