前言¶
在 DeepSeek Harness(DSH)桌面壳里用 Web GUI 看 Chat、点 Markdown 链接、扫 @ 文件引用或右侧文件树时,很多人会下意识右键——期望「在资源管理器里打开」或「用系统浏览器打开」。桌面壳在 Electron 主进程里构建右键菜单,且只在可编辑区域或有文本选中时弹出;items 为空则完全不显示菜单。链接、文件引用、交付卡片、左侧工作区项目名上的右键因此没有反应。社区插件 dsh-right-click-menu(维护者 SJcun,仓库 SJcun/dsh-right-click-menu)在页面内接管这些右键,复用 DSH 已有的外链跳转与 session.openWorkspacePath 能力,不另造轮子。
下面介绍插件定位、能力、安装方式与使用时的注意点。DSH 生态强调「一切皆插件」;SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。
这是什么¶
dsh-right-click-menu 是面向 DSH Web surface 的客户端插件(dsh.client.platform: web)。宿主半侧 lib/index.js 为空 apply,全部逻辑在浏览器半侧 lib/client.js。它在文档上监听右键,对识别到的链接、文件引用、目录弹出与界面语言一致的菜单;其余右键(输入框、选中文本等)保持原生行为。
当前 package 版本为 0.1.0,许可证 MIT,针对 DSH 0.2.0-rc.2(桌面运行时、Electron Web GUI)构建并验证。
核心功能¶
插件按右键目标提供不同菜单项(文案随当前 UI 语言,含简体中文词典):
| 右键对象 | 菜单项 |
|---|---|
| HTTP(S) 链接(Chat/助手 Markdown、行内代码 URL) | 在外部浏览器中打开 · 复制链接地址 |
文件引用(Markdown 文件链接、@path 芯片、交付卡片、文件树行、文档路径标签) |
在资源管理器中打开 · 复制文件路径 |
目录(左侧栏工作区项目、@folder/ 芯片、文件树目录行、文件树标题) |
在资源管理器中打开 · 复制文件夹路径 |
实现方式与产品自身一致:
- 在外部浏览器中打开:
window.open(url, "_blank", "noopener,noreferrer"),由主进程拦截并调用shell.openExternal,与左键点击 Chat 链接同路。 - 在资源管理器中打开:Session Remote 的
session.openWorkspacePath;目录用{ path }在管理器中打开目录本身,文件用{ path, action: "reveal" }定位文件。Host 会先校验路径,插件不直接访问文件系统。
菜单使用共享的 Menu 原语,键盘导航、主题等与主界面一致。在 headless 或 SDK profile 下没有浏览器半侧,插件不起作用而非报错。
安装与启用¶
把包装进为该 GUI 提供服务的 profile。推荐用插件管理器,会同时添加依赖并把 bundle 写入 profile 的 dsh.profile.bundles:
plugin_manager install_bundle target: <spec>
<spec> 可以是 registry 包名、Git 地址(例如 github:SJcun/dsh-right-click-menu)、tarball 或本地路径。本包通过仓库分发,而非 npm 发布。
也可手工操作:在 profile 目录执行 pnpm add <spec>,再把包名追加到 profile 的 package.json 的 dsh.profile.bundles。
宿主半侧在下次 Host 启动时加载(配置 HMR 开启时可立即生效);浏览器半侧随下一次页面加载生效。可用仓库内的 npm run check:live 对照运行中 Host 的 bundle revision,默认地址为 $DSH_WEB_URL 或 http://127.0.0.1:19387。
停用:在 profile 的 cordis.patch.yml 给 right-click-menu 条目设 disabled: true,或从 dsh.profile.bundles 移除该 bundle。
典型用法¶
安装并刷新 Web GUI 后,无需额外配置,按 README 中的验证步骤自测即可:
- 在 Chat 消息里右键 HTTP(S) 链接 → 应出现「在外部浏览器中打开」,并在系统浏览器打开。
- 右键
@引用文件、交付卡片或右侧栏文件树行 → 应出现「在资源管理器中打开」,并在资源管理器中选中该文件。 - 右键左侧栏工作区项目名 → 应出现「在资源管理器中打开」,并在资源管理器中打开该目录。
- 右键消息输入框或选中的文本 → 仍为原生菜单。
开发或排查 DOM 识别问题时,可在插件源码目录运行 npm test(node test/detection.test.mjs),用例会覆盖各界面 markup 的检测逻辑。
适用场景与注意¶
适合谁:日常在 DSH Web GUI 里通过链接、文件引用和工作区侧栏操作本地路径,希望右键与系统习惯一致的用户。
兼容性:插件声明 @deepseek-ai/dsh* 等 peer 依赖;DSH 在未核验的版本上会拒绝加载,避免菜单与 DOM 不匹配。检测逻辑依赖 DSH 未公开为 API 的 DOM 标记(集中在 lib/client.js 的 filePathOf),大版本升级后若菜单失效,可先跑 npm test 定位界面。
已知限制(来自上游 README):按图片渲染且标签不是路径的 Markdown 文件链接可能无法识别;侧栏「未分组」桶 id 为空时不提供菜单;应用内浏览器标签页保留原生右键;工作区相对的 Markdown 链接按主视图 Session 的 cwd 解析,跨工作区链接可能定位不准。
安全与权限:插件以当前 DSH Host / Session 的权限运行,路径由 Host 校验。安装前建议阅读 GitHub 源码 与 MIT 许可证,确认符合你的环境策略。
结尾¶
dsh-right-click-menu 用最小客户端 bundle 补上 Web GUI 里链接与路径类元素的右键能力,并刻意不干扰原生编辑与复制菜单。目录页:SkillHub — dsh-right-click-menu;源码与详细说明:github.com/SJcun/dsh-right-click-menu。