dsh-drop-in: 拖拽即上传

前言

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
羽毛球分组比赛记分
小程序二维码

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

小夜