前言¶
在 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