dsh-file-drag:从右侧文件树拖进输入框插入 @ 引用

前言

在 DeepSeek Harness(DSH)里给模型带上工作区文件,常见做法是打开输入框的 @ 选择器,在列表里点选路径。文件多、目录深时,要在树和 composer 之间来回切换。右侧栏「文件」标签本来就有完整文件树,若能把某一行直接拖到输入框,并插入与 @ 选文件相同的引用 chip,能少几步操作。dsh-file-drag 是社区维护者 Mr-giraffe1 提交的 Web UI 客户端插件,专门做这件事:按住文件行拖动,松手到输入框即插入引用,不替换官方文件树与附件栏。

这是什么

dsh-file-drag(仓库 Mr-giraffe1/dsh-file-drag)归类为 DSH 客户端插件:逻辑全在浏览器端,宿主半边为空 bundle。装上并在插件列表看到「文件拖拽引用」后,在右侧「文件」标签里拖动文件或文件夹行到会话输入框,即可插入 @ 文件引用;与手动 @ 选文件走的是同一类 chip,不是把纯文本硬塞进草稿。

核心功能

下面介绍 README 中已说明、且与 package.json 声明一致的能力。

拖拽引用

按住文件行拖动超过约 6px 进入拖拽,指针旁出现文件名 chip;拖到输入框上方时输入框出现品牌色描边,松手后插入引用。单击文件行仍打开预览(拖拽结束后的那一次 click 会被吞掉,避免误触)。拖到别处、按 Esc、窗口失焦会取消,不改动草稿。

真实引用通道

插入走 DSH 输入框自己的 API:conversation.input.shell(sessionId).addFiles(...),草稿里立刻渲染文件 chip 并自动补空格;必要时还有 insertReference / inputActions.insertText 两级降级。与官方「把系统文件拖进输入框」同一路径。

路径规则

路径自动转为相对当前会话工作目录的 @src/a.ts;带空格时使用 @"my file.txt";文件夹生成 @dir/(尾部 / 的文件夹引用)。

问题卡片

当输入框被提问卡片(ask_user_question / 计划审批)替换时,拖到卡片上会把 @相对路径 写进当前问题的「自由回答」框;计划审批等没有回答框的卡片会浮层提示,不再静默失效。注意:问题卡片里是纯文本路径(随答案发给模型),不是 DSH 引用 chip。

实现边界

插件只在 shell.overlay(拖拽浮层)和 conversation.input.overlay(输入框投放区)注册两个附加组件,不改文件树、不改附件栏、不写别人 DOM。依赖 DSH 内部 DOM 标记与 conversation.input.shell,非版本化契约;未来 DSH 变更可能静默失效,控制台会有 [dsh-file-drag] 告警。仅支持鼠标/触控笔;触摸拖拽未实现。暂不支持从文件预览标签、搜索结果等处拖动。

环境要求

  • DeepSeek Harness Web GUI(桌面版或浏览器访问 dsh web 均可)。
  • README 记载的开发验证版本:0.2.1-rc.3。
  • 依赖 DSH 自带的右侧「文件」标签与 @ 引用能力(默认可用)。
  • 插件 package 版本为 1.1.0(见仓库 package.json)。

安装与启用

这是 DSH bundle 包(宿主半边为空)。安装前请自行阅读仓库源码与 MIT 许可证;插件在 DSH 进程/Web 会话上下文中运行,权限与当前 Harness 一致。

先做:将仓库下载或放到本地目录,记下该目录的绝对路径。

再在 DSH 中作为本地 bundle 安装,任选其一:

  1. 让 Harness 的 Agent 执行 plugin_manager 的 install_bundle,target 填上述绝对路径;或
  2. 使用插件管理器的本地安装入口选择该目录。

安装结果应显示 applied,插件列表中出现「文件拖拽引用」。刷新页面(首次安装通常热生效;若仍是旧代码,重启 DSH)。profile 会记录 "dsh-file-drag": "link:<本仓库路径>",本地改 client.js 后刷新即可生效。

资料中未提供 dsh plugin add github:... 一类远程一键命令,请勿凭插件名拼接。

典型用法

  1. 打开右侧栏「文件」标签(桌面版可用 Ctrl+P)。
  2. 按住一个文件行并拖动。
  3. 拖到输入框上方松手。
  4. 输入框获得焦点,出现 @相对路径 的文件引用 chip,继续输入或发送。
操作 结果
单击文件行 打开文件预览
拖动文件行 → 输入框 插入文件引用
拖动文件夹行 → 输入框 插入文件夹引用(尾部 /)
问题卡片显示时拖入 写入该问题自由回答框(纯文本路径)
松手在别处 / Esc / 失焦 取消
会话正在提交、输入框暂不接受 不插入,控制台 [dsh-file-drag] 告警

卸载:在插件管理器中移除 dsh-file-drag,源码目录不受影响。

适用场景与注意

适合经常在「文件」树里定位路径、又要在 composer 里 @ 引用同一文件的 DSH 用户;也适合在 Agent 提问卡片里快速填入路径文本(需接受该场景下为纯文本而非 chip)。

安装前务必核对 GitHub 源码与许可证。插件依赖 DSH 未版本化的内部接口与 DOM 结构,升级 Harness 后若失效,先看浏览器控制台 [dsh-file-drag] 日志。社区目录 skillhub.cn 插件页 与 GitHub 均为第三方信息源,与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,目录站是独立社区索引。

结尾

dsh-file-drag 把右侧文件树和 composer 的 @ 引用用拖拽连在一起,改动面小、行为与官方引用一致。需要细节、Issue 或本地开发说明时,见仓库 README:https://github.com/Mr-giraffe1/dsh-file-drag;目录入口:https://www.skillhub.cn/plugins/Mr-giraffe1/dsh-file-drag。

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

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

Xiaoye