dsh-vision:DeepSeek Harness 识图路由插件

DeepSeek Harness 的核心设计理念是「一切皆插件」。在构建智能体或工作流时,经常会遇到纯文本路由模型(如 DeepSeek)需要处理图片附件的场景。直接发送图片会导致模型报错或无法理解,强行转为 Base64 又会增加 Token 消耗。dsh-vision 插件解决了这一痛点,通过一个桥接层,让纯文本模型也能「看」懂图片。

插件介绍

dsh-vision 是一个用于 DeepSeek Harness 的 Vision Bridge 插件,由用户 lakeofsky347 维护。它通过将用户上传的图片交给专门的视觉模型生成文字描述,再将描述回填给纯文本模型,从而避免内容不支持导致的整轮对话失败。

核心功能

  • 图片转文字:自动将图片块交给视觉模型(默认 xiaomi/mimo-v2-omni)生成描述,替换原图片块。
  • 记忆化缓存:按 (session, 附件 ID) 记忆描述,历史回放复用文本,避免重复计费。
  • 容错降级:视觉模型调用失败时,降级为占位文本,保证 DeepSeek 回合不中断。
  • 并发隔离:使用 WeakSet 标记不同回合,无全局状态,互不干扰。
  • Bundle 模式:安装后自动插入插件行,无需手动编写配置。
  • 零开销透传:请求中无图片块或路由模型原生支持图片时,原样透传。

安装与启用

插件以 Bundle 模式发布,安装命令如下:

dsh plugin --profile web add github:lakeofsky347/dsh-vision

注意事项

  • 环境要求:需安装 pnpm 版本 ≥ 10。
  • 构建权限:首次从 GitHub 安装时,git 依赖的 prepare 脚本默认被禁止,安装会失败。此时需在 profile 的 pnpm-workspace.yaml 中添加 allowBuilds.dsh-vision: true,然后重新执行安装命令。
  • 许可协议:MIT 许可证。

配置与使用

安装后,插件会自动插入配置行。需要在本地 ~/.dsh/profiles/<name>/cordis.patch.yml 文件中覆盖配置,指定视觉模型的 provider 和 model:

- id: vision
  name: dsh-vision
  config:
    provider: xiaomi-token-plan-cn
    model: mimo-v2.5

配置项说明如下:

配置项 默认值 说明
provider xiaomi 视觉模型所在的路由
model mimo-v2-omni 视觉模型 ID
prompt (见源码) 随图发给视觉模型的指令
cache true 是否按会话和附件记忆化描述
maxTokens - 视觉调用输出 token 上限(可省略)

在纯文本模型会话中直接处理图片附件,插件会自动介入并完成转换。

技术原理

插件在 llm/stream waterfall 上注册监听器,根据不同情况采取不同策略:

  1. 无图片块:直接调用 next() 原样透传(零开销)。
  2. 原生支持图片:如果路由模型声明了 image 输入模态(如直接路由到 mimo),请求原样放行。
  3. 纯文本模型 + 图片:插件否决链并返回惰性异步生成器:
    • 解析路由模型的输入模态。
    • 遍历消息,对携带图片块的内容调用一次视觉模型(基于 (session, 附件 ID) 缓存)。
    • 将图片块替换为 [用户附件图片的视觉描述] 文本块后重建请求。
    • 带重入标记重新进入 ctx.llm.stream(),防止再次触发监听。

适用场景与注意

该插件适用于需要在纯文本路由模型中处理图片附件的场景。由于插件以当前进程权限运行,安装前请务必检查源码与许可证。更多细节可参考插件目录页或 GitHub 仓库。

插件目录 | GitHub 仓库

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

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

小夜