dsh-drop-in:在 DSH Web 输入框中拖入或粘贴文件并随消息发送

前言

在 DSH(DeepSeek Harness)Web 界面里写 prompt 时,如果 agent 需要读取本机文件,常见做法是先手动输入路径,或者把文件内容复制进消息。这个流程有两个常见麻烦:路径容易写错,内容复制也会丢失原始文件位置;图片拖入时还可能被内置图片上传流程接走。

dsh-drop-in 针对 DSH Web 输入框做文件接入:从系统文件管理器拖入或粘贴文件后,文件会以原生引用气泡和文件卡片随消息发送,并把绝对路径交给 agent。下面介绍它的功能、安装方式和典型用法。

这是什么

dsh-drop-in 是面向 DSH Web composer 场景的插件,核心是把拖入或粘贴的文件变成可发送的引用,而不是只把图片走原生上传链路。仓库路径为 lbl61/dsh-drop-in,许可证为 MIT。

它的主要作用是:

  • 让文件在输入框中显示为引用气泡或上方 chip bar。
  • 发送后在用户气泡中渲染文件卡片。
  • 把文件的绝对路径作为引用交给 agent。
  • 在 DSH Desktop 和普通浏览器下分别提供不同的路径或 fallback 行为。

核心功能

  • 支持从系统文件管理器拖入任意文件/文件夹;图片按文件处理,官方图片拖入覆盖不再抢占事件。
  • 输入框聚焦时,拖入或粘贴的文件会在光标处插入为原生引用气泡,也支持在已有文本中间插入。
  • 输入框未聚焦时,文件显示在输入框上方的 chip bar,包含图标、名称、大小、路径状态,可移除,并按路径去重。
  • 发送时,引用会扩展为包含绝对路径的引用;用户气泡渲染为带类型徽章的文件卡片。
  • 支持粘贴图片/文件;粘贴的二进制内容以 base64 持久化到 .dsh-drops/<sessionId>/
  • EnterCtrl+Enter 和发送按钮都可以发送;agent 运行中发送也支持,并渲染相同文件卡片。
  • 提供 dropped_files 工具,让 agent 列出仍未发送的拖入文件。
  • DSH Desktop 下绝对路径来自 preload bridge;普通浏览器 fallback 会把文本文件复制到 workspace 的 .dsh-drops/

安装与启用

使用 v1.3.0 安装命令:

dsh plugin --profile web add https://github.com/lbl61/dsh-drop-in/archive/refs/tags/v1.3.0.tar.gz

插件提供 enabled 主开关。关闭后,拖放/粘贴会回退到内置行为。

典型用法

1、从 Explorer 拖文件到聊天页,或在 composer 中粘贴图片/文件。

2、如果 composer 聚焦,文件作为原生引用气泡插入光标处;否则显示在输入框上方 chip bar

3、输入消息后,通过 EnterCtrl+Enter 或发送按钮发送;agent 运行中也可发送。

4、发送后,气泡显示文件卡片;agent 收到绝对路径引用(@[name](path) 或“拖入文件”块)并可读取文件。

适用场景与注意

适合在 DSH Web 中频繁引用本机文件、文件夹、图片或文本的 agent 开发场景。它适合希望把文件路径作为消息一部分发送,而不是手动输入路径或粘贴内容的流程。

注意:

  • 插件会以当前 dsh 进程权限运行,安装前应检查源码、许可证以及本机权限边界。
  • DSH Desktop 依赖 Electron preload bridge 提供绝对路径;Electron ≥ 32 已移除 File.path
  • 普通浏览器无 preload bridge 时,文本文件会复制到 workspace 的 .dsh-drops/;粘贴二进制经 file-copy 路由持久化,并有基于 session cwd 的 workspace-write sandbox policy。
  • 如不需要插件行为,可使用 enabled 关闭,使拖放/粘贴回退到内置行为。
  • 卸载需要从 dsh.profile.bundles 数组移除、删除对应 node_modules 目录,并重启 dsh web

链接

  • GitHub:https://github.com/lbl61/dsh-drop-in
  • 插件线索中给出的目录页:https://www.skillhub.cn/plugins/lbl61/dsh-drop-in
羽毛球分组比赛记分
小程序二维码

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

小夜