dsh-file-extension:为 DSH 右侧文件树补全 Trae 风格操作

前言

在 DeepSeek Harness(DSH)里做智能体或日常开发时,右侧栏文件树负责浏览工作区,但原生条目往往缺少「在资源管理器中打开」「一键 @ 进对话」「删到回收站」等贴近桌面 IDE 的交互。不少人会切到系统文件管理器或手抄路径,打断在 harness 里的节奏。

badwoo 维护的 dsh-file-extension(分类:客户端)面向这一问题:在网页版与桌面版的右侧栏文件树上,用自绘右键菜单和悬停 @ 按钮,补上一套 Trae 风格的文件操作;删除默认进操作系统回收站,而不是直接抹掉文件。下面介绍它做什么、如何安装,以及网页版与桌面版在使用上的差异。

这是什么

dsh-file-extension 是 DSH 的文件操作功能扩展,仓库位于 GitHub:badwoo/dsh-file-extension,社区目录页为 SkillHub 插件页。插件在浏览器侧挂载 UI,在宿主进程上通过 /api/dsh-file-extension/* 路由执行真实的文件系统操作;界面文案中英双语,跟随 dsh 的 locale 服务,菜单样式使用 dsh 主题令牌,可随浅色 / 深色主题切换。

README 记载:已在 dsh 0.2.1-rc.2(Windows 11)上实机验证;package.json 中当前包版本为 0.2.0,许可证为 MIT。

核心功能

文件右键菜单

在右侧栏文件树中右键任意文件,会弹出插件自绘的上下文菜单(不与原生右键菜单混用)。典型菜单项包括:

菜单项 行为概要
在文件资源管理器中显示 在 Finder / 资源管理器等中定位并选中该文件;宿主不支持时置灰并给出 tooltip
添加到对话 在输入框光标处插入官方 @ 源的高亮引用 chip;发送时序列化为规范的 @路径
在新标签页中打开 在右侧面板预览区新标签页打开该文件
另存为… 写出副本,默认名 原名-副本.扩展名,不修改原文件;同名时先询问是否覆盖
复制绝对路径 / 复制相对路径 复制路径并 toast 提示
重命名 条目上原地输入;Enter 或点击其他区域确认,Esc 取消
删除 默认移入操作系统回收站;仅当宿主无法访问回收站时才降级为永久删除,并用红色警示文案二次确认
检查更新… 读取当前版本、查询 GitHub Release 做语义化比较,可委托 harness 的 pluginManager 更新或给出可复制命令

菜单支持 Esc 关闭、↑/↓/Home/End 导航(跳过置灰项),并在视口边缘自动翻转避免溢出。

说明: 文件行上不显示「新建文件」「新建文件夹」;这两项出现在目录条目以及工作区根目录空白区右键菜单中。

悬停 @ 按钮

鼠标悬停任意文件条目时,右侧浮现 @ 按钮(覆盖在条目上,不挤占文件名省略号布局)。点击与菜单里「添加到对话」等价:插入可点击的引用 chip,点击 chip 可在右侧栏预览该文件。

目录与工作区根

  • 目录条目: 支持在资源管理器中显示、新建文件 / 文件夹、复制路径、重命名、删除文件夹(整目录进回收站,二次确认)。
  • 根目录空白区: 在条目下方空白处右键,可新建文件、新建文件夹、检查更新;新建条目落在工作区根,根路径来自树容器的 data-files-root 属性。

卸载与清理

卸载后 README 说明不会残留路由、样式标签或监听器;可用控制台检查 style[data-plugin="dsh-file-extension"] 是否为 null,或对 /api/dsh-file-extension/capabilities 请求是否返回 404。

安装与启用

网页版 profile

官方安装命令如下。安装后需重启 harness,并在浏览器中硬刷新(Ctrl+Shift+R)。

dsh plugin --profile web add github:badwoo/dsh-file-extension

从本地目录安装时,README 示例为进入克隆后的目录后执行(lib/ 已随仓库提交,无需本地构建):

dsh plugin --profile web add "$(pwd)"

桌面版

桌面 profile 由 Electron 应用独占管理,dsh plugin --profile desktop 会拒绝操作。请通过应用内 设置 → 插件 → 添加 安装,或按 README 说明手动把包加入桌面 profile 的 package.json 与 dsh.profile.bundles 后重启应用。

卸载

dsh plugin --profile web remove dsh-file-extension

同样需重启 harness 并硬刷新浏览器。

典型用法

  1. 把文件引用进对话: 右键文件选「添加到对话」,或悬停后点 @;chip 插入即为完成态,无需再按 Tab 补全。发送后路径会按规范序列化(含空格的路径自动加引号,目录带尾斜杠)。
  2. 安全删除: 选「删除」,确认框会说明移入回收站;Windows 上 README 记载通过 PowerShell 调用 SendToRecycleBin,并曾在实机上确认文件出现在回收站。
  3. 副本保存: 「另存为…」可编辑文件名与目标文件夹;「选择…」调用宿主目录对话框。若对话框无响应,按钮会显示「等待宿主响应…」,30 秒后可提示直接输入路径,留空则保存在原文件旁。
  4. 在根目录新建: 在文件树条目下方空白处右键,选新建文件或新建文件夹,名称经对话框收集并由宿主校验。

操作完成后,文件树依赖目录监听自动刷新;若删除的是正在预览的文件,对应预览标签会一并关闭。

网页版与桌面版差异

插件 UI 跑在浏览器里,但读写、回收站、资源管理器打开等行为发生在运行 dsh 宿主进程的那台机器上,而不是单纯「打开页面的那台浏览器」所在环境。

能力 桌面版 网页版(宿主同机) 网页版(宿主在远端)
在文件资源管理器中显示 支持 经宿主桌面打开器 置灰 + tooltip
添加到对话 / 新标签预览 / 复制路径 / 重命名 支持 支持 支持(重命名等仍走宿主文件系统)
另存为 原生目录选择 + 宿主写盘 同上 可降级为浏览器下载(默认上限 32 MiB,配置项 maxDownloadBytes)
删除进回收站 支持 支持 取决于宿主操作系统

若部署未挂载 session.openWorkspacePath 相关 Remote,「在文件资源管理器中显示」会保持置灰。

兼容性与耦合面

插件主要从官方文件树行上读取三个 DOM 属性(data-files-entry、data-files-path、data-sidebar-right-session)。若未来 dsh 改名这些属性,菜单与悬停按钮可能静默失效;README 指出修复通常只需改 src/client/controller.js 里的一行常量。

其他 README 记载的已知限制包括:行内重命名是覆盖层;企业代理下「检查更新」需能访问 api.github.com(可用 --use-system-ca 或 NODE_EXTRA_CA_CERTS);就地更新依赖 pluginManager 是否可用。

适用场景与注意

适合谁: 长期在 DSH 右侧文件树里改文件、往对话里 @ 文件、又希望删除走回收站而不是硬删的开发者。

权限与安全: 插件路由经 ctx.connection.requestRejection 鉴权,未鉴权请求返回 401; nevertheless,所有文件操作以当前 dsh 宿主进程的权限执行。安装前应阅读 仓库源码 与 MIT 许可证,确认与自身部署策略一致。DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-file-extension 把 Trae 风格的文件树操作收敛到右侧栏:自绘菜单、悬停 @、回收站删除与另存为副本,并区分网页版与桌面版的宿主能力。需要安装说明与平台细节时,以 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/badwoo/dsh-file-extension
  • GitHub:https://github.com/badwoo/dsh-file-extension
羽毛球分组比赛记分
小程序二维码

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

Xiaoye