前言¶
在 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 并硬刷新浏览器。
典型用法¶
- 把文件引用进对话: 右键文件选「添加到对话」,或悬停后点 @;chip 插入即为完成态,无需再按 Tab 补全。发送后路径会按规范序列化(含空格的路径自动加引号,目录带尾斜杠)。
- 安全删除: 选「删除」,确认框会说明移入回收站;Windows 上 README 记载通过 PowerShell 调用
SendToRecycleBin,并曾在实机上确认文件出现在回收站。 - 副本保存: 「另存为…」可编辑文件名与目标文件夹;「选择…」调用宿主目录对话框。若对话框无响应,按钮会显示「等待宿主响应…」,30 秒后可提示直接输入路径,留空则保存在原文件旁。
- 在根目录新建: 在文件树条目下方空白处右键,选新建文件或新建文件夹,名称经对话框收集并由宿主校验。
操作完成后,文件树依赖目录监听自动刷新;若删除的是正在预览的文件,对应预览标签会一并关闭。
网页版与桌面版差异¶
插件 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