dsh-auto-vision:让纯文本模型在同 Provider 下自动「看见」图片

前言

在 DeepSeek Harness(DSH)里选了一条只支持文本的路由,却想把截图或设计稿一并丢进对话——以前常见结果是输入框直接拒收,或者你得另配一套视觉 API、再查 model ID。若你已经在某个 Provider 上配好了密钥和 base URL,更希望「同一条链路里」把图读出来,再交给当前主模型回答,可以看一下社区插件 dsh-auto-vision(npm 包名 dsh-auto-sight)。它在请求发出前,用同一 Provider 上的视觉模型把图片转成文字描述,再替换成文本块交给纯文本主模型;插件本身不保存、不转发 API Key,沿用 Provider 配置里已有的凭据引用。

这是什么

dsh-auto-vision 由 thanderming 维护,分类属于模型推理。一句话:当所选模型不支持 image 输入、或识别不可用时,Auto Vision 会在同一 Provider 上自动找可用的视觉模型读图,再把原请求里的图片块换成带标注的文本描述,主模型仍是你选的那条文本路由。

与「再配第二个视觉服务」相比,README 强调的三点是:不必第二个 API;不必手填 model ID(可选在 Settings 指定);拖进纯文本模型输入框的图片不再被直接拒绝,而是先读再答。

核心功能

插件挂载在 llm/stream 上,仅在同时满足下列条件时介入:请求里至少有一个 image 块;主路由未声明 image 能力;且在同一 Provider 上能解析到视觉目标。否则原样透传。

读图成功后,每个图片块会被替换为类似 [Image #n interpreted by <model>] … [/Image #n] 的文本块。会话历史和 UI 仍保留真实图片,只有发往文本模型的请求被改写。

视觉模型选择顺序(前一组失败才试下一组):Settings 里指定的模型 → 同 Provider 上其他已挂载且支持 image 的模型 → 官方 /models 列表里按名称匹配的候选。若指定模型失败,会依次尝试其余目标,并在块上标记 after <failed model> failed;全部失败时插入 [Image #n could not be interpreted by any vision model: …],同一轮里其他图片仍会继续处理。

若主模型本身已支持看图,默认不介入;在 Settings 选了视觉模型后,可开启 Use the vision model even when the main model can see images,强制仍先用视觉模型读一遍(未选视觉模型时该开关无效)。

对未在本地挂载、或适配器已知为纯文本的模型,会通过 Provider 的 OpenAI 兼容 /chat/completions 端点调用,这要求 Provider 配置里有可用的 baseURL 与 apiKeyEnv。

插件还会为「有视觉 sibling 的文本路由」在模型选择器里展示 image 输入能力,便于直接附图。某模型首次在无 image 声明的情况下成功读图后,会把 input: [text, image] 写回该 Provider 的 llm-pi-ai 配置(仅发生在真实用户带图请求之后,不做后台探测);失败或取消的请求不会写入。

每张图默认 60 秒超时;会话内内存缓存 128 条结果,并对进行中的相同请求去重。视觉提示里把图片内容视为不可信数据(要求模型不执行图中指令),但读出的文字仍会进入主模型上下文。

安装与启用

官方安装方式如下。

dsh plugin add github:thanderming/dsh-auto-vision

也可从 DSH 插件市场安装。同一代码以预构建形式发布到 npm:dsh-auto-sight(npm i dsh-auto-sight),无需安装时构建或 allowBuilds 确认。

插件以当前 DSH 进程权限运行;安装前请自行查看仓库源码与 MIT 许可证。Node 要求 >=20(见 package.json)。

Settings 配置

路径:Settings → Auto Vision。按 Provider 分组选择视觉模型,或保持 Automatic。选择保存在 volatile config,对下一次带图请求生效。为其他 Provider 选的模型会被忽略;插件总是在处理当前请求的那个 Provider 上解析目标。

配置键 默认值 含义
visionProvider / visionModel 空 = 自动 用于读图的模型;跨 Provider 的选择无效
preferVisionModel false 主模型已支持 image 时仍先用所选视觉模型;须已选视觉模型
timeoutMs 60000 单张图片读取超时(毫秒)

选择器三组:Guaranteed(配置声明 input: [text, image])、Configured without image input(已挂载但未声明 image,按名称展示)、Official candidates(/models 无模态元数据,名称猜测,默认折叠)。成功读图后自动标记的模型需刷新 Settings 页才会进入 Guaranteed 组。

典型用法

  1. 安装插件后,在 DSH 里照常选择一条纯文本模型路由。
  2. 在对话中附上图片(或对已有视觉 sibling 的文本路由直接附图)。
  3. 发送消息:插件在同 Provider 上调用视觉模型读图,主模型收到的是带 [Image #n interpreted by …] 包裹的描述文本,并基于该描述作答。
  4. 若需固定读图模型或主模型本身也能看图但仍想先走视觉模型,打开 Settings → Auto Vision 完成选择并按需开启 preferVisionModel。

无需在插件配置里填写 API Key;凭据在请求时从该 Provider 的 apiKeyEnv 读取,密钥不会进入插件配置、日志或浏览器 UI。图片只发给同一 Provider 上的视觉模型,不送往第三方服务;描述仅会话内存缓存,不写磁盘。

适用场景与注意

适合:已在某一 Provider 上统一配好密钥与路由,希望用纯文本或「未声明 image」的模型处理带图对话;不想维护第二套视觉 API 与 model ID 列表的 DSH 用户。

限制与成本(均来自 README):

  • 仅同 Provider:不会跨 API 去调别的服务商上的视觉模型。
  • 官方 /models 列表只有 model ID 等基础字段,名称匹配的候选不保证接受图片;直连还需 baseURL 与可用 apiKeyEnv。
  • 每张未命中缓存的图片会多一次模型调用。
  • 自动写回 llm-pi-ai 可能与并发编辑 Settings 冲突,仅打警告不重试,不影响当次回答。
  • 同 Provider 上若没有任何视觉模型可用,会占位失败文本并仍让主模型告知用户。

DSH 生态强调「一切皆插件」;社区目录 SkillHub 上的 dsh-auto-vision 页 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-auto-vision 把「读图」和「作答」拆成同 Provider 内的两步:视觉模型负责描述,文本主模型负责推理与回复,配置面尽量复用已有 Provider。需要细节、Issue 或源码时见 GitHub:https://github.com/thanderming/dsh-auto-vision;目录介绍见 https://www.skillhub.cn/plugins/thanderming/dsh-auto-vision。

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

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

小夜