前言¶
在 DSH 的 Web 客户端里和 Agent 协作,经常要把本地文件交给对方处理。常见的两条路都不省心:要么修改官方 DSH 源码,给输入区补一个上传入口,之后每次升级都要重新维护;要么在终端里手动把文件搬进 Agent 工作区,步骤繁琐且容易漏。
下面介绍的 dsh-multimedia-webui-input 换了一种做法:不修改官方 DSH 源码树,在 WebUI 输入区直接加文件/文件夹选择与拖放上传;发送时再把所选资源复制进当前 Agent 工作区,让 Agent 用普通工作区工具读写。本文按功能、安装与注意事项依次展开。
这是什么¶
dsh-multimedia-webui-input 的定位一句话概括:跨平台的 DSH WebUI 多媒体输入与工作区附件(Workspace Attachments)。维护者是 LCYLYM,采用 MIT 许可证,分类属于客户端。
先说身份:它不是 DSH 官方仓库的插件,而是一个独立的社区双 face 插件(Cordis + dsh.client profile bundle),由 DSH 原生的 profile 插件命令安装。公开 NPM 包名是 dsh-multimedia-webui-input,GitHub 仓库是 LCYLYM/dsh-attachments。
核心功能¶
文件、文件夹选择与拖放上传¶
第一层能力在输入区。插件在 DSH Web 客户端中加入文件/文件夹选择与输入框拖放上传,全程不修改官方 DSH 源码树。实现上它不 hook、不 patch 聊天 DOM,集成走的是官方 Cordis/Web 表面,细节见后文。
Workspace Attachments:发送时才写入工作区¶
第二层是文件怎么到 Agent 手里。插件只在用户发送时上传:Host 解析活动会话的工作区,把所选资源流式写入下面的目录,再由 DSH 的异步引用序列化器把生成的绝对路径前置到模型消息:
.dsh/tmp/attachments/<session>/<send>/
Agent 侧不需要为这个插件做任何适配,用普通工作区工具就能读取、编辑、校验这些文件。如果准备失败,DSH 会保留草稿与附件芯片。
设置面板中的检查与清理¶
文件写入工作区后需要管理手段。插件的设置面板有一个按需的 Multimedia input & file management 区块,可以检查并清理两类范围:
1、活动会话;
2、活动工作区内全部会话。
清理操作需要确认,且只删除带本插件所有权标记的已提交目录,不跨工作区,也不删除未知内容。
安装与启用¶
安装走 DSH 原生的 profile 插件命令。先启动官方 DSH Web UI:
npx --yes @deepseek-ai/dsh web
再在另一个终端把插件加入 web profile:
npx --yes @deepseek-ai/dsh plugin --profile web add dsh-multimedia-webui-input
更改 profile 后需要重启 Web UI。卸载同样是一条命令:
npx --yes @deepseek-ai/dsh plugin --profile web remove dsh-multimedia-webui-input
版本方面,插件针对当前的 @deepseek-ai/dsh NPM 运行时(README 发布时为 0.1.0-rc.6),engines 要求 node ^22.19.0 || >=24.0.0,安装前先确认本地环境。
注册表不可用时的回退与本地安装器¶
注册表镜像不可用时,可以用 GitHub 回退安装,直接把公开仓库作为安装源:
npx --yes @deepseek-ai/dsh plugin --profile web add github:LCYLYM/dsh-attachments
仓库里还保留了一个本地安装器,但仅用于源码 QA 与旧版指纹 DSH checkout,公开 NPM 路径用不到它:
./install.sh
对应的卸载命令是:
node scripts/install.mjs uninstall
这个安装器在失败时会回滚。
实现层面的几个点¶
安装前可以了解三点实现细节:
1、双 face 声明。插件同时声明官方 dsh.bundle 与 dsh.client 两个 face,没有生产依赖;已废弃的 dsh.plugin.json 清单被有意不再作为第二个公开契约。
2、集成走官方表面。插件不 hook 或 patch 聊天 DOM,集成使用官方 Cordis/Web 表面:conversation.input.left、conversation.input.overlay、conversation.input.dock、异步引用序列化、settings.section,以及一条同源 Host HTTP 路由。
3、跨平台。文件处理仅使用 Node 的文件系统能力。
适用场景与注意¶
适合把 DSH Web 客户端当主工作界面、需要经常给 Agent 提供文件或整个文件夹的用户,也适合不想修改官方 DSH 源码树的使用场景。
使用前注意:
1、插件以当前 dsh 进程的权限运行,安装第三方插件前建议先阅读仓库源码、确认许可证(本项目为 MIT)。
2、上传只在用户发送时发生,草稿阶段不会向工作区写入文件。
3、清理功能只删除带本插件所有权标记的已提交目录,不会跨工作区;执行前留意确认对话框中的范围。
小结¶
经过上面的步骤,Web 客户端输入区就多了文件/文件夹选择与拖放入口;发送时文件自动进入活动会话的工作区,Agent 用普通工作区工具即可读写;设置面板里还留有检查与清理的入口。对想给 DSH Web 客户端补上文件输入、又不动官方源码的用户,这是一个可以直接装进 web profile 的社区插件。
- 插件目录页(社区收录):https://www.skillhub.cn/plugins/LCYLYM/dsh-attachments
- GitHub 仓库:https://github.com/LCYLYM/dsh-attachments