用 dsh-drag-and-drop 把本地文件拖进 DeepSeek Harness 并插入真实路径

前言

DeepSeek Harness(dsh)的工具跑在本机上:读文件、改代码、执行命令,用的都是操作系统里的真实路径。网页界面却是另一套规则。出于安全考虑,浏览器几乎从不把拖入文件的真实文件系统路径交给页面,最多给一个本地文件 URI,很多时候什么都不给。结果就是:把 PDF、源码目录或配置文件拖进输入框,要么被当成上传(得到一份切断了相邻依赖的副本),要么触发「仅支持 PNG、JPG、WebP、GIF」一类提示,要么只能手敲一长串绝对路径。

dsh 的设计口号是「一切皆插件」。模型和工具可以换,Web UI 的交互同样可以补。社区目录里的 dsh-drag-and-drop 就是在补这个缺口:把文件或文件夹拖到页面任意位置,插件在运行 dsh 的那台机器上把路径解析回来,再以可移除标签的形式挂到输入框上方。

需要先说清楚:下面介绍的是 DeepSeek Harness 插件库 收录的社区插件。该站点是独立目录,与 DeepSeek / 幻方没有官方从属关系,不是官方应用商店。本文依据目录详情页、GitHub 仓库的 README / package.json / CHANGELOG,以及 DeepSeek Harness 官方仓库 交叉核对。

这是什么

dsh-drag-and-drop 是一款界面增强插件,由 akiracod 维护,当前发布版本为 v0.2.0(CHANGELOG 标注日期 2026-08-14)。仓库主要语言是 TypeScript,许可证为 BSD-3-Clause。GitHub 仓库页面当前显示 2 星;社区目录页收录时显示 1 星。

它解决的问题很具体:在 DSH Web UI 里拖入本地文件或文件夹,得到的是原始绝对路径,而不是一份上传副本。文档和文件夹会变成输入框上方的可移除芯片(chip),输入框本身保持空白,方便继续打字;也可以直接点芯片栏的发送按钮,不打字就发出去。

仓库 README 写明:这是 omdsh-dev/dsh-drag-and-drop(原 bill9109/dsh-drag-and-drop)的维护 fork。package.json 里的包名仍是 @omdsh-dev/dsh-drag-and-drop,卸载时要用这个名字。

核心功能

拖入即挂路径,不上传文件

把文件拖到 Web UI 任意位置即可。拖拽过程中会有全页面压暗和模糊提示。松开后,每个项目变成输入框上方文件栏里的一枚芯片:悬停可看完整解析路径,点 × 移除。支持一次拖入多个文件或文件夹。

插件不会上传、复制、移动、修改或删除文件。文件始终留在原来的目录里。草稿通过 DSH 的输入状态服务写入,不直接改输入框 DOM。

文档走芯片,图片走原生

v0.2.0 相对上游的主要变化在交互,而不是定位算法:

  • 文档和文件夹显示为芯片,不再把 C:\...\file.docx 这类路径文本塞进输入框。
  • 芯片栏自带「发送」按钮,解析出的路径会自动拼进发出的消息。
  • 拖入文档不再触发输入框那个「仅支持 PNG、JPG、WebP、GIF」提示。
  • 纯图片拖放仍走原生逻辑,显示缩略图附件。

浏览器藏路径时,在本机把文件找回来

如果浏览器提供了本地文件 URI,插件直接转成当前系统的原生路径,覆盖 POSIX、Windows 盘符和 UNC 网络路径。

如果浏览器把路径完全藏起来,定位顺序是:

  1. 当前 Workspace
  2. 其他已注册 Workspace
  3. Desktop、Documents、Downloads
  4. 操作系统文件索引
  5. 有边界限制的平台目录搜索

系统索引按平台不同:macOS 用 Spotlight;Linux 优先 plocate,其次 locate;Windows 优先 Everything CLI,其次 PowerShell。Linux 在索引没有结果时还会搜用户主目录以及 /mnt/media 下的挂载点;Windows 则会搜用户目录和可用固定磁盘。

搜索是有上限的:单次外部索引命令 3 秒超时,最多保留 100 个候选,每个递归根最多访问 20,000 个目录项,读不到的目录和文件直接跳过。

同名文件先按完整文件名和大小过滤,修改时间只用于排序。只剩一个候选时不读文件内容;多个候选才比较开头、中间、结尾的采样指纹,大文件采样仍冲突才会算完整 SHA-256。内容完全相同、无法自动区分时,弹出路径列表让用户选。文件夹按名称匹配,结构相同则再对最多 24 个确定性选择的文件做内容采样。目录遍历最多 10,000 个项目、32 层,不跟随符号链接或 Windows junction。

安装与启用

社区目录页给出的安装命令是:

dsh plugin add github:akiracod/dsh-drag-and-drop

这是一个 Web UI 插件。仓库 README 要求装进 web profile,并声明 package.json 里带有 dsh.bundledsh.client,不需要改 DSH 源码,也不再读取旧的 config.yaml

dsh plugin --profile web add github:AKIRACOD/dsh-drag-and-drop

本地 checkout 可以写成:

dsh plugin --profile web add /path/to/dsh-drag-and-drop

仓库已提交 lib/ 构建产物,安装后不用再构建。package.json 要求 Node.js ^20.0.0 || >=22.0.0

需要可复现安装时,按目录页说明固定 commit 哈希:

dsh plugin add github:akiracod/dsh-drag-and-drop#commit

commit 换成实际哈希。

装好之后,按你平时启动 DSH Web UI 的方式重启,再刷新浏览器。插件会出现在浏览器引导图 __DSH_BOOT__ 里,client bundle 随页面加载。只装不重启,页面上不会生效。

升级:

dsh plugin --profile web update github:AKIRACOD/dsh-drag-and-drop

卸载要用包名,不是 GitHub 路径:

dsh plugin --profile web remove @omdsh-dev/dsh-drag-and-drop

卸载后同样需要重启 Web UI 并硬刷新浏览器。

目录页和仓库都提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码。装之前应检查源代码仓库和许可证。

典型用法

仓库 README 里的操作步骤可以按原样做:

  1. 从 Finder、Linux 文件管理器或 Windows 资源管理器,把文件或文件夹拖到 DSH Web UI 的任意位置。
  2. 出现全页面拖拽提示后再松开。每个项目变成输入框上方文件栏里的芯片。
  3. 悬停芯片查看完整路径,点 × 移除不需要的项。
  4. 只想发送这些文件时,点文件栏的「发送」按钮;如果同时还写了文字,按回车或点右下角原生发送按钮,路径会一并带上。

纯图片继续走原生附件。文档和文件夹走芯片栏。

拖完没有反应时,README 建议先确认全页面提示是否出现,再用下面命令检查 bundle 是否在 web profile 里,并确认已经重启 Web UI 且硬刷新过页面:

dsh --profile web --dump-config | grep drag-and-drop

大磁盘上定位偏慢时,Linux 可安装 plocate,Windows 可安装 Everything 及其命令行工具,并尽量把文件放在 Workspace 或常用目录里。macOS / Linux 上,浏览器隐藏路径时,位于所有可搜索根之外的文件夹可能定位失败,需要移进 Workspace 或安装系统索引。

适用场景与注意事项

适合已经在用 DSH Web UI、需要把本机文档、源码目录或配置文件交给智能体处理的人。典型情况是:文件就在 Workspace 或桌面 / 文档 / 下载目录里,你希望智能体读的是原路径,而不是一份上传副本。

几点需要留意:

  • 这是 Web UI 插件,要装进 web profile,装完必须重启 Web UI 并刷新浏览器。
  • 插件以当前 dsh 进程权限运行。安装前阅读源码和 BSD-3-Clause 许可证;社区目录不是 DeepSeek 官方商店。
  • 多数情况下只读元数据;只有多个同名同大小候选时才会读少量内容做指纹,采样仍无法区分才会读完整文件算 SHA-256。全部发生在运行 dsh 的本机。
  • 卸载命令是 remove @omdsh-dev/dsh-drag-and-drop,因为 fork 仍沿用上游包名。
  • 旧版 README 里的 pnpm --filter @deepseek-ai/dsh add ...config.yaml 流程已经过时,不要再用。

小结

dsh-drag-and-drop 把浏览器拖放和 DSH 需要的真实路径接起来:文档变成输入框上方的芯片,图片仍走原生附件,文件不离开原来的目录。当前版本是 v0.2.0,维护者是 akiracod,许可证 BSD-3-Clause。

目录详情页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-drag-and-drop-akiracod/

GitHub 仓库:https://github.com/akiracod/dsh-drag-and-drop

羽毛球分组比赛记分
小程序二维码

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

小夜