前言¶
DeepSeek Harness(DSH)的核心理念是「一切皆插件」。在智能体开发或日常调试中,开发者常使用纯文本模型(如 DeepSeek、GLM 系列)处理代码或文档,但剪贴板中的图片无法直接发送。系统通常会在 composer 中提示「该模型不支持视觉,请切换视觉模型」,打断工作流。
本插件在捕获阶段拦截 composer 内的图片粘贴操作,将图片字节通过 dsh-drop-caret 的上传路由落盘,并把文件路径插入输入框。这样,纯文本模型可以继续使用,而图片内容则通过路径传递给后续的 workflow 或视觉工具处理。
插件定位¶
这是一个 DSH Web 客户端插件,由 quei4r 维护,采用 MIT 许可证。它的核心作用是解决纯文本模型无法接收图片的问题:对于配置列表中的文本路由,它拦截粘贴并转换为路径;对于视觉模型,它保持原生行为不受干扰。
核心能力¶
- 粘贴拦截与转换
拦截 composer(textarea / contenteditable)内的图片粘贴事件。图片会被上传至会话目录并生成文件路径,最终以文本形式插入输入框。 - 原生管线保护
仅对配置列出的textOnlyRoutes生效。视觉模型及其它非配置模型的原生缩略图、草稿附件等行为完全不受影响。 - 操作绕过
支持Alt+粘贴快捷键,可绕过插件拦截,走产品原生行为。 - 兼容性
与@deepseek-ai/dsh0.1.0-rc.6 版本兼容。
安装与启用¶
该插件依赖宿主路由提供配置桥接与文件上传服务。
- 复制插件文件
将插件目录复制到本地 DSH 安装目录。
cp -r dsh-client-paste-image ~/.dsh/profiles/web/node_modules/
- 配置 Patch
在~/.dsh/profiles/web/cordis.patch.yml的insert列表中加入以下条目:
- id: ui-paste-image
name: dsh-client-paste-image
- 重启服务
由于宿主半注册的路由只在启动时生效,安装后必须重启dsh web才能加载配置。
典型用法¶
插件通过 textOnlyRoutes 配置项控制生效范围。只有列表中的模型才会触发图片转路径逻辑。
- id: ui-paste-image
name: dsh-client-paste-image
config:
textOnlyRoutes:
- zai-coding-cn/glm-5.3
- "opencode-go/deepseek-*" # 使用通配符匹配
配置后,在 composer 中粘贴图片,系统会自动上传文件并插入路径文本。发送时,文本中包含的路径会被序列化。
适用场景与注意¶
适用场景:
* 需要在纯文本模型(如 DeepSeek-Coder)上下文中引用图片。
* 使用 workflow 或 agent 机制,需将图片路径传递给后续的视觉模型或工具。
注意事项:
* 前置依赖:必须安装并运行 dsh-drop-caret,它提供 POST /api/dsh-drop 上传路由。
* 配置空列表:如果 textOnlyRoutes 列表为空,插件处于 fail-safe 状态,不会拦截任何粘贴操作。
* 文件落盘:图片文件会落在 <会话cwd>/.dsh-drop/<sessionId>/ 目录下。
* 会话 ID 获取:插件依赖 conversation 插槽注入的 sessionId,确保与 DSH 版本兼容。
结语¶
dsh-client-paste-image 是解决 DSH Web 端纯文本模型无法直接处理图片的一个具体方案。它通过拦截与转换,填补了工具链中的一处缺口,让模型选择与上下文传递更加灵活。更多细节可参考插件目录或源码仓库。