前言¶
DeepSeek Harness(DSH)的 Web 界面默認只監聽 127.0.0.1,CLI 也會拒絕 --host 0.0.0.0,這是有意避免把遠程代碼執行能力暴露到公網。日常開發裏卻常見另一套需求:代碼和構建在機房或內網機器上,Agent 要在遠端列目錄、改文件、跑命令,又不想 fork 一套「遠程專用」工具鏈,或改 dsh-workspace 核心。
下面介紹 dsh-remote:以插件形式維護多臺 SSH 機器,在 Harness 裏選「遠程工作區」時創建本地鏡像並由 SFTP 同步,Agent 可沿用工作區與文件流;連不上時還有隻讀體檢與一鍵部署到遠端私有目錄。本文事實來自 GitHub README 與 npm 包 dsh-remote@0.8.54 的 package.json。
這是什麼¶
dsh-remote 是面向 DeepSeek Harness 的遠程工作助手(npm 包名 dsh-remote,許可證 MIT)。README 標明由 @flymysql 維護,倉庫主頁爲 github.com/flymysql/dsh-remote。
定位可以概括成:由本機主動 SSH 連出到你維護的機器,選定目錄後 Harness 收養一個真實的本地鏡像工作區,讀寫與命令在遠端執行;不改動 dsh-workspace 官方代碼。包描述中還提到可選的 transparent mode:在啓用時把標準 DSH 工具路由到遠程鏡像(與 legacy 的 rw_* 工具並存,具體開關以插件設置與文檔爲準)。
核心功能¶
遠程工作區與三路同步¶
- 設置 → 遠程工作區:多機列表、密碼或密鑰、高級項(私鑰、跳板機、agent 等)。
- 原生 Add workspace / 選擇工作區 彈窗有兩個 tab,默認「本機」;切到 「遠程」 後選機器、瀏覽或輸入路徑,點「設爲遠程工作區」會創建本地鏡像並持久化到該機器。
- 路徑框支持實時補全;Windows 遠端根級有多盤視圖;確定後通過 SFTP 保持同步。
- 機器清單與鏡像數據在
$DSH_HOME/remote-workspaces;0.6 之前的數據首次啓動會自動遷移。
legacy 模式:22 個 rw_* 工具¶
便於複製與檢索的完整列表:rw_info、rw_connect、rw_machines、rw_pick_workspace、rw_list_dir、rw_stat、rw_read_file、rw_write_file、rw_edit、rw_append、rw_mkdir、rw_remove、rw_move、rw_exec、rw_search、rw_download、rw_upload、rw_sync、rw_push、rw_forward、rw_disconnect、rw_deploy_probe。
Remote context 是會話級的:只有當前 session 的工作區落在某個遠程鏡像路徑下時,system prompt 纔會注入「Remote workspace」;普通本地會話不會被動調用 rw_*。
會話與會話標識¶
DSH 0.8.43+ 起,會話列表區分本地/遠程:遠程會話行首有綠點,懸停顯示 user@host:port 與遠端路徑;打開後標題欄常顯主機標籤。判定依據是會話 cwd 是否在 $DSH_HOME/remote-workspaces/… 鏡像內。
在本機打開遠端 DSH Web 界面¶
0.8.36+:無需在遠端開放端口。插件 SSH 到遠端,在 127.0.0.1 上啓動 dsh web,經隧道映射到本機 loopback 端口。用法:設置 → 遠程工作區 → 「遠程 DSH 界面」 → 選機器 → 連接並打開。地址形如 http://127.0.0.1:3088/?token=…,token 爲一次性憑據,請勿外發。
遠端 Node 需 ≥ 20.12(node:util 的 parseEnv 從該版本起可用);過舊時體檢會報 blocker。
體檢與一鍵部署¶
連不上時 README 強調:多數情況是遠端 dsh 版本或環境不對,而非插件本身。設置 → 「遠端 dsh 體檢與部署」:
- 體檢(只讀):平臺、node/npm/dsh 版本、原生模塊能否啓動、代理與 npm 源等,不寫遠端。
- 部署並驗證(
0.8.40+可直接點,不必先體檢):裝到遠端私有目錄(默認~/.dsh-remote/dsh),不寫系統目錄、不改 PATH;刪除目錄即可回滾。成功後按機器記住 dsh 路徑。 - 失敗時可使用內置
dsh-remote-deploy技能排查(需主動觸發,會消耗模型額度)。
相關配置包括 webInstallPrefix、webInstallVersion(默認 0.1.5-rc.2)、webInstallRegistry(留空則沿用遠端 npm 配置)。
連接與其它能力¶
~/.ssh/config爲連接四字段的主要來源(0.8.50+):保存機器時寫入帶# dsh-remote: managed的受管塊,不覆蓋你手寫的同名 Host;改文件後立即生效。- 文件訪問走 SFTP,支持 Linux/macOS/Windows 遠端;Windows 命令經 Git Bash 的
bash -s執行,config.shell可定製。 - 長任務:
rw_sync/rw_push傳async: true返回taskId,可查進度或取消。 - 端口轉發、安全審計、側欄編輯、自動更新等見 README 功能總覽圖與設置頁。
自 v0.8.18 起,Web 側邊欄 dsh-better-sidebar 爲可選;不裝時 rw_*、設置頁、同步、審計與轉發仍可用。
安裝與啓用¶
DSH 在導入 bundle 前會校驗 @deepseek-ai/dsh-* 的 peer 範圍;不匹配則整包丟棄。本插件要求 DSH >=0.1.0-rc.6 <0.3.0(自 0.8.29 起跨 0.1.x / 0.2.x 線;低於 0.8.29 請先升級插件再升 DSH)。
官方 Web bundle 安裝命令:
dsh plugin add dsh-remote
也可 npm install dsh-remote,並在 cordis.patch.yml 增加 - id: dsh-remote / name: dsh-remote。
插件以當前 DSH 進程權限運行;安裝前請自行查看倉庫源碼與 MIT 許可證,確認符合你的安全策略。
典型用法¶
經過上面的安裝,可按 README 快速上手三步走:
- 加一臺機器 —— 設置 → 遠程工作區 → 填寫 host/port/user 與密碼或 key → 設爲當前。(保存不等於激活,只有「設爲當前」或 Agent 調用
rw_connect才進入 remote context。) - 選工作區 —— Add workspace:本機 tab 爲本地目錄;遠程 tab 選機器並瀏覽到目錄 →「設爲遠程工作區」。
- 讓 Agent 工作 —— 像普通工作區一樣使用;遠程鏡像會話下可用
rw_read_file、rw_write_file、rw_edit、rw_exec、rw_search、rw_sync、rw_push、rw_forward等(完整列表見上文)。
可選:在 cordis.patch.yml 爲插件配置默認機等(示例見 README「可選:CLI 默認機」)。
適用場景與注意¶
適合誰:需要在 Harness 裏統一操作多臺 SSH 開發機或內網主機;希望 Agent 在遠端跑構建/命令,同時保留本地鏡像工作區體驗;或要在本機瀏覽器裏通過隧道使用遠端 dsh web 而不暴露遠端端口。
注意:
- 與官方 Desktop 的適配 README 標爲實驗性,非 macOS 宿主等場景仍可能不完整。
- 遠程 DSH 界面、部署與
rw_exec均在遠端執行代碼,務必限制可連主機與賬號權限。 - 社區目錄頁(如 skillhub.cn 上的插件條目)爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;技術細節以 npm 與 GitHub 倉庫爲準。
結尾¶
dsh-remote 把「連出去、選目錄、鏡像同步、可選隧道打開遠端 Web」收進一個 DSH 插件,在不改 workspace 核心的前提下擴展遠程開發。進一步瞭解可打開目錄頁 skillhub.cn/plugins/ZeaoZhang/dsh-remote 與源碼倉庫 github.com/flymysql/dsh-remote。