@zzdream67/dsh-vision-bridge:让纯文本模型在 DeepSeek Harness 中读取图像

前言

在 DeepSeek Harness 中,直接向仅支持文本的模型粘贴图片会被拒绝,报错提示不支持图像输入。@zzdream67/dsh-vision-bridge 插件通过拦截 llm/stream 流水线,在请求到达上游提供商之前,将图像块替换为视觉模型的转录文本。这使得纯文本模型能够接收包含图片描述的文本,从而完成推理任务。

安装与启用

安装该插件需要确保环境已安装 dsh 命令和 pnpm(dsh plugin 内部依赖 pnpm)。推荐使用 npm 安装预构建版本。

  1. 安装 pnpm(如果尚未安装):
    npm install -g pnpm
*注:`corepack enable pnpm` 在 Windows 上有时会因为写入权限问题失败,直接通过 npm 全局安装更为可靠。*
  1. 执行安装命令:
    dsh plugin --profile web add @zzdream67/dsh-vision-bridge

核心功能

该插件主要实现以下能力:
* 图像拦截与替换:拦截 LLM 流水线,将图片内容替换为视觉模型的转录。
* 模型声明注入:自动为被桥接的模型添加 input: [text, image] 声明,使其能通过 DeepSeek Harness 的准入检查。
* Web 设置页面:在 Web 设置页面注册自定义区域,提供可视化的配置界面。

配置与使用

插件会在 Web 设置页面的 settings.section 中注册一个自定义区域。在该页面中,可以通过三个按钮管理视觉模型:

  • 测试并启用:向选定的视觉模型发送一张 16x16 的 PNG 图片。只有当该模型接受图片时,才会写入声明;失败则自动撤回。
  • 直接启用:跳过测试步骤,直接写入声明。适用于已确认模型具备视觉能力的场景。
  • 重新加载:从磁盘重新读取配置。由于桌面端没有重新加载手势,这是更新配置的唯一方式。

字段说明

在配置区域中,可调整以下参数:

字段 默认值 说明
enabled true 总开关。关闭时插件保留加载但不再介入,并撤回声明。
visionProvider '' 视觉路由 ID。留空则插件不生效。
visionModel '' 视觉路由中的模型 ID。留空则插件不生效。
prompt - 发送给视觉模型的提示词。
bridge [] 需要桥接的纯文本模型 ID 列表。
manageDeclarations true 是否让插件自动写入/撤回模态声明。
cacheSize 64 缓存的转录结果数量。设为 0 可禁用缓存。
timeoutMs 120000 单张图片转录的超时时间。

声明机制

DeepSeek Harness 的准入门(dsh-host-apiproxy)会检查模型的 inputModalities。如果模型未声明支持图像,请求会被拒绝,插件无法介入。

  • 当 manageDeclarations 开启时,插件会自动为 bridge 列表中的模型添加 input: [text, image] 声明。
  • 当插件启用且模型被桥接时,该模型实际上可以接收图像输入,因为转换发生在调用提供商之前。
  • 声明是“准入标签”。它只影响主机层是否允许图像进入会话,不影响 Token 计数、上下文窗口或采样行为。

注意事项与实现细节

  • 表单渲染:仅靠主机端的架构注册不会自动渲染表单。该插件通过手动编写浏览器端 bundle 来实现 UI。
  • 卸载行为:
    • 插件会记录声明前的输入状态。如果卸载时检测到输入被手动修改为错误格式,插件会保留该修改。
    • 如果模型或路由已被删除,插件会跳过该条目(不会凭空重建)。
    • 插件会尝试恢复所有其他路由的声明状态。
  • 源码与许可证:该插件使用 MIT 许可证。安装前建议检查源码以确保符合安全要求。

总结

该插件解决了 DeepSeek Harness 中纯文本模型无法处理图片输入的痛点。通过在 LLM 流水线中插入视觉转录层,它让文本模型能够间接地理解图像内容。相关文档与源码可在 GitHub 查看。

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

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

小夜