dsh-ssh-remote:面向 DSH 的 OpenSSH 遠程工作區插件

前言

DSH 的插件方式讓客戶端能力可以按需安裝。對於需要遠程機器上的文件、Shell 和終端操作的智能體工作流,常見問題是:遠程 Host 配置分散在 OpenSSH 中,認證、代理、密鑰策略不想複製進插件,同時 DSH 原生工具又需要穩定的遠端執行邊界。dsh-ssh-remote 就是爲這個場景準備的 DeepSeek Harness 插件。它由 CrazyShout 維護,定位是 Codex 風格 SSH 遠程工作區:從本機 OpenSSH 配置發現具體 Host,通過標準「添加工作區」選擇遠端目錄,並把 DSH 原生文件、Shell 和終端操作路由到遠端版本化 helper。

這是什麼

dsh-ssh-remote 是 DSH 的插件。它把遠端工作區的連接事實交給本機 OpenSSH,插件側處理文件、Shell、終端和狀態展示。許可證爲 MIT,GitHub 倉庫爲 https://github.com/CrazyShout/dsh-ssh-remote。

核心功能

下面按能力分列。

  • 從本機 OpenSSH 配置發現具體 Host,並保留原始 Host alias。
  • 使用標準「添加工作區」選擇遠端目錄。
  • 將 DSH 原生文件、Shell 和終端操作路由到遠端版本化 helper。
  • 自動安裝並校驗版本化 helper,不使用 sudo、curl | sh、postinstall 或遠端包管理器。
  • 遠端文件讀取/寫入使用穩定 token、臨時 inode、fsync、版本複覈和原子發佈。
  • 遠端 Shell 與真實遠端 PTY 支持有界輸出和斷線重連繼續讀取。
  • Linux 上 read-only/workspace-write 進程和 PTY 使用 bubblewrap 隔離。
  • 設置頁展示安裝中、連接中、已連接、能力受限、重連中、錯誤等狀態。
  • 舊 DSH host 設置仍可使用加固後的 ssh2/SFTP 兼容路徑。

環境要求

安裝和啓用前,先確認下面這些條件:

  • 本機 Node.js 22 或更高版本。
  • DSH 0.1.1-rc.2 或兼容的更新 0.1.x 版本。
  • ~/.ssh/config 中存在具體 Host alias,且 ssh <alias> 的 batch 連接可用。
  • 遠端是 POSIX 系統,並提供 Python 3.9 或更高版本。
  • Linux 上如啓用 read-only/workspace-write 進程和 PTY 隔離,需要 bubblewrap(bwrap)。

helper 連接固定使用 BatchMode=yes。Web 後臺連接無法回答交互式密碼、PIN、passphrase 或 MFA 提示。

安裝與啓用

從 GitHub 安裝:

dsh plugin --profile web add 'github:CrazyShout/dsh-ssh-remote'

安裝後重啓 dsh web。打開「設置 → SSH Remote」,可以先連接,也可以直接在「添加工作區」中選擇主機。首次連接會自動安裝匹配版本的 helper。

典型用法

1、把 User、Port、代理和認證信息寫在 OpenSSH 配置裏,不要編碼爲 ssh://user@host:port。保留一個具體 Host alias,例如你在本機已經能執行的 ssh devbox。

2、在 Web 使用前先運行一次:

ssh devbox

按你的 OpenSSH 策略覈對新主機指紋。

3、在 DSH 的「添加工作區」中選擇該 Host 和遠端目錄。

4、使用 DSH 的文件、Shell 和終端能力;設置頁會展示當前連接與能力狀態。

適用場景與注意

適合已經在 OpenSSH 中維護遠程 Host、密鑰、證書、agent 或代理策略,並希望把 DSH 的文件、Shell 和終端操作放到遠端執行的團隊或個人。

需要注意:

  • 插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證,並確認 MIT 許可證是否符合你的使用要求。
  • 插件不會修改 ~/.ssh/config、私鑰或 known_hosts。
  • DSH 上游限制:Harness Workspace 必須是真實本地目錄,插件會創建很小的本地 anchor。
  • DSH 上游限制:SubprocessRuntime.spawn() 是同步接口,必須立即返回本機 PID。
  • DSH 上游限制:當前 terminal tool 沒有 resize verb。
  • DSH 上游限制:DSH 歷史、配置、插件和 agent loop 仍運行在本機。
  • DSH 上游限制:listDir() 暫無分頁契約,超過 1000 項的目錄會誠實失敗。
  • 任意不合作的外部 writer 仍可能卡入最後一次檢查到 rename 的極短窗口,能力報告 externalWriterRaceFree: false。

短結尾

dsh-ssh-remote 的價值在於讓 DSH 的遠程工作區繼續使用本機 OpenSSH 的 Host 配置,並把遠端文件、Shell 和終端操作交給版本化 helper 處理。可確認的倉庫地址是:

https://github.com/CrazyShout/dsh-ssh-remote

目錄頁 URL 未在已覈實資料中出現,本文不給出未確認地址。

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

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

小夜