dsh-file-actions:在 DSH 聊天里给文件引用加上 Codex 式右键菜单

前言

在 DeepSeek Harness(DSH)里和智能体协作时,对话里会出现大量文件引用:行内蓝色文件名、交付卡片、改动文件行、工具调用里的路径、右侧文件树节点等。默认交互多是点击预览或跳转,若要「用本机编辑器打开」「在资源管理器里定位」「复制绝对路径或文件内容」「另存一份到本地」,往往要切到终端或资源管理器自己拼路径。

OpenAI Codex 桌面端对聊天中的文件引用提供了统一的右键菜单(打开、打开方式、显示、复制路径等)。Codex 的 UI 并未开源,社区无法直接复用其实现。dsh-file-actions 由维护者 jidekaixin2dian 发布,归类为客户端插件,按可观测行为与公开信息在 DSH 的 Web 面上还原同类能力,并复用 DSH 已发布的 Session Remote 与 workspace 文件 API,而不是自行拼系统命令行。

这是什么

dsh-file-actions(npm 包名 @jidekaixin2dian/dsh-file-actions,当前资料中版本 0.1.3)是一句简介所能概括的能力集合:在聊天里对任意文件引用右键,即可打开、选择打开方式、在资源管理器中显示、复制路径、复制内容与另存为。插件仅作用于带 DOM 的 Web 面(桌面端/网页端);DSH 的 TUI/CLI 没有可右键的界面,不在覆盖范围内。

核心功能

在下列载体上右键文件引用会弹出菜单:行内 code、交付卡片、改动文件行、工具调用行、右侧文件树、文档预览头等。菜单会先通过 workspaceFiles.stat(文件)或 list(目录)验证路径;验证失败时,对结构化载体(data 属性、交付卡片、file: 链接)会提示「找不到该文件」,对纯文本猜测则直接不弹菜单,避免吞掉普通文本的 Chromium 自带右键菜单。可编辑区域与真正的网页链接仍保留系统菜单。

菜单项 行为
打开文件 / 打开文件夹 系统默认应用,走 session.openWorkspacePath
在 VS Code 中打开 自动识别 VS Code、Cursor、Windsurf、Zed、JetBrains 等
打开方式 ▸ 子菜单列出系统关联应用,带图标与「默认」勾选;应用多于 7 个时出现搜索框
在浏览器中打开 HTML、SVG、PDF、图片、Markdown,以 Blob 打开
在资源管理器中显示 定位并选中文件;目录则为在资源管理器中打开
复制路径 绝对路径写入剪贴板
复制相对路径 相对会话工作区;界面已是绝对路径时不显示该项
复制文件内容 文本进剪贴板;二进制或大于 2 MB 会提示改用「另存为」
另存为… 浏览器下载对话框,不经磁盘中转

菜单头部展示文件类型色块、文件名、工作区相对路径与大小;工作区外的路径会标「工作区外」并显示绝对路径。图片与 SVG 可在头部上方显示缩略图。按文件类型收敛项:例如图片/PDF 无「复制文件内容」,Office/压缩包/二进制侧重外部打开,目录无「另存为」。系统关联应用查询较慢时菜单先出现,编辑器与「打开方式」行随后异步补入。

键盘:Shift+F10 或菜单键在焦点元素上打开同一菜单;方向键与 Enter/Esc 与 README 描述一致。

实现上,打开、打开方式、资源管理器复用 session.openWorkspacePath、session.workspacePathApplications;读取与另存为复用 workspaceFiles.readBytes。宿主侧为挂载 bundle 的空实现,不放宽 DSH 既有授权。

安装与启用

安装前需完全退出 DSH 桌面端,安装后重新打开。官方命令如下:

dsh plugin --profile desktop add @jidekaixin2dian/dsh-file-actions

本地从源码重装(开发用)可在退出桌面端后执行:

pwsh -File .\scripts\reinstall.ps1 -Profile desktop

组合层可用 dsh --profile dfa-check --dump-config 确认配置中出现 id: dsh-file-actions,boot graph 含 @jidekaixin2dian/dsh-file-actions/client.js。插件已提交社区目录(awesome-dsh-plugin),Release 与 tarball 见仓库 releases/latest;SkillHub 等独立站点上的条目与 DeepSeek / 幻方无官方从属关系,安装仍以你本机执行的 dsh plugin 命令为准。

典型用法

  1. 在 DSH 桌面端打开一个带工作区的会话,让对话或文件树中出现蓝色文件引用。
  2. 在目标引用上右键(或对焦点元素按 Shift+F10),等待菜单出现;若路径有效,可先看到身份区与基础项,「在 X 中打开」「打开方式」可能稍后填入。
  3. 按需选择:例如「复制路径」得到绝对路径;文本文件选「复制文件内容」;大文件或二进制用「另存为…」。
  4. 需要指定非默认应用时,展开「打开方式 ▸」,必要时用子菜单顶部的搜索框过滤。

仓库 test-e2e 在 scratch profile 下用 headless Chromium 做了多项断言;真机右键文件树行时,菜单为 7 项、「复制路径」后剪贴板为工作区内文件的绝对路径并出现 toast「路径已复制」。你可按 README 中的 start-instance.ps1 与 self-check.mjs 在本地复现组合与 E2E 检查(需自行准备 DSH 与 PowerShell 环境)。

适用场景与注意

适合谁: 经常在 DSH 聊天里点文件引用、又希望操作习惯接近 Codex 桌面端(打开、打开方式、资源管理器、路径与内容剪贴板、另存为)的开发者。

权限与安全: 插件以当前 DSH 进程权限运行,读取走 Host 的 workspaceFiles,允许会话工作区之外的路径(与 DSH 本身一致);安装前请阅读 MIT 许可 与源码,确认符合你的环境策略。

已知限制(摘自 README): 菜单为 HTML 渲染,不跟随系统菜单字体缩放;「打开方式」来自系统文件关联,未注册的程序不会出现;另存为为浏览器下载,无原生「另存到指定目录」;复制内容上限 2 MB;二进制判定为 UTF-8 解码后是否含 NUL,可能影响部分编码的「复制文件内容」;关联查询失败不会缓存,下次右键会重试。

与 Codex 的差异包括:本插件用 HTML 菜单并带真实关联应用图标;点击文件引用仍保持 DSH 原预览行为,右键才追加动作;「在 X 中打开」按系统关联选编辑器而非仅按扩展名门控。

结尾

dsh-file-actions 把「聊天里的文件引用」收成一块右键菜单,把打开、定位、路径与内容搬运交给 DSH 已有 Remote,适合在桌面端长期写代码、改仓库的人少切窗口。目录页:https://www.skillhub.cn/plugins/jidekaixin2dian/dsh-file-actions;源码与完整说明:https://github.com/jidekaixin2dian/dsh-file-actions。

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

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

小夜