DeepSeek Harness 插件

dsh-client-open-in-vscode

Click a file path in the chat UI to open it in the running VS Code window owning the matching workspace; Edit/Write rows open a diff of that exact change (webview-safe host route behind the(英文原文)

跳到安装方式

来源信息

GitHub 仓库
quei4r/dsh-client-open-in-vscode
最近更新
2026年8月20日
分类
安全与权限
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/quei4r/dsh-client-open-in-vscode
插件名:dsh-client-open-in-vscode
作者:quei4r

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.md来源说明 · 只读预览
README 语言

dsh-client-open-in-vscode

中文 | English

DeepSeek Harness(DSH)Web 界面的插件:点击聊天 UI 里的文件路径,在已打开的、工作区匹配的 VS Code 窗口中打开该文件

功能

捕获阶段拦截以下元素的点击:

UI 元素识别方式
工具卡片路径(Write/Edit/Read 等)button.*_fileLink,文本即路径(可为工作区相对路径,按当前会话 cwd 补全)
「产物」chips[data-produced-files-row] button[title]
正文里的文件提及链接title 为绝对路径的 a/button/[role=link]

命中后 POST /plugin-open-in-vscode → 宿主执行 code --goto --reuse-window <path>,VS Code 内部按工作区归属路由窗口并提到前台。

Edit/Write 行为(v0.6):点击文件变更行(Edit/Write 等)的路径时,打开那次编辑的全文件 diff。原理是 git apply 的逆向:行数据自带该次编辑的前后片段(改动 ± 上下文行),把片段拼回完整文件即得两版全文——先试磁盘当前文件(覆盖未提交与已提交的编辑,已提交的文件本身就含改后文本),再试 git HEAD 版本(覆盖工作区已被还原/改写的编辑);任一基底含片段且唯一命中即重建成功,展示仍走标准 code --diff。重建不出(后续提交改写了同一区域)时回退显示行内片段 diff;运行中/失败的调用因改动尚未落盘也走片段预览。临时文件 10 分钟后清理;无 diff 数据的行(Read/Bash 等)仍为直接打开。

> 历史编辑也能正确显示:已提交的编辑从提交内容里重建(v0.5 的 HEAD-vs-工作区方案对已提交编辑会显示"无更改",已废弃)。多窗口时 diff 两侧均为临时文件,窗口路由回落到同 authority 的最近活跃窗口

多窗口时的路由规则(VS Code 窗口管理器行为):先按 remote authority 过滤候选窗口(只考虑连接到同一主机/本地的窗口),再看文件的绝对路径落在哪个已打开工作区文件夹内——多根 workspace 按根目录声明顺序取第一个命中,多个单文件夹窗口都包含该文件时取路径最深的那个;都不命中时回退到同 authority 的最近活跃窗口。会话 cwd 只用于把相对路径补全成绝对路径,不参与窗口匹配。

  • Alt+点击:绕过拦截,走产品原逻辑
  • 操作后页面底部有 toast 反馈(成功/失败)

安全

路由与框架 /api 同款信任闸门:Host 必须是 loopback(防 DNS rebinding)、Sec-Fetch-Site: cross-site 拒绝、携带 Origin 时必须与 Host 一致(防网页 drive-by POST)。也就是说其它网站无法借你的浏览器触发本机 VS Code 打开文件;路径仅接受绝对路径且不经 shell(execFile 参数数组)。

为什么不用 vscode://file/...

v0.1 用锚点跳转 vscode:// 协议 —— 在真实浏览器里没问题,但 DSH GUI 常跑在 VS Code webview 里,webview 导航到该协议会直接黑屏。v0.2 起改为宿主侧 code --goto,webview 安全。

安装

假设 DSH_HOME~/.dsh(默认值):

1. 复制包到 web profile 的 node_modules:

``bash cp -r dsh-client-open-in-vscode ~/.dsh/profiles/web/node_modules/ ``

2. 编辑 ~/.dsh/profiles/web/cordis.patch.yml,加入:

``yaml - insert: - id: ui-open-in-vscode name: dsh-client-open-in-vscode ``

3. 重启 dsh web(本插件的 Host 半需要在启动时注册 HTTP 路由,仅刷新页面不够)。

验证组合(可选):

dsh --profile web --dump-config | grep ui-open-in-vscode

要求

  • 系统 PATH 里有 code CLI(VS Code 标准安装自带)
  • 桌面会话(X11/Wayland),宿主进程能拉起 GUI 窗口

卸载

1. 从 cordis.patch.yml 删除该 - insert: 段; 2. 删除 ~/.dsh/profiles/web/node_modules/dsh-client-open-in-vscode; 3. 重启 dsh web

文件说明

文件说明
index.jsHost 半:注册 POST /plugin-open-in-vscode 路由(loopback/Origin 信任闸门),execFile('code', ['--goto','--reuse-window', path])
client.js浏览器半:点击拦截 + fetch POST + toast(window.__ModuleLoader__ 格式)
cordis.patch.yml插件插入配置(dsh plugin add / 市场安装所需)
package.json包清单,含 dsh.bundle + dsh.client.platform: "web" 声明

兼容性:随 @deepseek-ai/dsh 0.1.0-rc.6 的 web profile 测试通过。产品 DOM 的 class/hash 若在新版本变动,client.jstargetPath() 的选择器需要跟进调整。