前言¶
DeepSeek Harness(簡稱 DSH)是 DeepSeek 開源的智能體運行時,核心理念是「一切皆插件」:模型、工具、會話、沙箱、文件系統和界面都可以掛載、替換。倉庫地址是 https://github.com/deepseek-ai/deepseek-harness 。社區裏有一份獨立維護的插件目錄 https://deepseek-harness-plugin.com/zh-CN/plugins/ ,它不是 DeepSeek / 幻方的官方應用商店,收錄的條目需要對照 GitHub 和 npm 再核一遍。
DSH 的 Web 界面刻意只監聽 127.0.0.1,CLI 也會拒絕 --host 0.0.0.0。本地 harness 很安全,但日常代碼經常不在本機:構建機、開發容器、實驗室服務器上纔有完整工程。這時常見做法是另開一個 SSH 終端,或者自己維護同步腳本。dsh-remote 走的是另一條路:由你主動連出到自己維護的機器,選一個遠程目錄當工作區,再讓 Agent 用一組 rw_* 工具在那邊列文件、讀代碼、跑命令。
當前 npm 版本爲:0.5.7(2026-08-16 更新)。GitHub 倉庫 https://github.com/flymysql/dsh-remote 在 2026-08-17 覈實爲 17 star,MIT 許可證,主要語言 JavaScript。社區目錄把它分在「工具與能力」。
這是什麼¶
dsh-remote 是 flymysql 維護的 DeepSeek Harness 遠程工作助手。它做三件事:用 SSH(私鑰或密碼)連上遠程主機;選出一個遠程目錄作爲工作區;用 rw_* 工具操作這個目錄,同時通過 SFTP 把它鏡像成本地真實目錄,讓 DSH 原生工作區可以收養。
插件聲明爲普通 bundle,不改 dsh-workspace 核心。package.json 裏的客戶端注入目標是 @deepseek-ai/dsh-client-runtime 和 @deepseek-ai/dsh-client-ui-workspace,platform 爲 web,對等依賴對齊 DeepSeek Harness ^0.1.0-rc.6。也就是說,它是給 Web 界面用的遠程工作區插件,不是把 harness 整機搬到遠端去跑。
核心功能¶
倉庫 README 和當前 lib/index.js 對得上的能力如下。
1、多機 SSH 登記。設置頁有「遠程工作區」:可以增刪改多臺主機(host / port / user,認證用私鑰或密碼),並設當前機。密碼只存在本機,界面不回顯。保存前可以用「測試連接」驗證 host、用戶和憑據是否可用。
2、雙 tab 工作區選擇器。它填充原生「Add workspace / 選擇工作區」流程,居中彈窗,默認落在「本機」:
- 本機:走 host 端系統文件夾對話框,或直接輸入本地路徑,得到普通 DSH 本地工作區,和遠程工作區可以共存。
- 遠程:先選機器,路徑框預填 / 並即時補全目錄;點選一層立刻列出下一級,類似系統文件選擇或 VS Code。另有「瀏覽…」浮層,選中只回填輸入框,不直接提交,複覈後再點「設爲遠程工作區」。
3、本地鏡像 + 雙向 SFTP。確認遠程目錄後,插件會在本機創建真實鏡像目錄(README 寫在 ~/.dsh/remote-workspaces/ 下),fs.realpath 能通過,harness 把它當普通工作區收養。rw_sync 從遠程拉到鏡像,rw_push 把鏡像改動推回去。當前實現裏,rw_sync 默認深度 5、最多 500 個文件(深度上限 8,文件上限 2000);rw_push 同樣有文件數上限。大倉庫不要默認成「整庫無損同步」。
4、給模型用的 rw_* 工具,當前註冊這些名字:
| 工具 | 作用 |
|---|---|
rw_info |
查看當前主機、工作區和連通狀態 |
rw_connect |
按 host / user / 端口 / 憑據建立 SSH |
rw_pick_workspace |
把某個絕對路徑設爲遠程工作根,並創建本地鏡像 |
rw_list_dir |
列出遠程目錄(省略 path 時列當前工作區) |
rw_read_file |
按行號分頁讀遠程文本文件 |
rw_write_file |
直接創建或覆蓋遠程文件,默認補齊父目錄 |
rw_exec |
在遠程執行 shell 命令 |
rw_sync |
遠程 → 本地鏡像 |
rw_push |
本地鏡像 → 遠程 |
rw_disconnect |
關閉當前 SSH 連接 |
單個文件改動不必先改鏡像再 rw_push:rw_write_file 會走 SFTP 直接寫遠端。當前 user@host:/path 還會注入系統提示,讓 Agent 知道工作根。源碼裏還註冊了斜槓命令 /remote,用來查看連接狀態。
5、憑據不再偷偷讀默認私鑰。CHANGELOG 0.5.5 寫明:不再隱式讀取 ~/.ssh/id_rsa。當前源碼也一致——privateKeyPath 只有顯式給出纔會用;既沒有密碼、也沒有私鑰路徑時,連接會失敗並提示 no credentials: set a password or a privateKeyPath to connect。README 配置表裏仍寫着「空則默認 ~/.ssh/id_rsa」,和 0.5.5 之後的行爲不一致,以源碼和 CHANGELOG 爲準。
安裝與啓用¶
社區目錄頁給出的安裝命令是:
dsh plugin add github:flymysql/dsh-remote
目錄同時說明:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼;需要可復現安裝時,應固定 commit 哈希:
dsh plugin add github:flymysql/dsh-remote#<commit>
把 <commit> 換成倉庫裏實際的提交哈希,不要留佔位符。
倉庫 README 還寫了 npm bundle 和指定 profile 的寫法。這個插件的客戶端只聲明瞭 web,實際使用時一般裝進 web profile:
dsh plugin --profile web add dsh-remote
dsh plugin --profile web list
dsh --profile web
dsh 不在 PATH 時,可以用:
npx --yes @deepseek-ai/dsh plugin --profile web add dsh-remote
npx --yes @deepseek-ai/dsh --profile web
Web 界面默認是 http://127.0.0.1:3080 。啓動成功後,設置裏會出現「遠程工作區」;「Add workspace」會帶「本機 / 遠程」兩個 tab。
也可以 npm install dsh-remote,再在 cordis.patch.yml 里加入 - id: dsh-remote / name: dsh-remote。開發迭代時,README 允許把本地檢出目錄 add 進 profile,測完再用 dsh plugin --profile web remove dsh-remote 回到發行版。
典型用法¶
下面按倉庫「快速上手」來,不額外編場景。
1、加一臺機器。打開設置 → 遠程工作區,填寫 host、port、user,以及密碼或私鑰路徑,可選設爲當前機。保存前先點「測試連接」。
2、選工作區。在側邊欄或會話裏點 Add workspace:
- 本機:系統文件夾選擇,或輸入本地路徑。
- 遠程:選機器,瀏覽到目標目錄(或直接輸入絕對路徑),點「設爲遠程工作區」。插件會創建並收養本地鏡像。
3、讓 Agent 在遠程幹活。把它當普通工作區用,例如:
rw_list_dir(path?)
rw_read_file(path, startLine?, endLine?)
rw_write_file(path, content)
rw_exec(command)
rw_sync / rw_push
rw_pick_workspace 要求絕對目錄,且遠端必須已經是目錄;設好之後提示裏會給出本地鏡像路徑,並建議先 rw_sync 把文件拉下來。rw_read_file 默認最多 2000 行,可用 startLine / endLine 分頁。rw_exec 在遠程跑構建、測試、grep 這類不是讀文件的操作,輸出有上限(配置項 maxOutputChars,默認 200000)。
如果希望啓動時就帶一臺默認機,可在 cordis.patch.yml 裏寫配置。下面是 README 的示例,主機用的是文檔保留地址,請換成自己的機器;privateKeyPath 必須顯式給出,或改用 password:
# 示例:請換成你自己的機器
- id: dsh-remote
name: dsh-remote
config:
host: 203.0.113.10
port: 22
username: dev
privateKeyPath: ~/.ssh/id_rsa
# 或用密碼登錄:
# password: '…'
workspace: ~/project
host 爲空時,插件啓動處於斷開狀態,到 UI 裏再配機器即可。當前源碼裏還能看到這些配置鍵:passphrase(加密私鑰口令)、commandTimeoutMs(默認 20000)、connectTimeoutMs(默認 15000)、maxOutputChars(默認 200000)。密碼非空時走密碼認證,不再讀私鑰。
適用場景與注意事項¶
適合已經在用 DSH Web 界面、代碼或構建環境在 SSH 可達主機上的人:開發機、跳板後的業務機、實驗室服務器都可以。它解決的是「harness 留在本機環回、工作目錄在遠端」這件事,並讓 Agent 用同一套工作區流程去列目錄、改文件、跑命令。
使用前注意這幾條,都來自目錄頁、README 和當前源碼,不是推測:
1、權限與安裝安全。插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前應檢查源代碼倉庫和許可證。本插件是 MIT,源碼在 https://github.com/flymysql/dsh-remote 。
2、把憑據交給插件,等於允許 Agent 以你的用戶身份在那臺機器上執行 shell。只添加你信任的主機。密碼保存在本機文件裏,按敏感數據對待,必要時收緊文件 ACL。能用私鑰就不要把密碼寫進配置;私鑰路徑也要自己顯式指定。
3、同步是有界的。rw_sync / rw_push 有深度和文件數上限,不是無限鏡像。超大倉庫、大量二進制文件不要默認「一次拉全」。單文件修改優先 rw_write_file。
4、Web 專用。客戶端 platform 爲 web,對等依賴是 DSH 0.1.0-rc.6 這一代包。TUI 或其他 profile 是否可用,倉庫沒有寫成支持聲明。
5、同名插件不要混。社區裏還有 dsh-remote-ssh、dsh-ssh、dsh-remote-ide 等同樣走 SSH 的插件,實現方式和目標不一樣。本文只對應 flymysql/dsh-remote。
6、近期有過啓動迴歸。CHANGELOG 寫明 0.5.5 / 0.5.6 曾把工具 schema 改成 DSH 值 schema DSL 不接受的形式,導致裝了插件後 dsh web 起不來;0.5.7(2026-08-15)已改回葉子屬性上的 required: true。新裝請確認拿到的是 0.5.7 或之後的版本。
小結¶
DSH 把 Web 界面釘在本機環回,是安全默認值;dsh-remote 不改這個默認值,而是讓你從本機連出,把遠程目錄收成一個可被 harness 收養的工作區,再用 rw_* 工具在遠端讀、寫、執行。維護者是 flymysql,MIT 開源,當前版本 0.5.7。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-remote/
GitHub:https://github.com/flymysql/dsh-remote
npm:https://www.npmjs.com/package/dsh-remote