前言¶
在 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。
- 沒有頂層
inject;運行時監聽兩個服務的加載與卸載,因此加載順序不受限制。 - 通過完整點分名讀取 bridge 服務:
ctx.get('cockpitBridge.editorOpen');ctx.get('cockpitBridge').editorOpen這種寫法是禁止的。 - 只轉發 worktree 的絕對路徑,不校驗、不改寫、不保存狀態、不重試。
- 任一端缺失或未加載時 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 裏點擊「在編輯器中打開」,實際發生的是:
- Worktree Session 調用自己側的 open-handler 擴展點;
- shim 拿到 worktree 的絕對路徑;
- 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 的部署。雙方都裝好後,這一步纔有意義;如果只用其一,可以先不裝。
需要注意的幾點:
- 運行時權限等同當前 DSH 進程,安裝前應自行檢查源碼與許可證。
- bridge 版本需
>= 0.4.0,本倉庫當前固定爲 0.6.4;版本過低不提供該服務,shim 會靜默地什麼都不做,不會有報錯。 - 主機上需安裝 VS Code Remote-SSH,並能通過 Cockpit device 註冊的 SSH config alias 連到目標設備。
- 沒有 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