在 DeepSeek Harness (DSH) 的插件生態中,處理遠程開發環境通常意味着手動通過 SSH 連接或同步本地文件。DSH 插件 dsh-rw 通過引入 Remote-SSH 風格的工作區,讓智能體能夠直接操作遠程文件系統。該插件由 MDR-EX1000 維護,旨在消除本地與遠程環境的割裂。
核心概念¶
dsh-rw 允許選擇一個 SSH 主機和遠程目錄,使其成爲原生的 DSH 工作區。代理通過 rw_* 工具(基於持久 ssh2 連接池的 SFTP/執行)直接在遠程文件系統上工作。遠程目錄是單一真實來源:沒有鏡像,沒有同步。
自 0.4.0 版本起,該插件實現了零配置。
核心功能¶
- 原生遠程工作區選擇器:在 DSH 的“添加工作區”流程中,通過模態框選擇。界面分爲 LOCAL(本地文件夾)和 REMOTE(Codex 風格頁面)。遠程頁面支持從別名下拉菜單選擇、自動填充
~/路徑、實時過濾目錄。 - 語言跟隨 DSH 全局設置:選擇器內的標籤、提示、驗證信息、加載狀態和確認消息均支持中英文,並實時跟隨 DSH 的全局語言設置。
- 從
~/.ssh/config讀取主機:無需額外配置。現有的 SSH 別名會自動顯示,文件變更時自動重讀。密碼認證的主機可通過界面添加,並存儲爲本地 0600 權限文件。 - 真實工作區隔離:所有
rw_*文件路徑均被限制在所選工作區根目錄內。系統會拒絕../、根目錄外的絕對路徑以及符號鏈接轉義。 - SSH 主機密鑰驗證:默認使用
~/.ssh/known_hosts驗證。支持accept-new(首次見密鑰記錄)、strict(嚴格模式)和off(關閉)策略。更改的主機密鑰會被拒絕,不會靜默接受。 - 結構化錯誤:連接被拒、認證失敗、超時、路徑不存在、權限被拒、工作區外訪問及主機密鑰問題均返回獨立錯誤代碼,便於智能體正確處理。
- 連接自愈:使用 ssh2 連接池心跳(15s × 3)檢測斷開連接,通道打開超時默認爲 10s。遇到死連接的操作會自動重試一次,對智能體透明。
- 佔位符而非副本:DSH 註冊的本地目錄是空的佔位符(
.dsh-rw-meta.json記錄來源)。不保存遠程文件內容,因此不存在同步衝突。 - Shim 模式(默認開啓):DSH 的原生工具(
read,write,edit,bash等)會被攔截並翻譯爲遠程執行。智能體無需學習rw_*工具即可像操作本地一樣操作遠程。路徑映射在佔位符和遠程之間雙向進行。設置shim: false可禁用此模式。 - 顯式失敗策略:如果佔位符對應的主機被移除,調用該佔位符的操作會報錯(
NOT_CONNECTED),而不是靜默運行在空本地目錄上。
安裝¶
通過 DSH Market 安裝插件:
dsh plugin --profile web add github:MDR-EX1000/dsh-rw
該倉庫跟蹤編譯後的 lib/ 輸出,因此安裝此源碼不需要本地 TypeScript 工具鏈或構建權限。如果需要精確的發佈包:
dsh plugin --profile web add https://github.com/MDR-EX1000/dsh-rw/releases/latest/download/dsh-rw.tgz
維護說明:由於插件沒有 prepare 等生命週期鉤子,運行時入口點爲提交的 lib/index.js。如果修改源碼,需手動運行 pnpm build 並將生成的 lib/ 提交到 Git。插件依賴的 ssh2 可能會請求 pnpm 對可選原生模塊的權限。
典型用法¶
- 選擇工作區:在側邊欄或對話中選擇“添加工作區” -> “REMOTE”卡片。從
~/.ssh/config選擇主機(或添加密碼認證主機),瀏覽或輸入遠程路徑(默認從~/開始),輸入工作區名稱後使用。 - 常規協作:在 Shim 模式(默認)下,直接告訴智能體修復 bug、運行測試或重構代碼。智能體會自動使用原生工具執行遠程操作。
- 顯式遠程操作:使用
rw_*工具進行特定操作:- 文件操作:
rw_list_dir,rw_read_file,rw_write_file,rw_mkdir,rw_move,rw_delete - 命令執行:
rw_exec(以工作區根目錄爲 CWD) - 會話管理:
rw_hosts,rw_connect,rw_disconnect
- 文件操作:
注意事項¶
- Shim 模式:默認開啓。如需禁用,可在配置文件中設置
shim: false。 - 權限要求:
ssh2依賴要求對可選原生模塊的權限,使用 pnpm 的構建腳本白名單需包含此依賴。 - Git 倉庫:保持
lib/文件夾在 Git 中,以便在src/變更後重新構建。 - 密鑰驗證:SSH 密鑰驗證基於
~/.ssh/known_hosts。
總結¶
dsh-rw 將 SSH 運維工具箱的理念引入 DSH 代理工作區,提供了接近 VS Code Remote-SSH 的體驗。它通過持久連接和自動工具攔截,讓遠程開發環境對智能體而言與本地無異。