dsh-file-actions:给 DSH 消息里的文件引用加右键菜单

前言

在 DeepSeek Harness(DSH)里聊项目时,模型和工具经常把路径写成蓝色 chip,例如 index.html 或 @src/app.tsx。它们看起来像链接,实际上只能看,不能点。真要打开文件或去资源管理器里找,还得自己切出去翻目录。

dsh-file-actions 是社区维护的 DSH Web 客户端插件,在文件引用上补一层右键菜单:打开、定位、浏览器预览、复制路径。下面介绍它做什么、怎么装、使用时要注意什么。

这是什么

  • 名称:dsh-file-actions(npm 包名与仓库名一致)
  • 维护者:nubeslove
  • 分类:客户端插件(dsh.client.platform 为 web,注入 DSH 客户端运行时与 UI 插槽)
  • 仓库:github.com/nubeslove/dsh-file-actions
  • 许可证:MIT

插件不改 DSH 核心,只在 Web 界面里监听右键、识别路径,再通过宿主提供的 /api/file-actions/exec 在本机执行白名单内的动作。当前版本在 package.json 中为 0.1.3;README 写明在 DeepSeek Harness 0.1.1-rc.2 与 Windows 上开发与验证。

核心功能

消息区:文件引用右键菜单

DSH 把文件引用渲染成蓝色 chip 后,在本插件支持下可右键操作。菜单项与行为如下(与 README 功能表一致):

菜单项 适用文件 行为
用默认程序打开 全部 交给 Windows 文件关联
用浏览器打开 html、svg、md、txt、json、xml、yaml、css、js、ts 等文本类 以 file:/// URL 交给默认浏览器
在文件夹中显示 全部 打开资源管理器并选中该文件
复制完整路径 全部 写入剪贴板

菜单头部会显示文件名与完整路径,长路径左侧渐隐,便于确认目标文件。

插件能识别的引用形态包括:

  • [data-ref-chip](file / folder / skill 三种)
  • title 属性中含完整路径的元素(chip 的 title 被裁切时的兜底)
  • file:/// 链接
  • 行内代码等(code / kbd / samp)
  • 元素文本整串即为路径时的兜底匹配

若引用的是 http:// 或 https:// 网址,菜单会切换为网址专用:用浏览器打开、复制链接,不会把 URL 当成本地路径去定位。

右侧栏:文档预览「定位」

在右侧栏以文档预览打开文件时,标签头部会增加 ▤ 定位 按钮,在当前文档所在文件夹中选中该文件。实现上注册在 sidebar.right.tab.document.actions 插槽,使用官方提供的 absolutePath,无需改写预览组件本身。

安装与启用

DSH 桌面端默认 profile 为 desktop,$DSH_HOME 一般为 ~/.dsh。安装步骤以 README 为准。

1、用一条命令把插件加入 desktop profile:

dsh plugin --profile desktop add "github:nubeslove/dsh-file-actions"

2、在 $DSH_HOME/profiles/desktop/package.json 的 dsh.profile.bundles 中追加 "dsh-file-actions"。

3、重启 DSH 桌面应用。

插件为纯 JavaScript,无构建步骤,无运行时 npm 依赖。卸载时删除 node_modules/dsh-file-actions 并从 bundles 去掉对应行即可;README 说明插件不修改其他既有文件。

本地开发若路径含空格,README 提供了在 dependencies 里 link:、写 bundles、用 PowerShell 建 Junction 再重启的流程,需要时可对照仓库「本地开发:手工 link」一节。

典型用法

安装并重启后,无需额外配置项:

1、在对话或工具输出里找到蓝色文件 chip,或带本地路径的行内代码、file:// 链接。

2、在目标上右键,根据文件类型选择「用默认程序打开」「用浏览器打开」「在文件夹中显示」或「复制完整路径」。

3、若右侧栏正在预览某个文档,点标签头部的 ▤ 定位,等价于在资源管理器中选中该文件的目录项。

对网页链接右键时,使用「用浏览器打开」或「复制链接」即可。

适用场景与注意

适合谁:主要在 Windows 上使用 DSH 桌面端、经常在消息里看到文件路径、希望少切窗口去资源管理器或编辑器里打开文件的开发者。

平台与上游依赖:系统动作依赖 explorer.exe 与 cmd.exe /c start;其他平台需自行改 lib/index.js 里的 launch 实现。若 DSH 将来改掉 [data-ref-chip]、file:// 或 code 等渲染方式,右键识别可能失效,需在 lib/client.js 的 resolveFromEvent 中调整选择器。

路径解析:相对路径(如 index.html)按宿主进程当前工作目录解析;解析不到会提示 path does not exist。

权限与安全:这是会在本机拉起进程的插件,以当前 DSH 进程权限运行。安装前建议阅读仓库 lib/index.js 与 README「权限与安全边界」:

  • 仅白名单动作:reveal / open / browser(以及网址场景的 open-url,只放行 http/https)
  • 执行前校验路径存在;参数经 spawn 数组传递,不做 shell 拼接
  • 不读文件内容、无对外网络请求(客户端只 POST 同源 /api/file-actions/exec)
  • dependencies 为空,无 install 生命周期脚本

社区插件目录 skillhub.cn 上的 dsh-file-actions 页 与 GitHub 仓库相互独立收录;目录站点与 DeepSeek / 幻方无官方从属关系,安装来源以你信任的仓库与文档为准。

遇到问题可邮件 1992335297@qq.com(README 称比开 Issue 更快),或到 GitHub Issues 反馈;邮件建议附上插件版本、dsh --version 与完整报错。

结尾

dsh-file-actions 把 DSH 里「只能看」的文件引用变成可操作的右键菜单,并给右侧文档预览补了一个「定位」入口。若你已在用 desktop profile,按官方命令安装、写入 bundles 并重启即可试用。

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

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

Xiaoye