djt889 / dsh-drag-to-attachment

已收录

DSH(DeepSeek Harness)Web UI 插件:把本地任意文件/文件夹拖入或粘贴为附件(图片、任意文件、整个文件夹)或定位真实路径——一个开关,两种模式。dsh-plugin for DeepSeek Harness: drop or paste local files/folders as attachments or locate real paths — one toggle, two modes.

main工具 查看源代码

安装

npx -y @deepseek-ai/dsh plugin --profile web add github:djt889/dsh-drag-to-attachment

此安装命令根据 GitHub 仓库地址生成,是未经验证的安装起点。

README

维护者编写的文档快照。

在 GitHub 查看 ↗
提交版本 eb2b2a4同步于 2026年8月17日

dsh-drag-to-attachment

一个面向 DeepSeek Harness Web UI 的 dsh-plugin:把本地任意文件或文件夹拖入(或粘贴进)页面任意位置——一个开关,两种模式:附件模式图片、文件、文件夹识别为真实路径并以附件方块引用(图片方块带缩略图预览;不复制、不上传),发送时把真实路径随消息送达模型;路径模式直接把真实路径插入输入框草稿。

dsh-plugin License

中文 | English

为什么做这个

  • 浏览器从不把拖入/粘贴文件的真实磁盘路径交给网页——DSH 操作的是真实文件,它的工具要读取本机实际路径。本插件补齐这个缺口:把拖入的文件定位回真实位置,以附件形式引用(不复制、不产生 .drops/ 副本)。
  • 图片以带缩略图预览的附件方块呈现(本地 blob 预览,点击 ✕ 移除,hover 显示真实路径),发送时与所有附件一样以真实路径送达——不走原生图片附件通道(纯文本模型不会被"当前模型不支持图片"拦截)。
  • 其他文件/文件夹:DSH 原生不支持非图片附件,插件把它们显示为附件栏方块(hover 显示真实路径),发送时真实路径以纯文本随消息送达——agent 搭配视觉插件(如 dsh-vision-toolkit)或文档工具读取。视觉输入搭配视觉插件使用

两种模式(一个开关)

输入框工具行左侧按钮:📎 附件 / 📄 路径——选择保存在浏览器 localStorage(dsh.dragToAttachment.mode),刷新后保留。

能力附件模式(默认)路径模式
任意位置拖入 / 粘贴
图片附件方块(缩略图预览 + 引用真实路径)插入真实路径
任意文件(不限扩展名)附件方块(引用真实路径,hover 显示)插入真实路径
文件夹附件方块 📁(引用文件夹路径)插入文件夹路径
发送消息里显示附件卡片(图片缩略图 / 文件图标 + 文件名,不显示路径文本);底层 agent 收到的是真实路径路径已在草稿中,直接发送
是否复制/上传文件从不(不产生 .drops/ 副本)从不
不输入文字直接发送✅(不可见占位符自动激活发送按钮)

说明:所有附件必须能被定位到真实路径(工作区优先,再已注册工作区、桌面/文档/下载、系统索引、受控递归搜索);定位失败(如未保存的新截图)会弹出可见提示,不会静默丢弃。消息里的缩略图由本地只读代理渲染,不占用模型 token——发给模型的只有真实路径文本,图片内容不会进入消息。

安装

dsh plugin --profile web add github:djt889/dsh-drag-to-attachment
# 或本地 checkout:
dsh plugin --profile web add /path/to/dsh-drag-to-attachment

安装后重启 Web profile(重启 dsh web)并硬刷新浏览器生效。无设置页,一切通过工具行开关控制。

使用

  1. 输入框工具行确认模式(📎 附件 默认 / 📄 路径);
  2. 从文件管理器拖入文件或文件夹到页面任意位置(全页面压暗 + 提示出现),或直接 Ctrl+V 粘贴(粘贴文件夹也支持);
  3. 附件模式:
    • 拖入/粘贴 → 附件方块立即出现(图片即时显示缩略图);
    • 定位中的方块右上角有实时圆环进度(快速索引 → 全盘搜索,百分比实时增长);
    • 图片 → 附件栏方块(缩略图预览,✕ 移除,hover 显示完整真实路径);
    • 其他文件/文件夹 → 附件栏方块(✕ 移除,hover 显示完整真实路径);
    • 发送后:消息里显示附件卡片(图片缩略图 / 文件图标 + 文件名),不显示路径文本;agent 底层收到真实路径(搭配视觉插件读取);
    • 不输入任何文字也可以直接发送(所有附件路径就绪后发送按钮才激活);
  4. 路径模式:拖入/粘贴时每个文件显示实时圆环进度 chip(多个文件并行、各自独立进度与百分比),命中后路径逐行插入草稿(多个同名候选时弹出选择列表);
  5. agent 搭配视觉插件 / 文档工具读取路径对应的文件。

附件去重:同名且同路径的附件会比对 MD5——内容一致则提示"附件已上传"且不重复添加;同名但路径不同视为不同文件,直接添加(不比对)。粘贴的截图按内容寻址保存(相同截图只会产生一份 .drops/ 文件),重复粘贴直接提示已上传。

文件不会被复制或上传到工作区 .drops/——附件引用的就是原始文件位置。

文件结构

dsh-drag-to-attachment/
├─ package.json        bundle 声明(dsh.bundle.patch / dsh.client)
├─ cordis.patch.yml    挂载行(insert drag-to-attachment)
├─ lib/
│  ├─ index.js         host:/locate(分阶段定位)· /save(fallback 保存)· /md5(去重)· /file(缩略图代理)
│  └─ client.js        browser:全局拖拽/粘贴 + 双模式 + 实时圆环进度 + 附件卡片 + 发送
├─ vendor/everything/  内置 Everything(Windows 免安装全盘索引,voidtools freeware)
├─ LICENSE             BSD-3-Clause
└─ README.md(中文)/ README.en.md(English)

路径定位(实时分阶段)

拖入/粘贴后立即显示进度,搜索按两阶段进行(每阶段完成才进入下一阶段):

  1. 快速索引(tier-fast,毫秒级):工作区/常用目录浅探 → 操作系统索引;
  2. 全盘搜索(tier-full):有边界的递归搜索(每根 ≤100,000 项、深度 ≤24)+ 全盘索引;
  3. 多个同名候选 → 按文件名+大小过滤 → 采样指纹(开头/中间/结尾 64KB)→ 必要时完整 SHA-256 → 仍相同则弹路径选择列表。

各平台索引(开箱即用,无需安装)

平台索引方案说明
Windows内置 Everythingvendor/everything/,host 自动启动,es.exe 查询)毫秒级
macOSSpotlight(mdfind,系统自带)毫秒级
Linux内置 Everything 式索引(Node 实现:后台扫描 home+/mnt+/media,内存文件名索引)毫秒级(首次索引后台建立)

粘贴的截图直接复制到工作区 .drops/(不索引,秒级);索引不到的文件也自动保存到 .drops/(fallback)。.drops/ 可随时清理。

兼容性

DSH 版本状态
当前环境(deepseek-harness 0.1.0-rc 系列,web profile bundle 模型)✅ 可用

本插件依赖 DSH 若干未公开的内部接口conversation 服务、sendSession/draftImages/createDraftImages 签名、附件栏类名 _attachmentswebServer 路由、workspace 注册表格式)。DSH 升级后可能失效,症状多为:插件不加载、方块位置错乱、图片附件异常。

许可证

BSD-3-Clause——路径定位代码移植自 bill9109/dsh-drag-and-drop(BSD-3-Clause);内置 Everything 为 voidtools 免费软件(freeware)。详见 LICENSE

仓库信息

开发语言
JavaScript
许可证
BSD-3-Clause
最新发布
v1.0.2
最后更新
2026年8月17日 05:37

谨慎安装

请检查源代码、权限、生命周期脚本、依赖与网络访问;不受信任的插件应先在隔离环境中测试。