dsh-file-drop:把非图片文件路径写入 DSH 输入框

前言

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

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

小夜