前言¶
在 DeepSeek Harness(DSH)里开发时,文件树、聊天里的路径、@file 引用和超链接是日常操作面。DSH 桌面壳自带的右键菜单主要面向可编辑输入框和选中文本;在右侧「文件」树、对话中的路径字符串、左侧工作区项目名或任意链接上右键,往往不会出现与上下文匹配的操作。社区插件 dsh-right-click-menu(维护者 Ignareo)在页面内按区域接管右键,把文件与链接相关能力补全,其余表面仍交给原生菜单。
这是什么¶
dsh-right-click-menu 是面向 DSH Web GUI 的客户端 bundle 插件:在文件树、聊天路径、工作区项目、超链接等位置弹出合并后的右键菜单。包名与 Loader 注册 id 均为 dsh-right-click-menu,当前资料中的版本为 0.4.0,许可证 MIT。
本仓库是独立合并版:功能基座来自 AL1ghtm3ter/dsh-right-click-menu,工作区行、文件树根与测试工程化等来自 SJcun/dsh-right-click-menu,与两个上游无隶属关系;逐项对比见仓库内 COMPARISON.md。
插件目录页:SkillHub - dsh-right-click-menu。源码与说明:GitHub - Ignareo/dsh-right-click-menu。
核心功能¶
下面按「在哪右键、会发生什么」说明已核实能力。
覆盖的右键表面¶
| 在哪右键 | 会发生什么 |
|---|---|
| 右侧栏「文件」树的行 | 文件操作菜单;文件夹额外有「在文件树中展开」 |
| 文件树头部 / 空白处 | 对该目录的文件操作 |
| 聊天里出现的文件路径(正文、行内代码) | 先确认文件存在,再弹文件菜单 |
聊天里的 @file / @folder 等文件提及 |
文件菜单 |
| 文档路径标签、改动文件审阅行 | 文件菜单 |
| 左侧栏「工作区」项目名 | 对该工作区目录的文件操作 |
| 任意超链接 | 链接菜单;链接指向文件时再补上文件菜单 |
文件菜单包含:在 DSH 中预览、在文件树中展开、在默认应用中打开、「打开方式 ▸」(宿主查到的关联程序)、在资源管理器中定位、复制路径 / 相对路径 / 文件名 / 文件内容、另存为…。
链接菜单包含:在侧边栏中打开(HTTP/HTTPS)、在外部浏览器中打开、打开链接(mailto: 等 scheme)、复制链接地址 / 链接文字 / 复制为 Markdown 链接。
以下情况不被插件接管:输入框、选中文本、消息操作、代码块(<pre>)、JSON 复制按钮等,保持 DSH 原生行为。行内代码里的路径仍可右键。路径在宿主侧查不到时,会提示「工作区里没有找到 …」,不会静默吞掉右键。菜单与提示跟随 DSH 界面语言(中文 / 英文),切换后立即生效。
宿主半与浏览器半¶
浏览器半通过 Cordis 注入在捕获阶段监听 contextmenu,按固定优先级解析指针下的 DOM(文件树行 data-files-path、工作区行 data-row-key="workspace:<id>"、链接、@ 引用 chip 等)。路径在弹出菜单前会经宿主确认存在;绝对路径走 /stat,宿主不可见时回退 Session 的 workspaceFiles Remote(远程 / SSH 工作区)。
宿主半在 /dsh-right-click-menu 下提供 ping、raw、stat、read、save-as 等路由,供复制内容、另存为等操作使用;路由受 Host/Origin 与浏览器认证围栏保护。README 注明:针对 DSH 0.2.x(Web surface)构建并验证;路径识别依赖尚未公开为 API 的 DOM 标记,DSH 大版本升级后可能需要调整并先跑 npm test。
安装与启用¶
包名与上游相同。若已安装 AL1ghtm3ter 或 SJcun 版本,请先卸载再装本合并版。
方式一:网页界面(推荐)¶
侧栏 Plugins → Add plugin,粘贴:
github:Ignareo/dsh-right-click-menu
或使用 Release 打包文件:
https://github.com/Ignareo/dsh-right-click-menu/releases/latest/download/dsh-right-click-menu.tgz
方式二:命令行¶
先完全退出 DSH,再执行:
dsh plugin --profile desktop add github:Ignareo/dsh-right-click-menu
安装后 dsh-right-click-menu 会写入 profile 的 dsh.profile.bundles。
生效与卸载¶
- 浏览器半:刷新页面(Ctrl/Cmd+R)即可。
- 宿主半(复制文件内容、另存为等):需重启 DSH 一次,因 Node ESM 缓存可能保留旧模块。
卸载:
dsh plugin --profile desktop remove dsh-right-click-menu
也可从 profile 的 package.json 中移除对应 dependencies 与 dsh.profile.bundles 项后重启。
典型用法¶
- 右侧「文件」树中右键某文件或文件夹,使用预览、打开方式、复制路径等。
- 左侧工作区项目名右键,对工作区根目录做与文件树一致的目录操作。
- 在聊天正文或行内代码中右键
src/index.ts、D:\projects\app\main.py或带引号的路径;存在则出菜单,不存在则见提示。裸文件名会走编辑器的@file搜索,搜不到则不弹菜单。 - 对 HTTP/HTTPS 等链接右键,选择在侧栏打开、外部浏览器打开或复制为 Markdown 链接。
- 「另存为…」优先使用浏览器保存对话框;不可用时退回选目录并由宿主拷贝。
开发者可在仓库根目录做校验(需 Node >= 18):
npm test # 141 项检查(客户端 107 + 宿主半 34)
npm run check:live # 需 DSH 正在运行;默认读 $DSH_WEB_URL
指定地址的活体 bundle 校验:
node scripts/live-bundle.mjs http://127.0.0.1:<端口>
适用场景与注意¶
适合长期在 DSH 桌面/Web 界面里浏览工作区、从对话中打开路径、复制相对路径或 Markdown 链接的开发者。插件客户端与宿主路由在当前 DSH 进程权限下读写路径;安装前建议阅读源码、LICENSE 与 NOTICE.md,确认信任维护者与 MIT 条款。
已知限制(来自 README):图片形式的 Markdown 文件链接无路径 tooltip,仅标签本身为路径时可识别;工作区相对的 Markdown 链接按当前会话工作区解析;代码块内右键保留原生行为。DSH 生态奉行「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-right-click-menu 把文件树、聊天路径、工作区项目与超链接上的右键补成可落地的文件/链接菜单,同时不抢占输入框与代码块的原生体验。安装前卸载同名上游包,装完后刷新页面并在需要时重启 DSH。
- 目录页:https://www.skillhub.cn/plugins/Ignareo/dsh-right-click-menu
- GitHub:https://github.com/Ignareo/dsh-right-click-menu