dsh-auto-vision:给 DeepSeek Harness 的纯文本主模型装上 vision 工具

前言

用 DeepSeek Harness(DSH)做智能体开发时,你大概率遇到过这个问题:内置的 read_image 工具会把图片块直接塞进当前模型的上下文,只有当前主模型本身支持图片才能用。如果你的主模型是 deepseek v4 flash 这类纯文本模型,调用 read_image 会被直接拒绝——主模型看不见图,读图这条路径就断了。

dsh-auto-vision 换了一条路:由插件内部把图片转发给一个多模态模型识别,主模型全程只看到文本。本文介绍它的原理、安装和配置方式。

这是什么

dsh-auto-vision 是一个 DSH 插件,由 NormanFxxkingRockwell 维护,MIT 协议开源,当前版本 0.4.0(2026-08-24 发布)。它的定位一句话可以说清:自动发现你已配置的多模态模型,给纯文本主模型装上 vision 工具,识别结果以纯文本返回,零配置,一条命令安装。

前提是你的 dsh 里至少配置了一个声明了图片输入的多模态模型。没有的话,插件会在启动时报错并给出处理建议。

核心工作方式

插件做了三件事:

1、自动隐藏 read_image。纯文本主模型的会话里,插件会藏掉必然失败的 read_image,让模型只能走 vision,不会先撞一次失败再换路。切到多模态主模型时,原生 read_image 自动恢复,两者互不干扰。

2、vision 工具调用多模态模型。主模型给你一个图片文件路径(或让它访问某个图片文件),它会自动调 vision,插件把图片转给多模态模型,识别结果以纯文本返回。

3、图片不进主会话。图片块只存在于插件内部的视觉请求中,主模型上下文里不会有任何图片,不会被污染、不会报错。

识别请求走的是宿主自己的模型运行时(ctx.llm),用你已配置的 key 和重试策略,不需要任何额外的 API key 或服务。整个插件零运行时依赖,不依赖任何 npm 包,只用宿主服务。

自动发现与 failover

默认零配置。插件把已注册 provider 中所有声明 image 模态的模型列为候选,按「显式 prefer → 你在 settings 配置的 provider → 其余已注册 provider」排序。

候选模型按序尝试,遇到空内容、报错或中止会自动切换下一个——目录里声明了 image 但实际不可用(比如未配 key 的官方占位模型)不会被卡住。插件还会记录上次成功的模型,下次优先使用它。

启动时有预检:如果手动指定的模型不支持图片,或自动发现落空,插件会在启动时就报出可操作的错误,而不是等你调用时才崩。

vision 工具的参数:

  • file_path:单图路径
  • file_paths:多图路径数组,一次请求最多 10 张,按编号逐张描述
  • instruction:可选,识别要求

它与 read_image 共用同一套附件管线和大小限制。

安装

两种方式任选。方式一,npm 安装(推荐):

dsh plugin --profile <你的profile名> add dsh-auto-vision

方式二,GitHub 源码安装(纯 JS、零构建步骤,无需构建授权):

dsh plugin --profile <你的profile名> add github:NormanFxxkingRockwell/dsh-auto-vision

装好后直接用,不需要额外配置。

配置(均可选)

所有配置项都是可选的,不配置也能通过自动发现工作。

在 profile 的 cordis.patch.yml 里覆盖插件配置,比如手动指定视觉模型:

- id: dsh-auto-vision
  config:
    provider: bailian
    model: qwen3.7-plus

可用配置项:

配置项 说明
provider + model 手动指定视觉模型,两个必须成对给出,启动时校验确实支持图片,否则报错
prefer 自动发现时优先尝试的 provider 顺序,例如 prefer: [bailian]
discovery: false 关闭自动发现,此时必须手动指定 provider/model,否则插件报错
autoHideReadImage: false 关闭「自动隐藏 read_image」
transcribeImages: false 关闭「粘贴图片转述」(实验性功能,见下文)

自动发现靠的是「模型声明了 image 模态」。如果你的模型还没声明,在 settings.yaml 里给支持图片的模型加上 input: [text, image]

providers:
  bailian:
    models:
      - id: qwen3.7-plus
        name: Qwen3.7-Plus
        contextWindow: 100000
        input: [text, image]

典型用法

装好后,在主对话里直接说:

读这张图 C:\path\to\image.jpg 描述一下

主模型会自动调用 vision 工具,把识别结果以文本形式返回给你。多张图也一样,把多个路径放进 file_paths,一次请求最多 10 张,按编号逐张描述。

有一点要明确:在聊天框直接粘贴图片,目前无法自动读。dsh 官方在消息准入层硬编码拒绝了纯文本模型携带图片(报错 MODEL_DOES_NOT_SUPPORT_IMAGES),这一步发生在任何插件钩子之前,且没有公开扩展点。所以请把图片保存为文件,再把文件路径给模型——文件路径读图这段是全自动的。

插件已经实现了「粘贴图片自动转述」(agent/pre-step 钩子,把会话内消息的图片块转述为【图片转述】开头的文字,带缓存),但受上述准入限制,该路径当前不可达,属于实验性功能,等官方开放后可自动生效。

适用场景与注意

这个插件适合的场景很明确:主模型用纯文本模型(如 deepseek v4 flash),但手头有其他已配置的多模态模型(如 qwen3.7-plus),想让前者获得读图能力,又不想改主模型或加服务。

使用前注意三点:

1、必须已配置至少一个声明了图片输入的多模态模型,否则插件启动即报错。
2、手动指定视觉模型时,providermodel 必须成对给出,且启动时会校验该模型确实支持图片。
3、插件以当前 dsh 进程的权限运行,安装前建议先检查源码与许可证。dsh-auto-vision 是 MIT 协议,源码在 GitHub 上可查。

结尾

dsh-auto-vision 解决的是一个具体问题:纯文本主模型读不了图。它不引入新服务、不加新 key,靠自动发现你已有的多模态模型,把文件路径读图变成一条命令装好就能用的能力,且启动时就把配置错误报出来。如果你在 DSH 里用纯文本主模型,又偶尔需要读图,值得一试。

  • GitHub:https://github.com/NormanFxxkingRockwell/dsh-auto-vision
  • 社区目录页:https://www.skillhub.cn/plugins/NormanFxxkingRockwell/dsh-auto-vision (独立社区站点,与 DeepSeek / 幻方无官方从属关系)
羽毛球分组比赛记分
小程序二维码

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

小夜