DeepSeek Harness (DSH) 插件:dsh-rw(Remote-SSH 風格工作區)

在 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 對可選原生模塊的權限。

典型用法

  1. 選擇工作區:在側邊欄或對話中選擇“添加工作區” -> “REMOTE”卡片。從 ~/.ssh/config 選擇主機(或添加密碼認證主機),瀏覽或輸入遠程路徑(默認從 ~/ 開始),輸入工作區名稱後使用。
  2. 常規協作:在 Shim 模式(默認)下,直接告訴智能體修復 bug、運行測試或重構代碼。智能體會自動使用原生工具執行遠程操作。
  3. 顯式遠程操作:使用 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 的體驗。它通過持久連接和自動工具攔截,讓遠程開發環境對智能體而言與本地無異。

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

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

小夜