前言¶
DSH 助手在回复里经常引用项目文件:行内代码路径、文件 chip、dsh-resource:// 链接等。原生右键菜单对这些引用通常没有「用本机应用打开」「在文件管理器中定位」之类操作,只能手动复制路径再切到 IDE 或资源管理器。社区插件 dsh-file-link-menu(维护者 XcodeFish)接管聊天输出里文件引用的右键事件,弹出原生风格的浮层菜单;代码块、普通文本、外部链接仍走原生菜单,不被劫持。
这是什么¶
dsh-file-link-menu 是 DSH 的 client 侧插件(纯 ESM、零依赖、无构建脚本),版本 1.0.0,MIT 许可证。npm 包名为 @codefisher798/dsh-file-link-menu,源码仓库:github.com/XcodeFish/dsh-file-link-menu。目录页:skillhub.cn/plugins/XcodeFish/dsh-file-link-menu(社区目录,与 DeepSeek / 幻方无官方从属关系)。
它解决的是:在 DSH Desktop(web profile)或 DSH NEXT 的聊天界面里,对可识别的文件路径右键,直接打开、定位或复制路径。
核心功能¶
装好并重启后,在聊天输出里对文件路径右键,菜单大致包含:
| 菜单项 | 行为 |
|---|---|
| 用 \<应用> 打开(标注「默认」) | 用系统默认关联应用打开文件(带应用图标) |
| 用 \<应用> 打开 | 本机注册了该文件类型关联的应用(带图标,逐项列出) |
| 显示文件位置 | 在系统文件管理器(Finder / 资源管理器)中定位该文件 |
| 复制绝对路径 | 复制 <当前会话工作区>/<相对路径> |
| 复制相对路径 | 复制相对于当前会话工作区的路径 |
打开与定位通过 Session Remote 由 Host 执行;Host 会对路径做二次校验,仅限当前会话工作区内的文件。
识别哪些元素¶
插件按顺序用四层判据识别「文件引用」;不满足则保持原生右键:
<a href="dsh-resource://file/session/<id>/<path>">资源地址链接[data-file-path]显式标记- Markdown 文件链接按钮
<button title="<path>">(含带图标的行内引用 chip) - 非代码块内的行内代码
<code>:全文恰为文件路径(可带:行号/-行号后缀)
<pre><code> 代码块、普通文本、外链不会被劫持。
安装与启用¶
插件以 profile 的 pnpm 依赖形式安装;装完后必须重启 DSH Desktop 或 DSH NEXT(client bundle 按文件 mtime 生成 rev 并版本化缓存,不重启不会重载)。
DSH Desktop CLI(推荐)¶
下面命令来自项目 README,路径面向 macOS 上的 DSH Desktop 默认布局;Linux / Windows 需按本机 DSH Desktop 安装位置调整 DSH_HOME 与 bin.js 路径。
DSH_HOME="$HOME/Library/Application Support/dsh-desktop/harness"
"$DSH_HOME/.desktop-bin/node" \
"/Applications/DSH Desktop.app/Contents/Resources/app.asar.unpacked/node_modules/@deepseek-ai/dsh/lib/bin.js" \
plugin --profile web add --save-exact github:XcodeFish/dsh-file-link-menu
也可使用完整 GitHub URL,或 npm 包名简化安装:
# 同上 node + bin.js 前缀
plugin --profile web add @codefisher798/dsh-file-link-menu
锁版本示例:github:XcodeFish/dsh-file-link-menu#v1.0.0 或 #<commit>。
DSH NEXT¶
在设置里添加插件,或使用 plugin_manager:
plugin_manager install_bundle(target="github:XcodeFish/dsh-file-link-menu")
同样支持 GitHub URL、release .tgz、npm 包名或本地绝对路径;#v1.0.0 或 #<commit> 可锁版本。
卸载(Desktop CLI)¶
"$DSH_HOME/.desktop-bin/node" \
"/Applications/DSH Desktop.app/Contents/Resources/app.asar.unpacked/node_modules/@deepseek-ai/dsh/lib/bin.js" \
plugin --profile web remove dsh-file-link-menu
卸载后同样需要重启 DSH Desktop。
典型用法¶
- 按上一节任选一种方式安装插件。
- 重启 DSH Desktop 或 DSH NEXT。
- 在已有会话、且工作区已打开的前提下,在助手回复里找到文件 chip、行内路径或
dsh-resource://链接。 - 在该元素上右键:在「打开」分组里选默认或指定应用;或选「显示文件位置」「复制绝对路径」「复制相对路径」。
若右键无自定义菜单,先确认是否重启;若点在代码块内的路径上,设计上是保留原生菜单。
适用场景与注意¶
适合谁: 经常在 DSH 聊天里点文件引用、希望少切窗口的开发者;使用 DSH Desktop(含 0.10.x web profile)或 DSH NEXT,macOS / Windows / Linux 均可(打开与定位由 Host 调系统接口)。
权限与安全: 插件随当前 DSH 进程与用户权限运行;安装前建议阅读 仓库源码 与 MIT 许可证,自行判断是否纳入 profile。
FAQ 要点:
- 菜单里缺少某个应用:需在系统里注册过该文件类型的关联。
- 仅工作区内文件有效:Host 二次校验路径范围。
- 装完没反应:重启客户端。
开发者本地可运行 node --check client.js 与 node self-test.mjs 做 DOM stub 自测,无需浏览器。
结尾¶
DSH 生态强调「一切皆插件」;dsh-file-link-menu 只补聊天输出里文件引用的右键能力,不改动代码块与普通链接的行为。需要安装命令与行为细节时,以 GitHub README 为准;社区索引见 SkillHub 目录页。