dsh-remote:把 SSH 主機接進 DeepSeek Harness 工作區

前言

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 體檢與部署」:

  1. 體檢(只讀):平臺、node/npm/dsh 版本、原生模塊能否啓動、代理與 npm 源等,不寫遠端。
  2. 部署並驗證(0.8.40+ 可直接點,不必先體檢):裝到遠端私有目錄(默認 ~/.dsh-remote/dsh),不寫系統目錄、不改 PATH;刪除目錄即可回滾。成功後按機器記住 dsh 路徑。
  3. 失敗時可使用內置 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 快速上手三步走:

  1. 加一臺機器 —— 設置 → 遠程工作區 → 填寫 host/port/user 與密碼或 key → 設爲當前。(保存不等於激活,只有「設爲當前」或 Agent 調用 rw_connect 才進入 remote context。)
  2. 選工作區 —— Add workspace:本機 tab 爲本地目錄;遠程 tab 選機器並瀏覽到目錄 →「設爲遠程工作區」。
  3. 讓 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。

羽毛球分组比赛记分
小程序二维码

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

小夜