前言¶
在 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
重启后插件持久可用,刷新页面或重启进程均不丢失。
典型用法¶
安装并重启服务后,即可在聊天界面使用该插件:
- 拖拽上传:将本地任意文件拖拽至聊天框区域松开,文件即会保存到当前会话工作区的
uploads/目录。 - 按钮上传:点击输入框工具行新增的「📎」按钮,在文件选择器中选择多个文件上传。
注意事项¶
- 单文件限制:Host 端校验单文件大小上限为 50MB。
- 源码审查:插件以当前 dsh 进程权限运行,安装前建议查看源码与许可证(MIT)。
- 持久化:该插件为持久化插件,与仅存在于会话中的动态插件不同。
结语¶
dsh-chatfile 通过简单的拖拽操作,为 DSH WebUI 增加了通用文件上传能力,使 Agent 能够直接读取本地文件。更多实现细节与源码可参考项目地址。