dsh-reveal-in-folder:在 DSH Web UI 中右键打开文件管理器

前言

在 DeepSeek Harness(DSH)的 Web UI 中,智能体返回的文件引用、编辑器标签页、侧边栏标签等都会以文本形式展示。直接右键这些文本,通常无法唤起文件管理器;而在桌面客户端中,路径栏等元素往往依赖操作系统原生的右键菜单。dsh-reveal-in-folder 插件接管右键事件,让这些文本可被正确识别为文件路径,并直接在文件管理器中定位或打开。

是什么

dsh-reveal-in-folder 是一个 DSH 客户端插件,由维护者 haruri03 开发。它为 DSH Web UI 提供右键上下文菜单,支持以下操作:

  • 在文件管理器中显示:针对聊天中的文件引用、编辑器路径栏、右侧侧边栏标签、本地图片。
  • 在浏览器中打开图片:远程图片或页面内嵌入图片(例如主机媒体路由)。
  • 复制图片:聊天内联图片、放大预览、侧边栏预览。

插件通过捕获 contextmenu 事件、解析路径并调用系统命令来呈现这些操作。菜单会根据主机 UI 语言显示中英文标签,其他语言默认显示英文。

核心功能

1. 文本覆盖范围

  • 聊天回复中的文件引用:聊天渲染器将路径保存在元素的 title 中,通常为相对路径。
  • 编辑器/文档预览路径栏:输入框的值或 title 中的路径。
  • 右侧侧边栏文件标签:优先使用 data-dockkit-tab / data-sidebar-right-tab 属性,并优先使用 React props 中的 dsh-resource 地址。

2. 图片识别与操作

插件支持以下图片操作:

  • 在文件管理器中显示:仅对本地图片生效。当图片没有 DOM 路径时,客户端使用 SHA-256 哈希匹配内容寻址的附件对象,从而支持“在文件管理器中显示”。远程图片不提供该选项。
  • 在浏览器中打开图片:适用于远程图片或页面内嵌入图片。
  • 复制图片:支持聊天内联图片、放大预览、侧边栏预览。

3. 路径解析策略

聊天引用和路径栏通常携带相对路径。如果直接传给宿主,path.resolve 会基于进程工作目录解析,导致打开错误的目录。该插件在宿主侧解析路径:

  1. 客户端向 GET /reveal-in-folder 发送 path / name / address / image。
  2. 宿主使用当前会话的 header.cwd 作为根目录:
    - 将相对路径与每个根拼接并检查是否存在。
    - 纯文件名(无路径分隔符)会触发根目录下的有界递归搜索(跳过 node_modules / .git 等目录,最多 20k 条目与 8 层深度),返回候选列表。
  3. 结果通过系统命令打开:Windows 用 explorer.exe /select,<path>,macOS 用 open -R,Linux 用 xdg-open,不经过 shell。

4. 上下文菜单行为

  • 仅当右键文本看起来像文件时才接管菜单:单行带扩展名视为文件;含分隔符视为路径;纯名称视为标签。
  • 菜单渲染在 shell.overlay 中,跟随鼠标,在按 Escape、点击外部或滚动时关闭。
  • 点击菜单项立即执行对应操作;不可用或执行失败的项不显示,失败操作静默关闭。

安装与启用

插件安装方式如下:

方式一:通过 Git 安装(推荐)

plugin_manager install_bundle --target "git+https://github.com/haruri03/dsh-reveal-in-folder.git"

也可通过 Web 插件页的“Add plugin”或 CLI 使用相同命令:

dsh plugin --profile <profile> add "git+https://github.com/haruri03/dsh-reveal-in-folder.git"

方式二:手动安装

  1. 将插件目录复制到:
   $HOME/.dsh/profiles/<profile>/node_modules/dsh-reveal-in-folder
  1. 在对应配置文件的 cordis.patch.yml 中追加:
   - insert:
       - id: reveal-in-folder
         name: './index.js'

安装或更换客户端后,刷新页面一次(浏览器会缓存客户端模块)。

典型用法

  1. 在 DSH Web UI 的聊天中,智能体返回文件路径(例如 /workspace/src/app.ts)。
  2. 将鼠标移至该路径文本,右键。
  3. 菜单中出现“在文件管理器中显示”等操作(取决于当前文本类型与可用性)。
  4. 点击后,系统文件管理器会打开对应目录并选中该文件(或候选列表,当存在同名文件时)。

对于纯文件名(如侧边栏标签),若仓库中存在多个同名文件,菜单会列出候选路径,按深度排序,最多显示 100 条,可滚动选择。

适用场景与注意

  • 适用人群:需要频繁在 DSH Web UI 中查看文件路径、编辑器标签、本地图片的开发者与智能体使用者。
  • 权限与安全:插件以当前 DSH 进程权限运行,建议在安装前查看源码与许可证(MIT)。
  • 已知限制:
  • 仅识别带扩展名的文件,右键目录不会弹出菜单。
  • 纯文件名搜索受 20k 条目与 8 层深度限制,在超大仓库中可能失败或菜单不显示。
  • 远程图片无法在文件管理器中显示。

总结

dsh-reveal-in-folder 让 DSH Web UI 中的文件引用、编辑器标签和本地图片可以一键唤起文件管理器或打开图片。它通过在宿主侧解析相对路径、对纯文件名进行有界搜索,避免了因工作目录导致的路径错误,并提供了可用的操作列表。对于需要频繁定位文件的开发者与智能体使用场景,该插件提供了实用的上下文菜单能力。

资源

  • 插件目录页:https://www.skillhub.cn/plugins/haruri03/dsh-reveal-in-folder
  • GitHub 仓库:https://github.com/haruri03/dsh-reveal-in-folder
羽毛球分组比赛记分
小程序二维码

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

Xiaoye