前言¶
在 DeepSeek Harness(DSH)里,智能体读取文件时通常需要拿到一个可访问的路径。DSH 自带图片拖拽处理,但 PDF、Word、Excel、ZIP、文本等非图片文件如果只能手工复制路径,体验会偏重。dsh-file-drop 提供一个持久插件入口:把非图片文件通过拖拽或点击上传到当前会话上下文,把文件路径直接写入输入框草稿,agent 即可读取。
这是什么¶
dsh-file-drop 是 DeepSeek Harness 持久插件,仓库为 dannyvan/dsh-file-drop,许可证为 MIT,Node 引擎要求 >=22。
它解决的问题比较直接:把非图片文件变成 DSH 输入框里可编辑、可继续输入的路径文本。文件类型包括 PDF、Word、Excel、ZIP、文本等。插件不会把文件“变成图片”,而是尽量拿到可读取的文件路径或工作区路径。
核心功能¶
下面介绍已核实的主要能力。
三种入口¶
1、支持拖拽到窗口任意位置上传非图片文件。
2、支持点击回形针按钮打开系统文件选择器并多选。
3、支持 hover 气泡提示选择文件或将文件拖到窗口任意位置。
路径获取策略¶
插件按可用性优先处理文件:
1、桌面壳直取 Finder 原始路径,实现零上传。
2、拖拽自带 text/uri-list 路径,例如 Obsidian 拖笔记。
3、浏览器或无壳时通过 POST /api/dsh-file-drop 上传到 <会话工作区>/.dsh-drops/,并返回工作区路径。
写入与拦截¶
插件在 window 捕获阶段拦截拖拽事件,先于 DSH 自带 document 级图片拖拽处理。
文本类按文本直写,二进制经 base64 解码写真实字节。
安装与启用¶
先确认 Node 环境满足 >=22。下面命令使用本地 link 路径安装:
dsh plugin --profile web add "link:/Users/fanxiaokang/dsh-file-drop"
执行后重启 dsh web 生效。
典型用法¶
经过上面的步骤后,可以使用以下入口。
拖拽上传¶
把文件拖到窗口任意位置,出现全屏高亮浮层后松手即可获取文件。
回形针按钮¶
点击输入框工具行左侧 28px 圆形原生风格回形针按钮,会弹出系统文件选择器,支持多选。
hover 气泡¶
hover 时气泡显示「点击选择文件 · 也可把文件拖到窗口任意位置」,1.5s 自动消失,每次 hover 循环。
使用桌面壳直取路径¶
使用桌面壳时,通过 window.dshDesktop 的 webUtils.getPathForFile 直取原始路径。
拖拽 Obsidian 笔记等自带 text/uri-list 路径时,也可以直接取路径。
浏览器或无壳上传¶
浏览器或无壳时,文件通过下面接口保存到会话工作区:
POST /api/dsh-file-drop
保存位置为:
<会话工作区>/.dsh-drops/
返回工作区路径。
可选桌面壳¶
配套桌面壳是可选、推荐组件。启动命令如下:
cd ~/dsh-desktop/
npm start
它会复用或拉起 dsh web,地址为:
127.0.0.1:3080
适用场景与注意¶
适合在 DSH 网页界面里处理非图片文件,尤其是希望把 PDF、Word、Excel、ZIP、文本等文件路径快速写入输入框的场景。
使用前需要注意:
1、单文件限制为 ≤ 25MB,这是上传兜底路径的限制;壳直取路径不受限。
2、壳直取路径如果指向工作区外文件,agent 读取需要沙箱放行;workspace-write 模式下需要权限配置。
3、插件会以当前 dsh 进程权限运行。安装前建议检查源码与许可证。
4、安装命令使用本地 link 路径,且需要重启 dsh web 生效。
5、配套桌面壳为可选组件;不使用桌面壳时,浏览器路径会走上传兜底。
结尾¶
dsh-file-drop 的价值在于把非图片文件进入 DSH 会话的步骤简化为拖拽或点击,并尽量让 agent 直接拿到可用路径。目录页与仓库地址如下:
https://www.skillhub.cn/plugins/dannyvan/dsh-file-drop
https://github.com/dannyvan/dsh-file-drop