读图能力看声明字段,并按模型逐个实测
一、判定权在声明字段,不在「附件」标记
opencode 判定能否读图只看 modalities.input 是否包含 "image";attachment: true 单独写没用。
于是「配置里明明标了支持附件,模型却读不了图」的根因不是模型不行,而是消费方读的不是那个字段。
两个推论:
- 能力是否存在,取决于消费方实际读的那一处,与声明得多漂亮无关 —— 同族见 开关要映射到模型调用才算生效、能力链路打通不等于默认开启。
- 因此不能批量给所有模型加
image。批量加等于用声明掩盖未验证,把一个真实差异(有的模型确实读不了)变成静默的假成功。
二、声明之后仍要按模型实测:能力不按网关齐步走
同一网关内部,模型能力不齐,不能按网关整体推断:
| 网关 / 模型 | 读图 |
|---|---|
workbuddy-gl:balanced / fast / default / primary / gpt-5.4·5.5·5.6 系列 / hy3 / hy4 / deepseek-v4.1-flash / kimi-k2.8 / kimi-k3 | ✅ 真读图 |
workbuddy-gl:glm-5.3 | ❌ 明确回复「不支持图片输入」 |
deepseek(官方) | ✅ 真读图 |
cli2api(qwen) | ❌ 不读图 |
amd-radeon | ❌ 明确报错 does not support image input |
结论:「这个网关支持读图」是个错的问题,正确的问题是「这个网关里的哪个模型支持」。这与 模型可见性按入口分批 同源 —— 可用性/能力都是按具体条目放量,不按账号或网关一刀切。
三、判定方法与未验证项
- 判定用真值,不用名字:喂一张双色图问颜色,答对才算真读图。名字里带视觉/多模态语义的模型也可能是空壳 —— 见 能力被环境差异静默改变。
- 测不出来的必须记为未验证,不能按「应该支持」写进配置:
deep-model/gemini-3.5-flash返回空、b.ai余额为 0、zcode502 —— 这三类都是环境没给出结论,不是「不支持」。参见 验不到的部分要显式记为未验证。
相关
- 能力被环境差异静默改变 —— 本条是它在「模型能力按条目放量」上的一处实例
- 模型可见性按入口分批 —— 能力按条目放量,不按账号/网关一刀切
- 内置能力只覆盖它声明的那一段 —— 同源:问「覆盖到哪一段」,而不是「有没有这个词」
- 模型ID是入口相关的 —— 名字一样、后端不同
- Agent模型接入与额度机制