在 DeepSeek Harness(DSH)Web 界面中,点击文件路径通常会被插件内部逻辑拦截,导致页面跳转而非打开本地文件。dsh-client-open-in-vscode 修改了这一行为,通过拦截点击事件并调用宿主侧的 VS Code CLI,将文件在已匹配的 VS Code 窗口中打开。
插件简介¶
这是一个由 quei4r 开发的 DSH 客户端插件。它运行在 DSH Web Profile 的上下文中,利用 HTTP 请求与宿主进程通信,实现从浏览器 UI 到本地编辑器的跳转。
安装与启用¶
安装需要手动将包放入 Web Profile 的目录,并修改配置文件。
- 复制插件包到 Web Profile 的 node_modules 目录:
cp -r dsh-client-open-in-vscode ~/.dsh/profiles/web/node_modules/
- 编辑
~/.dsh/profiles/web/cordis.patch.yml,加入以下配置:
- insert:
- id: ui-open-in-vscode
name: dsh-client-open-in-vscode
- 重启
dsh web。
注意:插件的 Host 半需要在启动时注册 HTTP 路由,仅刷新页面不足以生效。
核心功能¶
插件主要拦截以下 UI 元素的点击事件,并执行相应的打开逻辑:
- 捕获范围:捕获工具卡片中的路径、产物 chips、以及正文里的文件提及链接。
- Edit/Write 行为:点击文件变更行(Edit/Write 等)的路径时,会尝试重建该次编辑的全文件 diff 并打开。插件通过
git apply的逆向逻辑,尝试使用磁盘当前文件或 git HEAD 版本作为基底重建全文。 - 多窗口路由:点击文件时,系统会按以下顺序匹配 VS Code 窗口:
- 按
remote authority过滤(优先连接到同一主机/本地的窗口); - 判断文件的绝对路径落在哪个已打开工作区文件夹内;
- 若存在多个匹配,优先选择路径最深的工作区窗口;
- 若都不匹配,回退到同 authority 的最近活跃窗口。
- 按
- 绕过机制:支持
Alt+点击以绕过拦截,走产品原逻辑。 - 安全信任闸门:路由请求必须通过信任校验,要求 Host 为 loopback、
Sec-Fetch-Site为 cross-site,且携带的Origin必须与 Host 一致。这防止了其他网站通过网页借机触发本机 VS Code 打开文件。
典型用法¶
- 点击打开文件:在聊天 UI 中点击工具卡片或正文中的文件路径,系统会自动在匹配的 VS Code 窗口中打开该文件。
- 查看变更 Diff:点击 Edit/Write 行中的路径,查看该次编辑生成的全文件差异对比。
- 查看原逻辑:按住
Alt键点击文件路径,可以查看产品原本的导航逻辑。
注意事项¶
- 环境要求:系统 PATH 中必须有
codeCLI,且宿主进程所在的桌面会话(X11/Wayland)允许拉起 GUI 窗口。 - 协议限制:插件不使用
vscode://file/...协议,避免在 DSH GUI 常跑在的 VS Code webview 环境中导致黑屏。 - 兼容性:该插件随
@deepseek-ai/dsh0.1.0-rc.6 的 web profile 测试通过。 - 临时文件:用于 Diff 对比的临时文件会在 10 分钟后自动清理。
- 源码审查:插件以当前 DSH 进程权限运行,建议在安装前检查源码与许可证。
总结¶
该插件解决了 DSH Web 界面与本地 VS Code 工作流割裂的问题。通过精确的路由匹配和信任闸门设计,它能在不破坏现有 UI 交互的前提下,实现文件在本地编辑器的无缝跳转。更多细节可参考 GitHub 仓库 或 DSH 生态目录。