dsh-image-bridge:将图片转为文字描述,让纯文本模型也能“看见”图片

前言

DeepSeek Harness (DSH) 采用插件化架构,扩展行为通常通过挂载钩子实现。在 Web GUI 的交互场景中,用户经常会附加图片。如果底层模型是纯文本模型(例如 DeepSeek),这些图片会被系统默认忽略,导致模型无法理解视觉内容。dsh-image-bridge 插件通过拦截消息组装前的钩子,利用视觉模型将图片转为文字描述,再注入对话,从而让纯文本模型具备“看图”能力。

插件介绍

dsh-image-bridge 是一个 DSH 插件,由 Seryta 维护,遵循 MIT 许可证。它主要解决的问题是:当模型不支持图片输入时,自动将 Web GUI 中的图片通过视觉模型(默认使用智谱 GLM-4V-Flash)转录为文字,并替换原图片块进入对话流程。

核心功能

该插件在 agent/pre-step 钩子处运行,核心能力包括:

  1. 拦截与重写:拦截 agent/pre-step 瀑布事件,读取消息中的图片内容块({ type: 'image', attachment: ImageAttachmentRef }),通过 ctx.attachments.readImage 取出图片字节。
  2. 自动转录:将图片转为文字描述,并替换原图片块为 [图片描述] 文本块。
  3. 缓存机制:使用 attachmentId 作为缓存键,记录已识别的图片描述。同一张图片在后续步骤中不再重复识别(缓存上限 100,FIFO 淘汰)。失败结果不缓存。
  4. 韧性策略:
    • 单模型重试:遇到 429/503 错误时,进行指数退避重试(默认额外 2 次:1s、2s)。
    • 模型回退:遇到 404 或重试耗尽(5xx),自动切换到下一个备选模型(默认链:glm-4.6v-flash → glm-4.1v-thinking-flash → glm-4v-flash)。
    • 失败降级:全部尝试失败后,将图片块替换为 [图片识别失败] 文本,避免触发 UNSUPPORTED_CONTENT 导致整轮对话失败。
  5. 限制与防护:
    • 限制图片体积(默认 10MB)和分辨率(默认 40MP),超限直接报错。
    • 处理 content parts 数组健壮性,网关返回 [{text}] 数组时按序拼接。
    • 剥离 thinking 模型的 </tool_call> 推理块。
  6. 递归处理:支持 tool-result 嵌套图片的递归转录。

安装与启用

安装命令如下:

dsh plugin --profile web add github:Seryta/dsh-image-bridge

安装完成后,重启 dsh web 进程即可生效。

配置说明

插件支持通过环境变量进行配置,主要包括模型选择、重试策略、限流设置等:

配置项 环境变量 默认值 说明
主模型名 IMAGE_BRIDGE_MODEL glm-4v-flash 用于图片转录的视觉模型
回退模型链 IMAGE_BRIDGE_FALLBACKS glm-4.6v-flash,glm-4.1v-thinking-flash,glm-4v-flash 逗号分隔,依次尝试
重试次数 IMAGE_BRIDGE_RETRIES 2 单模型在 429/503 上的额外重试次数
描述语言 IMAGE_BRIDGE_LOCALE zh zh 中文 / 其他英文
图片字节上限 IMAGE_BRIDGE_MAX_IMAGE_BYTES 10485760 超限直接失败,不自动压缩
图片像素上限 IMAGE_BRIDGE_MAX_IMAGE_PIXELS 40000000 width×height 超限直接失败

凭证读取

插件会按顺序尝试以下环境变量读取视觉 API 密钥:
* ZHIPU_API_KEY
* ZHIPUAI_API_KEY
* VISION_API_KEY
* DASHSCOPE_API_KEY

模型限制说明

若所选模型声明 inputModalities: ['text'],DSH 会在消息进入循环前拒绝图片。本插件本身不修改模型声明,因此需要配合一个补 image 模态声明的插件(例如 llm-deepseek-image-admit)才能让所有模型支持图片输入。

注意事项

  1. 图片处理:一次消息中的多张图片会合并为一次视觉 API 调用。缓存按有序 attachmentId 组合键命中,图片顺序不同则视为新请求。
  2. 无预处理:图片不做压缩或缩放预处理,仅做体积和像素限制。
  3. 限流风险:免费档 VLM 可能存在限流问题,插件虽提供重试和回退机制,但仍需关注 API 配额。
  4. 依赖环境:插件纯手写 JS,零构建、零第三方依赖,但依赖 Node 内置模块。

总结

dsh-image-bridge 提供了一个从 Web GUI 到纯文本模型的视觉信息桥接方案。它通过拦截、转录、缓存和降级策略,确保了图片信息能被模型理解,同时保持了对话的稳定性。适合需要在 DeepSeek 等纯文本模型上处理 Web GUI 图片输入的开发者使用。

插件目录
GitHub 仓库

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

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

小夜