DSH 的插件化生態允許用戶根據需求擴展功能。在本地開發之外,直接操作遠程機器通常需要手動配置 SSH 連接、管理 Worktree,且本地工具無法直接作用於遠程文件系統。dsh-remote-workspace 插件解決了這個問題,它接管了 Harness 的文件、Shell 和終端工具,將它們路由到遠程目錄,並在側邊欄提供終端管理入口。
插件介紹¶
插件名稱:@lengmoxxl/dsh-remote-workspace
維護者:lengmoXXL
開源協議:MIT
這個插件通過 SSH 協議連接遠程機器,並在目標機器上運行一個自安裝的代理。它不僅管理遠程倉庫和工作樹,還允許你在 Harness 界面中像操作本地項目一樣操作遠程項目,包括執行命令、讀寫文件和打開終端。
核心功能¶
該插件提供了以下能力:
- SSH 連接管理:通過 SSH 目標地址和令牌添加機器,無需在目標機器上手動安裝軟件。代理會自動下載、校驗並更新自己。
- 倉庫與工作樹管理:可以註冊任意目錄作爲倉庫(無需 Git),創建、切換或刪除工作樹。
- 工具路由:將 Harness 的文件系統 (
ctx.fs)、子進程 (ctx.subprocess)、Shell (ctx.shell) 和終端 (ctx.tty) 工具路由到遠程機器。 - 側邊欄終端:在右側側邊欄添加終端標籤頁,並支持列出或重新連接到遠程機器上正在運行的 Shell。
- PTC 程序執行:支持在遠程機器上運行 PTC 程序 (
run_code),程序通過插件提供的 V8 引擎運行,不依賴目標機器的 Node.js 環境。 - 網絡限制:出站網絡訪問僅限於 GitHub Releases 下載和 SSH 連接。
安裝與啓用¶
在安裝前,請確保你的環境滿足要求:Node.js 版本爲 22.19+ 或 24+,DSH 版本爲 0.1.6-alpha.2(兼容 0.1.7-rc.1 和 0.1.7-rc.2)。
1. 安裝插件
使用以下命令安裝插件:
dsh plugin --profile web add @lengmoxxl/dsh-remote-workspace
2. 配置兼容性
安裝後,插件需要接管基礎配置文件中的服務提供者。你需要修改配置文件 $DSH_HOME/profiles/web/cordis.patch.yml,禁用以下四個默認提供者:
- id: subprocess
disabled: true
- id: fs-sandbox
disabled: true
- id: bash-sandbox
disabled: true
- id: pwsh-sandbox
disabled: true
禁用這些提供者後,啓動 Profile:dsh --profile web。此時插件會接管文件、Shell 和終端的路由邏輯。
典型用法¶
1. 添加遠程機器
進入 Settings → Remote workspaces。添加一臺機器,需要填寫 SSH 目標地址和一個 Token(任意字符串,作爲 daemon 的共享密鑰)。
2. 管理倉庫與工作樹
註冊一個倉庫後,在列表中右鍵點擊該倉庫,可以使用菜單打開、關閉或移除工作樹。
3. 管理終端
- 查看與連接:在右側側邊欄的終端按鈕中,可以列出當前 Session 的所有活動 Shell,包括刷新頁面後斷開的 Shell。
- 創建新 Shell:點擊終端按鈕可以選擇創建新的 Shell,或使用狀態欄的 “Manage terminals” 打開第二個標籤頁,在那裏可以快速選擇並打開一個新的 Shell。
- 結束 Shell:只有在 “Manage terminals” 面板中點擊關閉控制,才能真正結束一個 Shell 進程;關閉標籤頁只是將其隱藏或標記爲 detached。
適用場景與注意¶
該插件採用高權限設計,它會以註冊機器的 SSH 賬戶身份運行命令、打開終端並讀寫文件。這意味着任何持有機器 Token 且能訪問迴環端口 (127.0.0.1) 的人都可以模擬該賬戶。
環境依賴:
* 操作系統:插件代理和 PTC 主機僅支持 Linux 和 macOS 的 x86_64 架構。
* 網絡:目標機器需要允許 SSH 端口轉發 (-L),且僅允許訪問 GitHub Releases 和 SSH 連接。
安全提示:
由於插件會禁用默認的沙箱提供者 (subprocess, fs-sandbox, bash-sandbox, pwsh-sandbox),請務必在安裝前檢查源碼與許可證,確認其安全性。
總結¶
dsh-remote-workspace 爲 DSH 用戶提供了統一的遠程開發入口。它通過 SSH 代理和工具路由,將本地開發體驗延伸到了遠程機器,適合需要集中管理多臺服務器或進行分佈式開發的場景。