dsh-chatfile:在 DSH WebUI 中拖拽上传任意文件

前言

在 DeepSeek Harness WebUI 中,Agent 对图片的处理流程较为成熟,但开发者常需要将代码片段、配置文件或文档传递给 Agent 进行分析。现有方案中,动态插件依赖于会话状态,进程重启后即失效;而内置图片上传功能无法覆盖普通文件。dsh-chatfile 插件解决了这一痛点,它允许将任意文件持久化保存到会话工作区的 uploads/ 目录,并在输入框自动插入路径引用,供 Agent 直接读取。

插件简介

dsh-chatfile 是一个 DeepSeek Harness WebUI 插件。由 sooya7 维护,采用 MIT 许可证。核心功能是在聊天界面提供文件上传能力,支持拖拽与按钮选择,上传后的文件通过随机 token 路由提供安全的下载访问。

核心功能

该插件包含以下具体能力:

  • 拖拽与选择上传:支持将任意文件拖拽至页面任意位置松开,或在输入框工具行点击「📎」按钮进行多选。
  • 上传状态反馈:输入框上方会显示每个文件的上传进度(上传中/成功/失败)。成功后可进行下载或移除操作。
  • 自动路径引用:上传完成后,输入框内会自动追加类似 [上传文件] uploads/xxx.pdf(名称,大小) 的文本。Agent 接收到该指令后,可使用文件工具读取该路径下的内容。
  • 图片兼容性:纯图片的拖拽操作仍走 DSH 内置的图片处理流程,互不干扰。
  • 安全下载机制:文件下载地址由不可猜测的随机 token 生成,且文件名、大小、类型均在 Host 端进行校验,防止路径穿越等风险。

安装与启用

安装完成后需重启 Web 服务以使组合生效。

本地安装:

dsh plugin --profile web add file:/绝对路径/dsh-chatfile

从 GitHub 安装:

dsh plugin --profile web add "git+https://github.com/sooya7/dsh-chatfile.git"

重启服务:
安装命令执行后,需重启 dsh web 服务。

dsh web restart
# 或
sudo systemctl restart dsh-web.service

重启后插件持久可用,刷新页面或重启进程均不丢失。

典型用法

安装并重启服务后,即可在聊天界面使用该插件:

  1. 拖拽上传:将本地任意文件拖拽至聊天框区域松开,文件即会保存到当前会话工作区的 uploads/ 目录。
  2. 按钮上传:点击输入框工具行新增的「📎」按钮,在文件选择器中选择多个文件上传。

注意事项

  • 单文件限制:Host 端校验单文件大小上限为 50MB。
  • 源码审查:插件以当前 dsh 进程权限运行,安装前建议查看源码与许可证(MIT)。
  • 持久化:该插件为持久化插件,与仅存在于会话中的动态插件不同。

结语

dsh-chatfile 通过简单的拖拽操作,为 DSH WebUI 增加了通用文件上传能力,使 Agent 能够直接读取本地文件。更多实现细节与源码可参考项目地址。

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

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

小夜