DeepSeek Harness (DSH) 采用插件化架构。在对话场景中实现文件传输是常见需求。dsh-file-bridge 插件提供了这一能力,支持通过附件按钮上传、工具下发以及路径跳转三种方式实现双向文件交换。
核心功能¶
- 用户上传:通过输入框附件按钮上传文件,图片自动压缩至 1600px 并支持原生预览,非图片文件生成访问链接。
- Agent 下发:Agent 调用
send_files工具,图片渲染为可点击预览,其他文件提供下载链接。 - Explorer 跳转:在回复正文中使用反引号包裹源文件的绝对路径(如
/root/proj/a.md),点击可唤起侧边栏文件管理器。 - 静态服务:提供
/dsh-files/*只读静态服务,具备防路径穿越能力和中文文件名 RFC 5987 编码支持。
安装与配置¶
使用官方命令安装插件:
dsh plugin --profile web add 'github:fengs2021/dsh-file-bridge'
安装后需重启 Web 服务:
systemctl restart dsh-web
插件通过 cordis.patch.yml 配置文件进行初始化,需设置以下参数:
- insert:
- id: file-bridge
name: dsh-file-bridge
config:
publicBase: "http://你的公网地址:端口" # 生成文件 URL 的基础地址,必须配置
filesDir: "/root/.dsh/files" # 共享文件目录(默认 ~/.dsh/files)
使用方法¶
- 用户上传:用户点击输入框附件按钮选择文件,系统自动处理图片压缩或生成链接。
- Agent 下发与跳转:Agent 调用
send_files工具后,在回复中使用反引号包裹工具调用的源文件绝对路径。该路径必须与回复在同轮对话中,且必须是工具调用的源路径。
注意事项¶
- Android WebView:App 端需实现
WebChromeClient.onShowFileChooser方法以支持文件选择。 - Nginx 配置:部署环境需配置 Nginx 的
client_max_body_size,建议设置为 25m(默认 1m 会导致 413 错误)。 - 依赖链接:插件目录需链接
node_modules/@deepseek-ai/dsh-tools,否则会报错。 - 路径生效规则:反引号路径必须是工具调用的源路径且与回复同轮生效。
结语¶
该插件通过附件按钮、工具调用和路径跳转三种方式,为 DSH 对话场景提供了基础的文件交互能力。开发者可根据需求在 cordis.patch.yml 中配置文件存储路径和公网地址。更多细节见项目主页:GitHub