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

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

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

小夜