DSH (DeepSeek Harness) 的核心設計理念之一是插件化。當需要在遠程服務器進行開發,但又希望保持本地會話、Web GUI 和 $DSH_HOME 不變時,傳統的 SSH 工具鏈往往無法滿足這種“本地控制、遠程執行”的集成需求。
dsh-remote-ssh 正是爲了解決這個問題。它是一個 DSH 插件,允許你將工作空間的文件 I/O 和命令執行轉移到 SSH 目標主機上,同時保持會話管理、Web GUI 和本地配置在當前機器運行。
核心能力¶
該插件提供以下功能:
- SSH 連接管理器:在 Web GUI 中添加、測試或移除連接。支持密碼、私鑰、SSH Agent 以及 ProxyJump 鏈式跳轉。
- 遠程目錄瀏覽器:在 GUI 中瀏覽目標主機的目錄樹,並將任意目錄“收養”爲工作空間。
- 按會話路由:會話的工作目錄決定其運行的主機。
ssh://<id>/<path>與其本地佔位符等價,允許多個遠程主機並行運行。 - 遠程文件系統與子進程(全模式):在運行時上下文中,
ctx.fs和ctx.subprocess指向遠程主機。Git 操作、測試、構建、讀寫文件均在遠程執行。 - 智能代理引導:內置代理引導,運行時會話會在上下文中聲明當前所在機器。提供
ssh_exec/ssh_route_status等接口以及DSH_SSH_*環境變量,避免路徑誤判或“空項目鏡像”。 - 憑證本地化:密碼和身份密鑰僅保存在本地機器的 DSH Home 中。
安裝與啓用¶
環境要求¶
- 本地環境:Node.js >= 22.0.0
- 目標主機:已安裝
python3和bash
安裝命令¶
注意:不要直接運行 dsh plugin add dsh-remote-ssh,該名稱會解析到不同的作者,並非此插件。
請使用以下命令從 GitHub 倉庫安裝:
dsh plugin --profile web add github:aijunjiang/dsh-remote-ssh
首次安裝注意事項(pnpm 11)¶
ssh2 和 cpu-features 是原生模塊,pnpm 11 默認會阻止其構建腳本。首次安裝時可能會遇到構建錯誤。
- 進入 Web 配置目錄:
cd ~/.dsh/profiles/web
- 編輯
pnpm-workspace.yaml,在allowBuilds下添加:
allowBuilds:
cpu-features: true
ssh2: true
- 運行
pnpm install重新構建:
pnpm install
- 重新運行安裝命令以完成註冊。
使用方法¶
- 添加遠程連接:打開 Web GUI 的側邊欄“工作空間”面板,點擊“添加工作空間”。在目錄選擇器中點擊“+”按鈕,填寫目標主機信息(主機/別名、端口、用戶、認證方式、ProxyJump 等)。
- 瀏覽與收養:保存連接後,GUI 會直接展示遠程目錄樹。選擇一個目錄並打開,將其設爲當前工作空間。
- 啓動會話:在工作空間中啓動會話。會話將路由至該遠程主機,文件和命令將在遠程執行。
- 運行時接口:在會話的運行時上下文中,可以直接使用
ssh_exec或ssh_route_status來與遠程主機交互。 - 啓動 GUI:使用
pnpm dsh web啓動插件提供的 Web 用戶層。
補充說明¶
- UI 增強補丁:插件目錄下包含
harness-patches/,這是一組可選的 UI 增強補丁(如工作區標題後綴home · root@…和任務列表的 Stop 按鈕)。這些補丁通過git apply應用到 harness 源碼中,不影響核心路由功能,但依賴 DSH 基線版本兼容。 - 兼容性:當前版本(v0.3.3)要求 DSH 基線版本爲
0.1.5-rc.1。
總結¶
dsh-remote-ssh 解決了 DeepSeek Harness 環境下遠程開發路徑過長、憑證管理分散的問題。它通過 SSH 協議將執行上下文“搬運”到遠程,同時保留了本地開發工具鏈的便利性,適合需要在遠程服務器上運行 CI/CD、測試或構建任務的場景。