dsh-web-file-upload: Add arbitrary file upload for DSH Web Interface

前言

用 DeepSeek Harness 的 Web 界面跟 agent 对话时,如果你想让它读一份 PDF、一段代码或一个压缩包,会遇到一个限制:官方 Web 界面目前只支持图片粘贴/拖拽,非图片文件会提示「只能粘贴图片」。文件进不了会话工作区,agent 自然读不到内容。

社区插件 dsh-web-file-upload 补的就是这块。下面介绍它的功能、安装方式和实现原理。

这是什么

dsh-web-file-upload 是为 DeepSeek Harness Web 界面提供的文件上传插件:通过按钮、粘贴、拖拽三种方式上传任意文件(PDF、文档、代码、压缩包等),文件保存到会话工作区的 uploads 目录,并自动把文件引用带入消息,让 agent 直接读取。

  • GitHub 仓库:rrvvvnnn/dsh-web-file-upload
  • npm 包名:@iamroven/dsh-web-file-upload,版本 0.1.0
  • 许可证:MIT(README 与 package.json 均声明)
  • peerDependencies:@deepseek-ai/cordis ^4.0.1

核心功能

  • 输入框内的文件夹按钮(位于模型选择器左侧),点击选择文件,支持多选
  • 粘贴文件:在聊天框 Ctrl+V(从资源管理器复制的文件)自动上传
  • 拖拽文件进聊天框自动上传
  • 上传的文件以卡片形式显示在输入框内;应用可选补丁后可与图片缩略图同区并列
  • 图片与文件互斥,不能同时添加,避免布局冲突
  • 文件落地到会话工作区 uploads 目录,agent 可直接读取
  • 消息发出后,输入框里的文件卡片自动清空,不残留到下次对话
  • 已发送文件在聊天记录中以圆角卡片显示,点击可直接打开

安装与启用

一条命令完成下载和注册:

dsh plugin --profile web add @iamroven/dsh-web-file-upload

插件声明了 dsh.bundle.patch,所以 dsh plugin add 会自动把本包追加为 profile 的 bundle 层,不需要手动往 cordis.patch.yml 里加行。

安装后重启 web 服务:关掉「DSH Web Server」窗口,再双击快捷方式,然后硬刷新浏览器即可。

关于补丁,分两种情况:

1、不应用补丁也能正常使用,上传、粘贴、拖拽、agent 读取都正常,文件卡片显示在输入框底部。

2、可选补丁(仓库内 CORE-PATCH.md)带来更优体验:文件卡片与图片缩略图同区并列、聊天记录里显示可点击的文件卡片。

使用流程

1、启动 web 界面后,输入框右侧(模型选择器左边)出现文件夹按钮。

2、点击选文件,或直接把文件拖进聊天框 / Ctrl+V 粘贴。

3、文件以卡片出现在输入框内,输入框会附带一行「附件: 文件名」。

4、补上你的问题,发送。agent 会去 uploads 目录读取文件内容。

5、发送后输入框卡片自动清空;聊天记录中你发出的消息里会显示文件卡片,点击可直接打开文件。

实现原理

这是一个单包双面(Dual-face)插件,服务端和浏览器端各占一半。

宿主半边是 lib/index.js,注册两个 webServer 路由:

POST /dsh-upload/put   接收 base64 文件载荷,写入会话工作区的 uploads 目录
GET  /dsh-upload/file  按文件名返回文件内容,供聊天记录卡片点击打开

客户端半边是 lib/client.js,一个 cordis 客户端插件:在输入框插槽注册文件夹按钮与文件卡片,监听 document 级 paste / drag 事件,通过 fetch 调宿主路由完成上传。

包内目录结构如下:

package.json
LICENSE
README.md
CORE-PATCH.md
lib/index.js   宿主半边(服务端路由)
lib/client.js  客户端半边(浏览器 bundle)

适用场景与注意

适合的场景很明确:你在用 DSH 的 Web 界面,希望让 agent 直接读本地文件——让 agent 分析 PDF、审阅代码、查看压缩包内容——而不需要自己先把文件复制进工作区。

使用时有几点要留意:

1、图片与文件互斥,不能同时添加,这是刻意的布局约束。

2、插件以当前 dsh 进程权限运行,具备写会话工作区的能力。安装前建议阅读源码并确认许可证;本包为 MIT。

3、GitHub 仓库归属为 rrvvvnnn,而 npm 包名前缀与 package.json 的 author 字段为 @iamroven / iamroven,两者不一致。维护者身份请在安装前自行核实。

结尾

dsh-web-file-upload 用一条安装命令,把 DSH Web 界面缺失的任意文件上传能力补齐,文件直达会话工作区,agent 开箱即读。对经常需要让 agent 处理本地文档和代码的人来说,是一个小而实用的补充。

  • 社区目录页:https://www.skillhub.cn/plugins/rrvvvnnn/dsh-web-file-upload
  • GitHub 仓库:https://github.com/rrvvvnnn/dsh-web-file-upload
羽毛球分组比赛记分
小程序二维码

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

Xiaoye