1. 先搞清楚:为什么一传图片就报「selected model」错误
Claude Code 接入小米 MiMo 之后,纯文本对话一切正常,但只要把图片拖进对话框,就会立刻弹出There's an issue with the selected model (mimo-v2.5-pro[1m]). It may not exist or you may not have access to it. Run /model to pick a different model.更让人抓狂的是,这个报错一旦出现,后面哪怕只发纯文字,也会一直复读同一句话,整个会话像被卡死一样。
这个现象的本质不是 Claude Code 坏了,也不是 TaoToken 的 API 通道有问题,而是你当前选中的模型本身不支持图片输入。MiMo 系列里,真正具备视觉理解能力的只有mimo-v2.5和mimo-v2-omni这两个型号;而mimo-v2.5-pro[1m]虽然上下文窗口大、文本推理强,但它是一个纯文本模型,收到 image block 时会直接判定为「模型不可用」,于是抛出上面那条错误。
Claude Code 的会话状态机有个特点:一旦某次请求因为模型能力不匹配被拒绝,它会把这个失败状态缓存到当前会话里,后续请求继续复用同一个模型 ID,所以文本也跟着一起报错。临时解法是/compact压缩上下文或者直接开新会话,但这只是把错误状态清掉,并没有解决「图片识别」这个根本需求。
这篇清单要交付的东西很具体:一份可以直接复制的settings.json配置骨架,加上逐项验证动作,帮你把「模型选择」「图片输入能力声明」「请求参数」这三者之间的错配点一个个定位出来。适合已经在用 Claude Code + TaoToken 通道、并且踩过这个坑的开发者。
2. 前置准备:TaoToken 统一 Key 与 Claude Code 的接入关系
在动手改配置之前,先把链路理清楚。Claude Code 本身是一个 CLI 形态的编码 Agent,它默认走 Anthropic 的接口协议;而 MiMo 是小米的大模型,接口形态和 Anthropic 不完全一样。中间需要一层统一通道来做协议适配和 Key 管理,TaoToken 就是干这个的。
你需要准备的东西:
- 一个 TaoToken 账号,并在控制台创建一个 API Key。地址是
https://taotoken.net/api,Key 管理页面在 console 里,具体入口是https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite。 - 本地已经装好 Claude Code CLI,能正常跑
claude命令。 - 确认你的 TaoToken 账户下已经开通了 MiMo 系列模型的调用权限。
这里有个容易忽略的点:Claude Code 读取模型配置有两个来源,一个是环境变量ANTHROPIC_MODEL,另一个是项目或用户目录下的settings.json。两者同时存在时,settings.json里的model字段优先级更高。很多人改了环境变量却发现没生效,就是因为settings.json里还留着旧的模型名。
注意:不要把 TaoToken 的 Key 硬编码进会提交到 Git 的配置文件里。推荐用环境变量注入,
settings.json里只写模型映射和通道地址。
3. 可复制配置:settings.json 骨架与模型映射
下面这份骨架是我实测能跑通图片识别的版本。Claude Code 的配置文件一般放在~/.claude/settings.json(用户级)或项目根目录的.claude/settings.json(项目级)。项目级会覆盖用户级,排错时建议先只保留一份,避免互相干扰。
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "mimo-v2.5", "ANTHROPIC_SMALL_FAST_MODEL": "mimo-v2.5" }, "model": "mimo-v2.5", "permissions": { "allow": [] } }关键字段逐个说明:
| 字段 | 作用 | 图片识别场景下的取值 |
|---|---|---|
ANTHROPIC_BASE_URL | 请求发往的统一通道地址 | https://taotoken.net/api |
ANTHROPIC_AUTH_TOKEN | 鉴权 Key | 你的 TaoToken Key |
ANTHROPIC_MODEL | 主模型 | 必须是mimo-v2.5或mimo-v2-omni |
ANTHROPIC_SMALL_FAST_MODEL | 轻量任务模型 | 同样要选支持视觉的型号,否则子任务会报错 |
model | Claude Code 会话默认模型 | 与主模型保持一致 |
很多人只改了model字段,却忘了ANTHROPIC_SMALL_FAST_MODEL。Claude Code 在处理图片时会先调用小模型做一些预处理(比如判断图片类型、生成摘要),如果小模型是纯文本型号,照样会触发selected model报错。这是最隐蔽的一个坑。
如果你确实需要在不同场景下切换模型,比如文本任务用mimo-v2.5-pro[1m]、图片任务用mimo-v2.5,那就要接受「切模型丢上下文」这个代价。Claude Code 目前不支持在同一会话里动态切换模型并保留历史,切换等同于开新会话。想两全其美,只能走 MCP 单独封装一个图片识别工具,让主模型保持 pro,图片走 MCP 调用mimo-v2.5。
4. 验证请求:确认图片真的被识别了
配置改完别急着传图,先做三步验证,把问题范围缩小。
第一步,验证通道和 Key 是否通。在终端里直接发一个纯文本请求:
curl -X POST https://taotoken.net/api/v1/messages \ -H "Content-Type: application/json" \ -H "x-api-key: sk-你的TaoToken密钥" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "mimo-v2.5", "max_tokens": 64, "messages": [{"role": "user", "content": "回复 OK 两个字母"}] }'如果返回里有正常的文本内容,说明通道和 Key 没问题。如果这里就报 401 或 404,那问题在 Key 或模型名,跟 Claude Code 无关。
第二步,验证模型是否真的支持图片。用同一个接口发一个带 image block 的请求:
curl -X POST https://taotoken.net/api/v1/messages \ -H "Content-Type: application/json" \ -H "x-api-key: sk-你的TaoToken密钥" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "mimo-v2.5", "max_tokens": 128, "messages": [{ "role": "user", "content": [ {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "你的base64"}}, {"type": "text", "text": "描述这张图"} ] }] }'返回里如果是对图片内容的描述,说明模型视觉能力正常。如果这里报model not support image之类的错误,那就是模型选错了,回去检查ANTHROPIC_MODEL是不是写成了mimo-v2.5-pro[1m]。
第三步,回到 Claude Code 里实测。开一个全新会话,先发一句纯文本确认对话正常,再拖一张图进去。如果图片能被描述出来,整条链路就通了。如果还是报selected model,用/model命令看一下当前会话实际用的模型 ID 是什么,大概率和你配置文件里写的不一致。
提示:Claude Code 的
/model命令会显示当前生效的模型。如果显示的是mimo-v2.5-pro[1m],说明你的settings.json没被加载,检查文件路径和 JSON 语法。
5. 本篇常见错排查清单
把上面几步跑下来,大部分问题都能定位。下面是我踩过的几个典型坑,按出现频率排序。
坑一:模型名带后缀导致匹配失败。mimo-v2.5-pro[1m]里的[1m]是上下文长度标记,不是模型名的一部分。有些配置里写成mimo-v2.5-pro-1m或者漏掉方括号,都会导致模型解析失败。正确写法就是mimo-v2.5,不带任何后缀。
坑二:settings.json 位置放错。Claude Code 会同时读用户级和项目级配置,项目级优先。如果你在项目里改了配置但没生效,检查是不是用户级~/.claude/settings.json里还有一份旧配置在覆盖。排错时建议先只保留一份。
坑三:环境变量和配置文件冲突。如果你在 shell 里export ANTHROPIC_MODEL=mimo-v2.5-pro[1m],同时settings.json里写的是mimo-v2.5,实际生效的是配置文件里的值。反过来,如果配置文件里没写model字段,才会用环境变量。两者都写且不一致时,以配置文件为准。
坑四:图片格式或大小超限。MiMo 的视觉接口对图片有格式要求,支持 PNG、JPEG、WebP,单张图片 base64 编码后不能超过一定体积。如果你传的是 BMP 或者超大图,可能不是模型选择问题,而是图片本身被拒。先用小尺寸 PNG 测试。
坑五:会话状态污染。前面提到的「报错后文本也跟着报错」,就是会话状态被污染了。这时候改配置没用,必须/compact或者开新会话。养成习惯:每次改完模型配置,都开新会话测试,别在旧会话里验证。
坑六:MCP 工具和主模型抢图片。如果你同时装了图片识别类的 MCP,Claude Code 可能会把图片优先路由给 MCP 而不是主模型。这时候要检查 MCP 的触发条件,避免和主模型的视觉能力冲突。如果你打算自己写 MCP 来兜底图片识别,可以参考社区里已有的实现思路,把图片单独走mimo-v2.5调用,主模型保持 pro 不变。
6. 后续怎么选:模型对话、Coding Plan 还是接入文档
排错排到这里,你应该已经能正常识别图片了。接下来根据自己的使用场景选后续动作。
如果你只是想快速验证 MiMo 的图片识别效果,不想折腾 CLI 配置,可以直接用模型对话页面测试,地址是https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite,在里面选mimo-v2.5传图就能看到结果。
如果你是长期用 Claude Code 做编码、并且经常需要图片输入(比如看设计稿写代码、识别报错截图),建议把模型固定成mimo-v2.5,接受它文本推理略弱于 pro 的代价。或者上 Coding Plan,地址是https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite,把编码和图片任务分开管理。
如果你需要更细的接入参数,比如请求头、超时、重试策略,直接翻接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite。Key 的创建和管理在 API Keys 页面:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite。
最后说一个我自己的经验:Claude Code 的模型配置改动后,一定要用/model命令确认当前会话实际生效的模型 ID,别只看配置文件。配置文件写对了但会话没重新加载的情况,我遇到过不止一次。开新会话是最稳妥的验证方式。