前言¶
在 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>/。 Enter、Ctrl+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、输入消息后,通过 Enter、Ctrl+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