使用 dsh-paste-input 在 DeepSeek Harness WebUI 里粘贴和拖拽文件

前言

DeepSeek Harness(简称 DSH 或 dsh)是 DeepSeek AI 开源的 Agent 运行时,核心设计是「一切皆插件」:模型适配、工具、会话、界面都可以用插件增删。官方仓库目前仍处于开发者预览,迭代很快。社区里有独立的插件目录站点,用来检索和对照安装命令;它和 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。

日常用 dsh web 时,一个很具体的摩擦是:截图、本地图片、一整个文件夹,往往已经在剪贴板或资源管理器里,但浏览器页面拿不到可靠的本地绝对路径,模型也就读不到文件。把路径手打进输入框可以,复制到工作区再 @ 也可以,步骤都偏绕。

dsh-paste-input 做的就是这一段:在 WebUI 里用 Ctrl+V、全页面拖拽或回形针选文件,把内容收成附件;发送时复制进当前会话工作区的临时目录,再把绝对路径写进消息给模型。本文按社区目录页、GitHub 仓库 README / package.json / LICENSE,以及 DeepSeek Harness 官方仓库交叉核对后整理。

这是什么

dsh-paste-input 是一款面向 DSH WebUI 的界面增强插件,维护者是 lhh010,npm 包名为 @dsh-community/dsh-paste-input,当前版本 0.1.3。仓库 README 写明:它派生自 dsh-external/dsh-multimedia-webui-input(MIT),在拖拽和选择文件的基础上,增加了剪贴板粘贴、首次告知弹窗,以及消息气泡里的附件折叠。

它解决的问题可以收成一句话:让文件先进入会话工作区,再以路径的形式出现在对话里,而不是指望浏览器把本地路径直接交给网页。

截至 2026-08-17,社区目录页与 GitHub 仓库均显示 8 颗星;目录分类为「界面增强」。仓库 LICENSEpackage.json 均写明 MIT,并保留对上游插件的派生声明。GitHub 未能按 SPDX 自动识别该许可证,因此仓库页和目录页会显示 NOASSERTION;以仓库内 LICENSE 文本为准。

核心功能

仓库 README 列出的能力如下。

1、Ctrl+V 粘贴。截图、复制的图片,以及浏览器 paste 事件能提供的文件,会作为附件进入输入框。第一次粘贴会弹出告知弹窗,可勾选「不再提示」,选择写在浏览器 localStorage

2、全页面拖拽。文件或文件夹拖到页面任意位置(聊天区、空白处、输入框)都会加入附件。拖文本或链接时,仍走浏览器默认行为,不会被插件抢走。

3、回形针选择。输入框左侧有回形针按钮,可选择文件或选择文件夹。

4、发送时落入工作区。文件会复制到当前会话工作区下的 .dsh/tmp/attachments/ 目录(按会话再分子目录),绝对路径随消息前置给模型。宿主侧源码里,会话附件根目录由工作区路径、.dsh/tmp/attachments 和会话目录名拼出。清单文件名为 .dsh-paste-input.json

5、气泡折叠为文件 chip。发送后,消息里带 ==== DSH_PASTE_INPUT_V1 ==== 标记的附件文本块会折成 📎 文件 chip。chip 前后你自己输入的文字按原顺序穿插保留;悬停可看完整路径、清单和文件列表,点击 chip 会复制完整路径。历史消息如果没有这套标记,不会被折叠。

6、设置面板。提供附件用量统计,以及按会话 / 工作区清理。清理带所有权标记保护,并需要二次确认。

附件块对模型可见,格式在 README 里写死为:

==== DSH_PASTE_INPUT_V1 ====
<附件根目录绝对路径>

Files: N
Manifest: .dsh-paste-input.json
Attached files (paths are relative to the root above):
- "file.txt" (2.0 KiB)
==== END DSH_PASTE_INPUT ====

标记前后各空一行,避免和用户输入挤在同一行。

仓库还写了与 dsh-external/dsh-vision 的配合方式:本插件只负责「文件进对话」,dsh-vision 注册 view_image 工具负责看图,两者通过工作区附件路径衔接,没有硬编码耦合。需要识图时再单独装后者即可,不是本插件的依赖。

安装与启用

社区目录页给出的安装命令如下,在 DeepSeek Harness 终端中运行:

dsh plugin add github:lhh010/dsh-paste-input

如需可复现安装,目录页建议固定 commit 哈希。当前仓库 main 最新提交为 7cf0698af7bf7b5e20a3af040047664b92412f92(2026-08-13),可以写成:

dsh plugin add github:lhh010/dsh-paste-input#7cf0698af7bf7b5e20a3af040047664b92412f92

官方文档里,从 GitHub 安装走的是 profile 机制,完整写法是 dsh plugin --profile <profile> add github:owner/repo。若当前终端已经处在目标 profile 下,目录页这条短命令即可;否则应显式带上 --profile,WebUI 场景一般是 web

仓库 README 另给了本地 link 安装示例(路径按本机修改):

dsh plugin --profile web add link:E:\deepseek-harness\dsh-paste-input

并在 ~/.dsh/profiles/web/cordis.patch.yml 追加:

- insert:
    - id: dsh-paste-input
      name: '@dsh-community/dsh-paste-input'

改完后重启 dsh web 生效。

目录页和官方安装文档都提醒过同一件事:插件以当前 dsh 进程的权限运行,安装时可能执行代码。GitHub 安装拉的是源码,pnpm 还可能要求给 prepare 等构建脚本授权,这些脚本不在 Agent 沙箱里。安装前应自己检查源代码和许可证,不要只凭目录收录做信任判断。

典型用法

下面几条都来自仓库 README,可以按环境复现。

粘贴截图

  1. 用系统截图(例如 Windows 的 Win+Shift+S)得到图片。
  2. 回到 DSH WebUI,在输入框 Ctrl+V。首次会看到告知弹窗。
  3. 附件出现在输入区后,按需补一句说明,发送。
  4. 文件被复制进工作区临时附件目录,消息里带上绝对路径;气泡中的附件块折成 chip。

拖拽文件夹

把文件夹拖到页面任意位置,即可整树加入附件。单文件不超过 1 GiB,单次总量不超过 2 GiB,文件数不超过 10000,目录深度不超过 64 层。这些上限在 README 和宿主源码 DEFAULT_LIMITS 里一致。

需要保留原始路径时

不要依赖「在文件管理器里复制文件再 Ctrl+V」。Chrome / Edge 的 paste 事件通常只提供图片等媒体和文本 / HTML,从资源管理器复制文件后粘贴往往没有文件项;Firefox 可以粘贴文件,但同样不会给出绝对路径。浏览器出于安全不会把本地路径暴露给网页,粘贴结果一律按文件名作为相对路径存储。需要原路径时,用拖拽或回形针选择。

配合识图(可选)

README 中的流程是:截图 → 粘贴或拖入 → 发送后文件落在工作区 → 模型看到路径后调用 view_image。前提是已经安装并启用 dsh-vision 这类看图插件;本插件本身不内置视觉模型。

兼容性与边界

README 声明兼容 DSH snapshot0808 到 snapshot0812(含 snapshots/20260812T172954Z-final),以及 npm 发版 @deepseek-ai/dsh@0.0.1-rc.5(并保持对 0.0.1-rc.2 的兼容)。package.json 使用嵌套的 dsh.client 声明,平台为 web,注入 @deepseek-ai/dsh-client-runtimedsh-client-ui-input-triggerdsh-client-ui-conversationdsh-client-ui-settings。v0.1.3 已跟随最终快照,把客户端服务名从 slash 迁到 inputTriggers,宿主侧从 httpServer 迁到 webServer

这是 WebUI 插件,不是终端 TUI 插件。它不把文件变成模型原生的多模态附件,而是把文件放到工作区,让 Agent 按路径去读。能读什么,取决于你装了哪些工具插件,而不是本插件单独保证。

DeepSeek Harness 仍在快速改接口。README 里用了不少篇幅记录 0809~0812 的加载机制和元数据字段变更;升级 DSH 之后如果插件从 boot 清单里消失,应回到仓库核对当前 dsh.client 声明,而不是假定旧快照上的行为仍然成立。

适用场景与注意事项

比较适合这些用法:

  • 把报错截图、UI 截图贴进当前会话,让模型按工作区路径继续处理
  • 拖入日志、补丁、小型项目目录,避免手工拷路径
  • 需要在气泡里把冗长附件块收成 chip,同时保留前后说明文字

使用前建议先看这几条限制:

  • 插件和 dsh 同权运行,能读写当前工作区。安装前打开 GitHub 仓库看源码和 LICENSE。
  • 社区目录只是检索入口,收录不等于安全审计。
  • Chrome / Edge 下「复制文件再粘贴」往往无效,优先拖拽或选择文件。
  • 附件会占用工作区磁盘;不需要的会话可以用设置里的清理功能,注意二次确认。
  • 体积和数量有硬上限,超大仓库或上万文件的目录不适合走这条输入路径。

小结

dsh-paste-input 把 WebUI 里最常见的三种文件入口——粘贴、拖拽、选择——接到会话工作区,再把绝对路径交给模型。它不替代视觉插件,也不扩展模型原生附件类型,只把「文件怎么进对话」这一段补完整。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-paste-input/

GitHub:https://github.com/lhh010/dsh-paste-input

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

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

小夜