You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
modlens/opencode CLI 在 Windows 上"用 -f 传图片时 MIME 探测错误",将图片识别成文本 #77
模型在 opencode 里声明了图片输入能力。ali_maas 是自定义 provider,模型没有 models.dev 的能力元数据,不声明就按纯文本模型处理,从工具结果里读出的图片会被丢弃或报不支持。你贴的「this model does not support image input」更符合这一条,而不是图片被当成文本。
Activity
liustack commentedon Aug 22, 2026
查了 opencode 的源码,先纠正一下定位:这不是 Windows 上的 MIME 探测出错。
opencode run -f对本地文件在所有平台都把 mime 硬编码成text/plain(packages/opencode/src/cli/cmd/run.ts的非--attach分支),所以日志里的file mime=text/plain在 macOS/Linux 上也是这个值,而那些平台上图片照样能读。真正决定图片能不能被读的是后面这段:opencode 服务端拿到
file://附件后,会用内置 Read 工具重读这个文件,Read 工具按文件头魔数(PNG 的137 80 78 71...)把它重新识别成image/png,再作为图片附件送给模型。这条恢复链路要同时满足两个条件:ali_maas是自定义 provider,模型没有 models.dev 的能力元数据,不声明就按纯文本模型处理,从工具结果里读出的图片会被丢弃或报不支持。你贴的「this model does not support image input」更符合这一条,而不是图片被当成文本。UI 里 paste 能读图不矛盾:paste 直接以
image/png的 data 附件进对话,不经过 Read 工具这条链路,所以两条路径表现不同。请按顺序验证两步,每步都直接跑 opencode 命令行,不经 modlens:
如果升级后还不行,在 opencode 配置里给这个模型声明图片能力再试(models.dev 模型字段):
{ "provider": { "ali_maas": { "models": { "qwen3.7-plus": { "attachment": true } } } } }上面这条命令行通了,modlens 就通,因为 modlens 走 opencode-cli 这条路时就是原样拼这条命令。modlens 侧没有可修的点:mime 是 opencode CLI 硬编码的,modlens 无法从外部传入。验证结果麻烦回帖说一声,命令行直跑仍失败的话,把
opencode --version和完整输出贴上来。xhm9 commentedon Aug 23, 2026
liustack commentedon Aug 23, 2026
原问题按前面的源码核对结果关闭。
opencode run -f将本地file://附件初始标为text/plain是所有平台共有的设计,不是 Windows MIME 探测错误。ali_maas是自定义 provider,qwen3.7-plus还需要在 OpenCode 模型配置中声明"attachment": true。opencode run ... -f <path>,无法从外部改变 OpenCode 内部的 MIME 和模型能力处理。如果直跑下面的命令在满足版本和模型配置后仍然失败,可以重新打开 issue,并附上
opencode --version与完整输出:opencode run "这张图里有什么" -m ali_maas/qwen3.7-plus -f 你的图.png#77 下关于 DSH Web 启动时报
inactive context的评论是另一个真实问题,已经拆到 #79 继续跟踪:#79