DeepSeek Harness 插件:通過 SSH 運行遠程工作空間

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 默認會阻止其構建腳本。首次安裝時可能會遇到構建錯誤。

  1. 進入 Web 配置目錄:
    cd ~/.dsh/profiles/web
  1. 編輯 pnpm-workspace.yaml,在 allowBuilds 下添加:
    allowBuilds:
      cpu-features: true
      ssh2: true
  1. 運行 pnpm install 重新構建:
    pnpm install
  1. 重新運行安裝命令以完成註冊。

使用方法

  1. 添加遠程連接:打開 Web GUI 的側邊欄“工作空間”面板,點擊“添加工作空間”。在目錄選擇器中點擊“+”按鈕,填寫目標主機信息(主機/別名、端口、用戶、認證方式、ProxyJump 等)。
  2. 瀏覽與收養:保存連接後,GUI 會直接展示遠程目錄樹。選擇一個目錄並打開,將其設爲當前工作空間。
  3. 啓動會話:在工作空間中啓動會話。會話將路由至該遠程主機,文件和命令將在遠程執行。
  4. 運行時接口:在會話的運行時上下文中,可以直接使用 ssh_exec 或 ssh_route_status 來與遠程主機交互。
  5. 啓動 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、測試或構建任務的場景。

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

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

小夜