dsh-model-vision:自动补全 DSH 模型清单里漏掉的「可看图」能力

前言

用 DeepSeek Harness(DSH)接第三方网关或自建 OpenAI 兼容服务时,模型列表往往来自「获取可用模型」。DSH 会记下名字、上下文长度和输出上限,但不会把网关已公布的「能不能看图」写进配置。结果是:网关文档里支持图片的模型,在 DSH 里默认只有文字输入;贴图可能直接被拒,或报「这个模型不支持图片输入」。有人手动勾选「输入类型:图片」,下次再拉清单又会被清掉。

下面介绍社区插件 dsh-model-vision(维护者 charovo0059),分类为模型推理。它把网关本来就公布的视觉能力补回 DSH 漏掉的那一格:能看图的模型自动勾上「输入类型:图片」,并在模型名末尾标出「· 可看图」。不另装 CLI、不替填 API key、不改网关地址。

这是什么

dsh-model-vision 是 DSH 的 Cordis 插件,npm 包名同为 dsh-model-vision,许可证 MIT,要求 Node.js ≥ 20。它不连第三方服务器、不上传对话、无遥测;只读你的 profile 配置与本机凭据,访问你自己填的 API 地址,读模型清单并在必要时做极小探测。

不适合指望插件让本身不支持图片的模型学会看图。适合使用 OpenAI 兼容中转、自建 vLLM / one-api 等,且希望 DSH 与网关能力对齐的场景。

核心功能

自动对账与手动一键

装好并在 重启 DSH 后,插件在后台工作,无需日常点击。触发时机如下:

时机 行为
DSH 启动约 3 秒后 扫描已配置模型,补齐应勾选的「图片」
每次点击「获取可用模型」 约 5 秒内补齐新拉入的模型
每 5 分钟 周期性对账,上游能力变更可跟上

需要立刻检查时:设置 → 模型 → 列表最下方 → 检测并补充视觉能力。结果就地显示(一句话 + 「展开明细」)。若某版 DSH 改了界面位置,插件可退化为 设置 → 视觉能力 单页,功能相同。

如何判断「能看图」

  1. 优先读网关声明 —— 模型清单或元数据里写了支持图片/input modalities 的,直接采用,不额外发请求。
  2. 网关未声明时,才发图探测:两张 64×64 纯色图,问「这是什么颜色」;答对任一颜色 → 能看图;答成错误颜色 → 判为只能读文字;整段回复不提颜色 → 无结论,不写错误声明(沉默不等于纯文本)。

探测有缓存:能看图记 7 天,不能记 1 天;单次最多测 40 个未声明模型(可配置 maxProbes),每个最多两次小请求。默认仅在点按钮时探测;若要在后台也探测,需在配置里开启 probe: true。

写配置的范围

插件只写「输入类型」中的图片项,以及模型名末尾的标注(默认 · 可看图,可用 badgeSuffix: '' 关闭)。不会改 API key、上下文长度、价格;不会动你已手动取消的勾选(尊重「只要文字」)。没有需要改的项时不落盘;写前逐行比对,保留注释与 !!js 表达式。可选 dryRun: true 只观察不写文件。

工作摘要写在 ~/.dsh/model-vision.<profile>.status.json(例如 web profile 为 model-vision.web.status.json),看 message 一行即可,例如「扫了 N 个模型,补了 M 个的「输入类型:图片」」。

网关兼容性

对 DSH 已登记的供应商,插件不硬编码路径:OpenAI 兼容的 /models(及常见变体)、Anthropic 的 /v1/models、Ollama 的 /api/tags 等均可处理。Responses 协议(/responses)仅读清单、不探测,避免图片格式差异导致误判。字段识别细节见仓库 docs/how-it-works.md。

安装与启用

安装后必须 重启 DSH。官方推荐命令(会写入 dsh.profile.bundles,无需手改 bundle 列表):

dsh plugin --profile web add dsh-model-vision

非默认 profile 时将 web 换成你的 profile 名。也可在 设置 → 插件 → 插件市场 搜索 dsh-model-vision 安装;跟仓库最新代码时 README 另给:

dsh plugin --profile web add github:charovo0059/dsh-model-vision

装完可自检(逐项说明缺什么):

node tools/check.mjs --profile web

安装前建议自行浏览 GitHub 仓库 源码与 MIT 许可证。插件以当前 DSH 进程权限读写 ~/.dsh/profiles/<profile>/cordis.patch.yml 与凭据引用,安装前确认你信任该代码路径。

典型用法

默认路径:安装 → 重启 → 配好供应商并「获取可用模型」→ 到 设置 → 模型 确认目标模型的「输入类型 → 图片」已勾选,或看名称末尾是否有「· 可看图」。

想先看不写:在克隆或安装目录执行(只读,不写配置):

node tools/preview.mjs --profile web

微调行为(一般不用改):在 ~/.dsh/profiles/web/cordis.patch.yml 增加覆盖,name 须逐字为 dsh-model-vision:

- id: model-vision
  name: dsh-model-vision
  config:
    mode: fill               # fill = 只补空缺(默认);sync = 按网关纠正手写错误
    routes: []               # [] = 全部供应商
    dryRun: false
    intervalMs: 300000       # 5 分钟对账
    badgeSuffix: ' · 可看图'
    probe: false             # true = 后台也发图探测
    maxProbes: 40

卸载:

dsh plugin --profile web remove dsh-model-vision

重启后插件移除;已写入配置的「图片」勾选会保留,需手动取消请在设置页操作。出问题可先备份 ~/.dsh/profiles/web/cordis.patch.yml 再排查,常见现象见 README 故障表与 docs/troubleshooting.md。

适用场景与注意

  • 适合:第三方网关、中转、自建 OpenAI 兼容服务;网关清单或探测能确认视觉能力,但 DSH 拉清单后丢失「图片」输入类型的情况。
  • 不适合:模型本身不支持图片;指望插件绕过网关实际能力。
  • 生态说明:DSH 主张「一切皆插件」;SkillHub 目录页 为社区收录,与 DeepSeek / 幻方无官方从属关系,并非官方应用商店。
  • 安全与权限:插件会读本机 ~/.dsh/.credentials.yaml 的 refs 并向你的 API 发清单请求与少量探测;安装前请审阅源码。网关声明支持但实测贴图仍失败时,可能是上游虚标,需在 DSH 里取消「图片」或到网关侧确认。

结尾

dsh-model-vision 解决的是 DSH 同步模型清单时漏记视觉能力这一具体问题:自动补上「输入类型:图片」,并在名称后标注「可看图」,减少误报「不支持图片输入」和反复手动勾选。更多信息与 issue/PR 见仓库 README。

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

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

Xiaoye