dsh-cockpit-worktree-open-shim:把遠程 Worktree 的「打開編輯器」接到正確機器上

前言

在 DSH(DeepSeek Harness)裏跑 Worktree Session 時,如果 worktree 不在本地而是在一臺遠程機器上,點「在編輯器中打開」往往只會得到一個本機的 vscode://file/ 鏈接,瀏覽器或編輯器打開後根本訪問不到那個 worktree。本機和遠端路徑不一致,這個動作形同虛設。

下面介紹的插件 dsh-cockpit-worktree-open-shim 就是用來堵住這個缺口的。它不負責真正打開編輯器,而是做一層部署側適配:把 dsh-cockpit-bridge 提供的遠程編輯器能力註冊進 dsh-worktree-session 的通用 open-behaviour 擴展點,讓「打開」落到正確的機器上,而不是退回本地 URI。

這是什麼

一個部署側適配器(deployment-local adapter)。維護者是 prgrmrwy,源碼託管在 ohmydsh 的 packages/cockpit-worktree-open-shim,dsh-cockpit-worktree-open-shim 這個倉庫是發佈鏡像,採用 MIT License,當前版本 0.1.0。

它解決的連接問題可以畫成這樣:

dsh-cockpit-bridge ──provide──▶ shim ──register──▶ dsh-worktree-session
  不知道 ws 的存在                      不知道 cockpit 的存在

兩端互不引用,耦合只存在於這個 shim 裏。這保證了兩側可以各自獨立升級,也可以把 shim 整體移除。

核心功能

只做一件事:在運行時觀察兩個服務是否出現,出現就把 worktree 的絕對路徑原樣轉發給 bridge。

  1. 沒有頂層 inject;運行時監聽兩個服務的加載與卸載,因此加載順序不受限制。
  2. 通過完整點分名讀取 bridge 服務:ctx.get('cockpitBridge.editorOpen');ctx.get('cockpitBridge').editorOpen 這種寫法是禁止的。
  3. 只轉發 worktree 的絕對路徑,不校驗、不改寫、不保存狀態、不重試。
  4. 任一端缺失或未加載時 shim 處於惰性狀態,Worktree Session 自動回退到默認的 vscode://file/ 行爲。

它連接的兩處接口分別是 dsh-cockpit-bridge 的 cockpitBridge.editorOpen 服務,和 dsh-worktree-session 的 worktreeSession.openHandler 擴展點。

安裝與啓用

安裝命令來自 README。它要求同時安裝兩端:dsh-cockpit-bridge >= 0.4.0(以 GitHub Release tarball 分發)和 dsh-worktree-session。下面這條是 README 中給出的示例,bridge 固定爲 0.6.4。

dsh plugin --profile web add https://github.com/prgrmrwy/dsh-cockpit/releases/download/dsh-cockpit-bridge-v0.6.4/dsh-cockpit-bridge-0.6.4.tgz
dsh plugin --profile web add dsh-cockpit-worktree-open-shim

裝完重啓 DSH web 生效。卸載用對應命令:

dsh plugin --profile web remove dsh-cockpit-worktree-open-shim

典型用法

裝好之後不需要額外配置即可工作。在 Worktree Session 裏點擊「在編輯器中打開」,實際發生的是:

  1. Worktree Session 調用自己側的 open-handler 擴展點;
  2. shim 拿到 worktree 的絕對路徑;
  3. shim 把路徑交給 cockpitBridge.editorOpen 服務,由它在遠程機器上喚起 VS Code。

停機時按 README 的步驟移除即可:在 dsh.yaml 中刪除或禁用 cockpit-worktree-open-shim,執行 dsh build,再重啓 DSH web。移除之後:

  • Worktree Session 回到默認的 vscode://file/ 行爲;
  • 既有的 dsh-cockpit-bridge 能力(如 session read-confirmation、pending snapshot)不受影響;
  • 兩端都不需要進行任何源碼或配置遷移。

適用場景與注意

適合已經在用 dsh-cockpit 遠程編輯器、同時使用 Worktree Session 的部署。雙方都裝好後,這一步纔有意義;如果只用其一,可以先不裝。

需要注意的幾點:

  1. 運行時權限等同當前 DSH 進程,安裝前應自行檢查源碼與許可證。
  2. bridge 版本需 >= 0.4.0,本倉庫當前固定爲 0.6.4;版本過低不提供該服務,shim 會靜默地什麼都不做,不會有報錯。
  3. 主機上需安裝 VS Code Remote-SSH,並能通過 Cockpit device 註冊的 SSH config alias 連到目標設備。
  4. 沒有 Remote-SSH 時,URI 可能被靜默丟棄;目錄名中若含點號,可能被 VS Code 的 URI handler 當作文件處理。

結尾

這個插件的價值在於「不猜、不越界」:它只做一次路徑轉發,把遠端編輯器的能力補進通用的 open-handler,平時不感知兩端的存在。當你不再需要 dsh-cockpit 遠程編輯器,或某一端原生實現了這套集成時,直接移除即可,不留遷移負擔。

目錄頁:https://www.skillhub.cn/plugins/prgrmrwy/dsh-cockpit-worktree-open-shim
GitHub:https://github.com/prgrmrwy/dsh-cockpit-worktree-open-shim

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

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

小夜