前言¶
在 DeepSeek Harness(DSH)里跟模型讨论代码或文档时,经常要把「某个文件」或「文件里的一段」放进会话输入框。手动打 @ 路径、复制粘贴,再对齐相对工作区根目录的写法,步骤多也容易出错。dsh-file-mention 是面向 DSH Web / Desktop 界面的客户端插件:在右侧文件树和文件预览里提供菜单与浮动按钮,把引用写成与 @ 文件选择器同一套语法的原子节点,点一下即可插入,而不是在输入框里堆一大段纯文本。
这是什么¶
维护者 Tinxyoo 在 GitHub 开源的 dsh-file-mention(tinxyoo/dsh-file-mention)属于 DSH 客户端(Client) 类插件。它不改动 CLI 会话,只在浏览器 / Desktop 壳层的右侧目录树与预览页上扩展交互:引用整文件,或引用预览里选中的 Markdown / 代码 / 纯文本片段,结果都进入当前输入框,并可像内置 @ 引用一样整块删除、点击预览。
核心功能¶
下面两件事是 README 里明确写明的能力,对应两种常见操作路径。
引用整个文件¶
- 打开右侧文件树(
files页,或文件预览旁的文件树)。 - 对任意文件 右键 → 添加到输入框。
- 输入框会出现一个 文件 chip;点击可打开预览;光标在 chip 旁 退格一次 会整块删掉该引用。
插入的是输入框的 原子节点,不是逐字路径字符串。路径相对工作区根目录;含空格时语法与 @ 选择器一致,例如 @"my file.md"。
引用文件中的选中内容¶
- 在右侧文件预览(Markdown、代码或纯文本)里 选中一段内容。
- 选区上方出现浮动的 引用到输入框,点击。
- 输入框插入一张 引用卡片,可紧接着写问题。
引用卡片同样是原子节点:从卡片末尾退格时,第一次可能先去掉自动补的分隔空格,第二次整张卡片消失。
暂未覆盖的范围¶
按官方说明,内容引用目前限于文本类预览;PDF / Office 文本层尚未接入。纯 CLI 会话看不到插件效果。
安装与启用¶
插件以 Client bundle 形式挂到可写的 profile 上;前提是你运行的是 DSH 的 Web / Desktop 界面。Desktop 环境自带 pnpm;安装后 不要移动或删除 源目录——profile 里是指向该目录的 link: 引用,目录被删或改名会导致插件失效。
界面安装(推荐)¶
- 将仓库 克隆或下载 到本机固定位置(README 要求安装后保持路径不变)。
- 左侧栏 → 插件(Plugins) → 添加插件。
- 填写仓库地址或本地绝对路径,例如:
https://github.com/Tinxyoo/dsh-file-mention
或
/Users/you/Downloads/file-mention
- 点 安装 → 完成后点 Enable now(若提示需要重启,则重启 DSH)。
通过 agent 安装¶
目录就位后,可对 agent 说明「安装 <绝对路径> 这个插件」;由 agent 调用 plugin_manager install_bundle。具体措辞以你当前 DSH 版本自带的 agent 能力为准。
安装前建议自行查阅仓库源码与 MIT 许可证;Client 插件在 当前 DSH 进程权限 下运行,与任何第三方扩展一样,只安装你信任的来源。
典型用法¶
让模型阅读某个配置文件¶
打开工作区右侧文件树,在目标文件上右键 添加到输入框,chip 出现后输入「请解释这份配置里每项的含义」之类的问题并发送。模型侧收到的引用语法与手动 @ 文件一致。
让模型只关注预览里的一段代码¶
在预览 pane 中选中函数或段落,点 引用到输入框,在引用卡片后写「这段有没有边界情况」等问题。适合 Markdown 文档、源码和纯文本预览;不要在 PDF 预览里期待同样的选区按钮。
技术要点与版本¶
package.json 声明引擎范围为 dsh >=0.2.2-rc.1 <0.3.0-0,README 亦写明面向 0.2.2-rc.1 一代 Web 组合开发。实现上 无构建步骤:client.js 直接作为浏览器端模块加载,无第三方运行时依赖。
| 能力 | 实现概要(来自 README) |
|---|---|
| 文件右键菜单 | ctx.contextMenus.register({ target: 'file' }),动作向会话作用域派发 slash/input-insert-reference |
| 文件 chip | ReferenceChipNode(source: reference、appearance: file、clipboardText: @path) |
| 选区监听 | 预览工具栏槽位 sidebar.right.tab.document.actions,限定 [data-textpreview-content] |
| 浮动按钮 | shell.overlay,点击调用 inputActions.insertQuote() |
宿主升级后若上述接缝变化,可能需要小改 client.js。开发时改完 client.js:客户端 HMR 开启则可自动重载,否则刷新页面或重启 DSH。调试可配合 cordis_inspect_query,查看 Slots.listSubTree 下 sidebar.right.tab.document.actions / shell.overlay 是否注册成功。
适用场景与注意¶
适合谁: 长期在 DSH Web / Desktop 里用右侧文件树和预览写 prompt、希望少打字、少复制粘贴的开发者。
应注意:
- 插件分类为客户端,纯 CLI 无 UI,无法使用本功能。
- 本地
link:安装依赖目录持久存在;换机或清目录需重新安装。 - 内容引用依赖预览 DOM 标记
[data-textpreview-content],宿主大版本改版可能导致浮层失效,需关注仓库 Issue 或自行改client.js。 - 社区目录 SkillHub 插件页 与 GitHub 为独立信息源,与 DeepSeek / 幻方无官方商店从属关系;安装与审阅源码仍应以仓库为准。
卸载:在 插件 页关闭该 bundle 或移除;对该 profile 下所有会话立即失效。
结尾¶
dsh-file-mention 把「文件树右键」和「预览选区」两条路径接到 DSH 输入框的原子引用上,与现有 @ 语法对齐,改动面集中在 client.js,无额外构建。需要功能说明与示意图时,可看维护者提供的 在线介绍页;源码、问题反馈与安装文件见 GitHub:Tinxyoo/dsh-file-mention。