dsh-auto-click
Manifest validDSH Web GUI 侧边栏文件手势插件:左键预览、Ctrl+左键系统默认应用打开、右键文件菜单(打开/打开方式/另存为/复制路径/复制内容/在资源管理器中打开)
dsh-auto-click
File gestures for the DSH Web GUI sidebar: click to preview, Ctrl+click to
open natively, right-click for a file menu.
DSH (DeepSeek Harness) 侧边栏文件的鼠标手势插件:
左键在侧边栏预览、Ctrl+左键用系统默认应用打开、右键弹出文件菜单。
| 操作 | 结果 |
|---|---|
| 左键单击 | 在侧边栏打开文件预览(宿主原有行为,插件不干预) |
Ctrl + 左键单击 | 用系统的默认应用打开;没有默认应用时弹出"打开方式" |
| 右键单击文件 | 弹出文件菜单 |
| 右键单击普通链接 | 弹出"复制链接"菜单 |
菜单项(文件):
- 打开文件 — 用系统默认应用打开
- 打开方式 — 调用操作系统自带的"打开方式"选择框
- 另存为… — 通过浏览器下载保存副本
- 复制路径 — 复制绝对路径
- 复制文件内容 — 复制文件文本内容
- 在资源管理器中打开 — 在文件管理器中定位该文件
菜单项(普通链接):
- 复制链接 — 复制
href原文(相对路径也照原样复制,不补站点前缀)
成功操作不弹提示(复制路径本身就是反馈),只有失败或被拒绝时才提示。
环境要求
- DSH
>= 0.2.0-rc.1 - 支持的操作系统:Windows(完整支持)、macOS(
打开方式走open -a)、 其他平台可用但"打开方式"会明确报告不支持
效果展示
在聊天中的文件链接上右键:

安装
从 npm 安装。桌面版和 dsh web 是两个独立的 profile,装在一个里不会出现在另一个里,
按你使用的方式选择对应命令。
桌面版(DSH Desktop)
dsh plugin --profile desktop add dsh-auto-click
终端 dsh web
dsh plugin --profile web add dsh-auto-click
装完后重启对应的进程(桌面版重启应用,dsh web 重启该命令)。
dsh plugin的参数会原样透传给 pnpm,所以<spec>可以是 pnpm 接受的任何形式: 包名、包名@版本或 git 地址。命令动词用add。
从 GitHub 安装
不经过 npm,直接从仓库安装:
dsh plugin --profile desktop add github:Analoty/dsh-auto-click
本包是纯 JavaScript,没有 prepare 构建步骤,因此从 git 直装不会被 pnpm 的
allowBuilds 策略拦下。
卸载
dsh plugin --profile desktop remove dsh-auto-click
dsh plugin --profile web remove dsh-auto-click
结构
index.js Host 半:HTTP 路由与系统调用
client.js Client 半:事件监听与菜单渲染
cordis.patch.yml bundle 插入声明
locale/*.json 中英文文案与元信息
icon.svg 插件图标
Host 半提供 /auto-click/{capabilities,diag,info,open,openwith,reveal,raw},
全部经过 DSH 自己的请求信任栅栏(connection.requestRejection),未认证或
跨源请求在到达业务逻辑前就被拒绝。
打开文件走 DSH 的 sessionController.openWorkspacePath,因此继承宿主的路径校验,
插件不会绕过它自己启动程序。
路径解析
文件可能由左侧文件树、DSH 文件面板或聊天中的文件链接命名。聊天链接和树节点 携带的是工作区相对路径,所以浏览器半会把当前会话 id 一并发送,由 Host 在 该会话的工作区内解析。
没有已知工作区时,相对路径会被拒绝,而不是拿进程目录去猜——否则可能复制或 打开一个同名的、用户根本没指过的文件。
聊天中的文件提及(mention)语法形如 @"带 空格 的 名字.md",@ 和引号是提及
语法的标点而非文件名的一部分,解析前会剥离。
为什么"打开方式"交给操作系统
插件不维护自己的应用列表。早期版本会列出某格式的可用程序,结果两个方向都错:
- 给
.md列出了 Acrobat、ImageGlass 等根本不支持 Markdown 的程序——因为 DSH 的枚举器返回"所有曾声称支持该类型的处理器"; - 曾把
.html的列表清空——因为过滤规则拿处理器的 id 去匹配扩展名,而.html的 ProgId 是htmlfile、ChromeHTML、MSEdgeHTM,没有一个含.html。
没有任何插件能比操作系统更清楚"哪个程序能打开哪种格式",所以这个菜单项把问题 交还系统:
| 平台 | 调用方式 |
|---|---|
| Windows | Shell COM:Shell.Application → Item.InvokeVerb('openas') |
| macOS | open -a <path> |
Windows 上踩过的两个坑
两个坑都是靠真的去数窗口发现的,仅看退出码全部"成功"。
rundll32.exe shell32.dll,OpenAs_RunDLL无效。 这是网上最常见的答案, 但它退出码0且不显示任何东西——.pdf、.md、.html、.png、.txt全部如此。插件因此"成功地"什么都没做。- 子进程不能 detach 或隐藏。 用
detached: true或windowsHide: true启动 PowerShell 同样退出0且无对话框:脱离后的进程不再附着于拥有 Shell 窗口的交互式桌面,InvokeVerb会静默失败。
文件路径通过环境变量传给 PowerShell,不拼接进命令行,因此文件名包含引号、
&、$(…) 等字符时也无法改变实际执行的命令。
限制
- "复制文件内容"和"另存为"拒绝大于 8 MiB 的文件,而不是截断。
- 在没有交互式桌面的会话中(如某些远程或服务模式),"打开方式"仍无法弹出对话框。
许可
Comments
Loading…
Similar plugins
by nubeslove
DSH Web 插件:给文件引用加右键菜单(打开文件 / 在资源管理器定位 / 浏览器预览 / 复制路径)。Right-click actions for file mentions in DeepSeek Harness.
★ 0
MIT
JavaScript
Oct 20, 2026
dsh plugin --profile web add dsh-file-actionsby dreammaker2016
该仓库暂未提供项目说明。
★ 1
MIT
JavaScript
Sep 21, 2026
dsh plugin --profile web add @z1995418/dsh-file-menuby zurrll
DSH Web GUI 文件资源管理器:右侧文件树抽屉,拖拽粘贴路径,双击打开,右侧取消区
★ 0
MIT
TypeScript
Aug 18, 2026
dsh plugin --profile web add @zurrll/dsh-file-explorerby zhaoruizhe81
dsh Web GUI 插件:给右侧栏标签的右键菜单补上固定标签、关闭其他/左侧/右侧/所有标签。
★ 0
MIT
JavaScript
Oct 15, 2026
dsh plugin --profile web add dsh-sidebar-tab-actionsBetter Right-Click: right-click menu on file references in the DSH transcript. Copies the absolute path, reveals the file selected in Explorer by reusing and focusing an existing window, and lists eve
★ 0
MIT
JavaScript
dsh plugin --profile web add dsh-better-right-clickby SJcun
Right-click menu for the DSH (DeepSeek Harness) Web GUI: open a workspace project or file reference in the file manager, and a link in the external browser. | 为 DSH(DeepSeek Harness)Web GUI 补上右键菜单:工作区
★ 0
MIT
JavaScript
Oct 12, 2026
dsh plugin --profile web add dsh-right-click-menu