dsh-multimedia-webui-input:为 DSH Web 客户端添加文件输入与工作区附件

前言

在 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.bundledsh.client 两个 face,没有生产依赖;已废弃的 dsh.plugin.json 清单被有意不再作为第二个公开契约。

2、集成走官方表面。插件不 hook 或 patch 聊天 DOM,集成使用官方 Cordis/Web 表面:conversation.input.leftconversation.input.overlayconversation.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
羽毛球分组比赛记分
小程序二维码

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

小夜