前言¶
DeepSeek Harness (DSH) Desktop 的原生拖拽能力存在局限:拖入图片走原生视觉通道,拖入文件夹收养为工作区。拖入任意单个文件(PDF、ZIP、代码等)没有官方通道,且 Web 端受浏览器安全限制无法获取本地绝对路径,导致 Agent 无法“知道”文件指向的具体位置。
dsh-drop-in 插件通过捕获拖拽事件,将本地文件上传至会话目录,并将网页资源下载至主机端,最终在输入框注入 Markdown 格式的绝对路径引用。Agent 可以直接通过 fs 工具读取这些引用,从而实现对任意内容的文件级访问。
核心功能¶
- 本地文件上传:拖入本地文件(PDF、ZIP、代码等)会流式上传至
<workspace>/.dropped/<sessionId>/,并在输入框生成[附件: 文件名](绝对路径)。 - 网页资源下载:拖入网页图片或链接,由 Host 端流式下载至本地。
- 纯图片放行:纯本地图片直接通过原生视觉通道,不落盘。
- 文件夹引用:拖入文件夹通过桌面桥解析绝对路径,生成引用。
- 文本处理:拖入文本直接插入或存为
.md文件。 - Host API:提供
/upload、/fetch-url、/save-text、/file等接口。
安装¶
前置要求:
- DSH Desktop for Windows
- Node.js >= 22.13
安装命令:
dsh plugin add github:zhanghuqqqq/dsh-drop-in --profile <你的profile>
安装完成后需重启 DSH Desktop。
使用示例¶
- 拖入本地文件(PDF/zip 等):生成
[附件: 文件名](绝对路径)。 - 拖入网页图片或链接:触发 Host 端流式下载,生成
[网页图片: 名](绝对路径)。 - 拖入纯本地图片:直接作为聊天图片附件。
- 拖入文件夹:解析磁盘绝对路径,生成
[文件夹: 名](绝对路径)。 - 拖入文本:直接插入或存为文件。
工作原理¶
插件通过 document.capture 拦截拖拽事件,根据内容类型分发至不同处理逻辑:
1. 文件:调用 Host API PUT /upload 上传至会话目录,路径按 sessionId 隔离,重名自动添加后缀。
2. URL:调用 Host API POST /fetch-url,Host 端使用 Node fetch 流式下载,支持重定向、重试及 2 GiB 上限。
3. 纯图片:判断 dt.files 全部为图片且无文件夹,放行给原生视觉附件。
4. 文件夹:通过桌面桥 __DSH_DESKTOP_FILE_PATH__ 解析绝对路径,生成引用。
5. 文本:小于 5000 字符插入输入框,否则存为 .md 文件。
限制与注意¶
- 单次拖入限制:最多 20 个文件。
- 大小限制:URL 下载上限 2 GiB,上传/下载上限 8 GiB。
- 原生行为:纯图片拖入走原生视觉附件,不会落盘出引用。
- 依赖契约:需要 DSH Desktop 的 slots/webServer/systemPrompt 插件契约(
@deepseek-ai/*0.1.0-rc 系列)。
生态与链接¶
- 仓库:https://github.com/zhanghuqqqq/dsh-drop-in
- 目录页:https://www.skillhub.cn/plugins/zhanghuqqqq/dsh-drop-in
- 许可证:MIT