dsh-file-mention:在 DSH 里一键把文件和选区引用进输入框

前言

在 DeepSeek Harness(DSH)里跟模型讨论代码或文档时,经常要把「某个文件」或「文件里的一段」放进会话输入框。手动打 @ 路径、复制粘贴,再对齐相对工作区根目录的写法,步骤多也容易出错。dsh-file-mention 是面向 DSH Web / Desktop 界面的客户端插件:在右侧文件树和文件预览里提供菜单与浮动按钮,把引用写成与 @ 文件选择器同一套语法的原子节点,点一下即可插入,而不是在输入框里堆一大段纯文本。

这是什么

维护者 Tinxyoo 在 GitHub 开源的 dsh-file-mention(tinxyoo/dsh-file-mention)属于 DSH 客户端(Client) 类插件。它不改动 CLI 会话,只在浏览器 / Desktop 壳层的右侧目录树与预览页上扩展交互:引用整文件,或引用预览里选中的 Markdown / 代码 / 纯文本片段,结果都进入当前输入框,并可像内置 @ 引用一样整块删除、点击预览。

核心功能

下面两件事是 README 里明确写明的能力,对应两种常见操作路径。

引用整个文件

  1. 打开右侧文件树(files 页,或文件预览旁的文件树)。
  2. 对任意文件 右键 → 添加到输入框。
  3. 输入框会出现一个 文件 chip;点击可打开预览;光标在 chip 旁 退格一次 会整块删掉该引用。

插入的是输入框的 原子节点,不是逐字路径字符串。路径相对工作区根目录;含空格时语法与 @ 选择器一致,例如 @"my file.md"。

引用文件中的选中内容

  1. 在右侧文件预览(Markdown、代码或纯文本)里 选中一段内容。
  2. 选区上方出现浮动的 引用到输入框,点击。
  3. 输入框插入一张 引用卡片,可紧接着写问题。

引用卡片同样是原子节点:从卡片末尾退格时,第一次可能先去掉自动补的分隔空格,第二次整张卡片消失。

暂未覆盖的范围

按官方说明,内容引用目前限于文本类预览;PDF / Office 文本层尚未接入。纯 CLI 会话看不到插件效果。

安装与启用

插件以 Client bundle 形式挂到可写的 profile 上;前提是你运行的是 DSH 的 Web / Desktop 界面。Desktop 环境自带 pnpm;安装后 不要移动或删除 源目录——profile 里是指向该目录的 link: 引用,目录被删或改名会导致插件失效。

界面安装(推荐)

  1. 将仓库 克隆或下载 到本机固定位置(README 要求安装后保持路径不变)。
  2. 左侧栏 → 插件(Plugins) → 添加插件。
  3. 填写仓库地址或本地绝对路径,例如:
https://github.com/Tinxyoo/dsh-file-mention

或

/Users/you/Downloads/file-mention
  1. 点 安装 → 完成后点 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。

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

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

小夜