dsh-file-mentions:让 DSH 回复中的文件路径可点击打开

前言

在 DeepSeek Harness(DSH)里和智能体协作时,回复里经常出现文件路径:相对路径、绝对路径,或带 ~/ 的主目录写法。官方渲染器会把 URL 自动变成链接,但本地路径通常只是普通文本,复制后再去文件管理器或终端里打开,多一步操作。

下面介绍社区插件 dsh-file-mentions(维护者 a903067276-rgb)。它把反引号包裹的路径变成可点击的行内链接,并在回合末尾汇总「mentioned files」芯片列表,交互方式接近 Codex 风格。插件为零依赖实现,归类为 DSH 客户端插件,当前 GitHub 星标 11、fork 3,采用 MIT 许可证。

这是什么

dsh-file-mentions 是一个 DSH web 插件(bundle + client,见仓库根目录 package.json)。核心能力有三块:

  1. 行内路径点击:用系统默认应用打开文件,或打开所在目录。
  2. 路径旁文件夹按钮:在文件管理器中定位(reveal)。
  3. 回合末尾「mentioned files」芯片列表:点击文件名可在 DSH 内预览内容;列表中的文件夹按钮同样可 reveal。

URL 仍由官方渲染器处理,本插件不改动 URL 行为。项目为社区成员独立维护,非 DeepSeek 官方产品。

核心功能

插件把反引号包裹的路径识别为可交互对象,支持 ~/ 展开、相对路径(相对当前会话工作目录解析),以及 macOS / Linux / Windows 形式的绝对路径。路径不存在时静默忽略,不会报错打断阅读。

交互位置 操作 效果
行内路径文本 点击 用默认应用打开文件,或打开目录
行内路径后的文件夹图标 点击 在文件管理器中 reveal
「mentioned files」芯片 点击名称 在 DSH 内预览文件内容
芯片列表中的文件夹图标 点击 在文件管理器中 reveal
行内 URL 点击 由官方 autolink 在浏览器中打开

路径可见范围: 用户主目录下的本地文件默认可点击,无需配置。外置盘或网络卷(例如 macOS 上的 /Volumes/USB)需在外置盘白名单中登记根路径,一行一个。系统盘保护会自动拒绝包含 /System/etc 或 Windows 下 \Windows 等标记目录的白名单根路径。

平台: macOS 已完整测试(含中文路径);Linux 与 Windows 尚未在仓库中完整验证,但已实现对应命令分支与路径解析。

与官方能力的关系: 行内点击依赖智能体用反引号包裹路径(与 Codex 输出约定一致),正文里未加反引号的裸路径不会变成可点击。官方的「produced files」列表与本插件可共存:官方有输出时优先显示官方列表,否则由本插件展示 mentioned files 列表。

安装与启用

插件通过 DSH 官方 profile 管理器安装,仓库为 bundle 插件(dsh.bundle + dsh.client)。安装前需确保 pnpm 在 PATH 中(dsh plugin 会转发到 pnpm)。

dsh plugin --profile web add "github:a903067276-rgb/dsh-file-mentions#main"

安装完成后需要重启 dsh web。bundle 层在启动时组装,热更新(HMR)不会生效。

版本兼容(README 说明,尽力维护,不保证覆盖所有 DSH 版本):

  • 要求 DSH web >= 0.1.0-rc.6(例如 npx @deepseek-ai/dsh web)。
  • DSH 0.1.0-rc.6 及更新版本(含 0.1.1-rc.1/rc.2):默认使用 main 分支。
  • 保守回退:DSH 0.1.0-rc.7/rc.8 可安装 #v1.0.8;DSH 0.1.0-rc.6 可使用冻结标签 rc6-compat(不再维护)。
dsh plugin add github:a903067276-rgb/dsh-file-mentions#v1.0.8

手动挂载方式见仓库 docs/install.md。注意:官方 bundle 安装与手动挂载只能选其一;手动挂载时 ~/.dsh/cordis.patch.yml 只能有一条入口,重复注册会导致路由冲突。

社区目录页:SkillHub — dsh-file-mentions。SkillHub 为独立社区站点,与 DeepSeek / 幻方无官方从属关系。

典型用法

让智能体在回复里用反引号包裹路径,行内即可点击,末尾芯片列表会自动出现,无需额外配置。

示例(智能体输出):

请查看 `~/docs/plan.md` 和 `./src/index.js`。

点击 `~/docs/plan.md` 会用系统默认应用打开该文件;点击路径旁文件夹图标会在文件管理器中定位。

外置盘路径: 若路径位于主目录之外(例如 /Volumes/USB/project/readme.txt),打开 DSH 设置 → Plugins → file-mentions,在外置盘白名单中添加 /Volumes/USB,保存后立即生效,无需重启。

适用场景与注意

适合谁: 经常在 DSH web 里阅读带本地路径的智能体回复、希望少复制粘贴一步的开发者。macOS 用户可直接按 README 预期使用;Linux / Windows 用户可先试用,遇到问题可向仓库提 issue 或 PR。

运行权限: 打开文件、reveal 目录等操作通过插件宿主路由(/api/file-mentions/open 等)调用系统命令完成,以当前 dsh 进程的用户权限执行。安装前建议阅读 源码MIT 许可证,确认行为符合你的安全预期。路径探测与白名单校验在同源守卫下进行,使用 Node 标准库与 execFile,避免 shell 注入。

实现概要(便于排查问题): 宿主 lib/index.js 提供存在性检查、打开/reveal、白名单读写三条 API;客户端 lib/client.js 从对话事件中收集路径、用 document 级点击委托处理行内点击,并用 MutationObserver 在 React 重渲染后恢复文件夹按钮。详见 docs/architecture.md

结尾

dsh-file-mentions 把 DSH 回复里反引号路径变成可点击的行内链接,并用 mentioned files 芯片列表兜底汇总,适合需要频繁跳转本地文件的 DSH web 用户。当前版本 1.0.11。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜