所有文章
AI

Claude Code 报 There’s an issue with the selected model 怎么办:5 种原因实测(Ollama / OpenRouter)

Claude Code 刚接上 Ollama 或 OpenRouter,一发消息就报 There's an issue with the selected model。我们用 Claude Code 2.1.312 加 Ollama 0.40.13 把这个报错复现了 5 种,逐个给出改法。

There's an issue with the selected model:浅绿色黏土信封被浅蓝色黏土信箱弹了回来,就像请求发到了错误的地址

Claude Code 刚接上 Ollama 或 OpenRouter,一发消息就回一句 There's an issue with the selected model (qwen3:8b). It may not exist or you may not have access to it.,换了几次模型名还是一样。这句 there’s an issue with the selected model 看着像账号权限问题,但接第三方后端时,绝大多数情况是模型名或地址写错了。

我们在 Linux 上装了 Claude Code 2.1.312,接本地 Ollama 0.40.13,把这个报错复现了 5 种,下面按原因逐个给改法。OpenRouter 部分我们手上没有 key,内容来自 OpenRouter 官方文档,文中会标明。

There’s an issue with the selected model 是什么意思

Claude Code 官方的报错说明页对它的解释是:配置的模型名没被识别,或者你的账号没有这个模型的权限。报错末尾的提示会随使用方式变化:交互界面里是 Run /model,-p 非交互模式里是 Run --model。

我们的实测里,只要后端对 Claude Code 的请求回了 404,就会显示这一句。直接用 curl 请求 Ollama 的 /v1/messages,带一个没拉取的模型名,返回的是 {"type":"error","error":{"type":"not_found_error","message":"model 'qwen3:8b' not found"}},Claude Code 把它显示成了 there’s an issue with the selected model。

后端根本连不上时是另一句话。我们把 Ollama 停掉再跑,得到的是 API Error: Connection refused — a firewall or proxy may be blocking it (ECONNREFUSED)。遇到这种连接类报错,看 Claude Code Unable to connect to API 的排查。

我们怎么测的

测试环境:Claude Code 2.1.312,用单独的 CLAUDE_CONFIG_DIR,不碰原有配置;Ollama 0.40.13 跑在 11434 端口,本地只拉了 qwen2.5:0.5b。按 Ollama 文档设置三个环境变量:

这些测试是在我们一个 Grok Bot 的云端电脑上跑的,那台电脑没有 GPU,所以只用了很小的模型。Grok Bot 怎么收费、还能做什么,见 Grok Bot 国内能用吗、收费吗。

export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""
export ANTHROPIC_BASE_URL=http://localhost:11434

然后每次只改模型名或地址,用 claude -p 发同一句话:

Claude Code 接 Ollama 复现 There's an issue with the selected model:模型没拉取、少写标签、地址多了 /v1、发出 Claude 默认模型名,以及改对后的命令

用对模型名以后请求能正常返回,Claude Code 还会多给一行提示:它不认识这个模型,按 200k token 的上下文窗口处理。0.5b 的模型太小,跟不上 Claude Code 的工具提示词,回复内容答非所问,这次只用来验证链路通不通,写代码要换更大的模型。

接 Ollama 时的 4 个原因

1. 模型没拉取,或者没写标签

ANTHROPIC_MODEL=qwen3:8b 而本地没有 qwen3:8b,报错。只写 qwen2.5、本地实际是 qwen2.5:0.5b,同样报错。Ollama 不写标签时默认找 :latest,你拉的如果是别的标签就对不上。

改法:先跑 ollama list,把 NAME 一列原样填进 --model 或 ANTHROPIC_MODEL,冒号和标签都要带上。没拉过的模型先 ollama pull。

2. ANTHROPIC_BASE_URL 后面多写了 /v1

很多教程里 OpenAI 兼容接口的地址是 http://localhost:11434/v1,照搬过来就会出错。Claude Code 会在地址后面自己拼 /v1/messages,我们在 Ollama 日志里看到的请求是 POST "/v1/v1/messages?beta=true",返回 404,Claude Code 显示的还是 there’s an issue with the selected model。GitHub 上 anthropics/claude-code#26408 的评论里也有人遇到同一个 /v1/v1 问题。

改法:ANTHROPIC_BASE_URL=http://localhost:11434,不带 /v1,也不带结尾斜杠。

3. 没指定模型,Claude Code 发出了自己的默认模型名

只设了地址、没设模型时,Claude Code 会把它自己的默认模型名发给 Ollama。我们这次报错里是 claude-opus-5-5,Ollama 本地当然没有。

改法:启动时加 --model 模型名,或设 ANTHROPIC_MODEL。Ollama 的 Claude Code 集成文档还给了一个省事的办法:ollama launch claude,由 Ollama 来设好这些变量再启动 Claude Code(我们的 0.40.13 里有这个命令,但这篇的结论都来自上面手动设变量的测试)。

4. settings.json 里留着以前的模型

我们在配置目录的 settings.json 里写了 {"model":"claude-sonnet-4-6"},接 Ollama 不加参数运行,报错里的模型就是 claude-sonnet-4-6。同样的配置下加上 --model qwen2.5:0.5b,请求正常。

这和 Claude Code 模型配置文档里的优先级一致:会话里的 /model 最高,然后是启动参数 --model、环境变量 ANTHROPIC_MODEL,再往后才是 settings 里的 model。settings.json 有好几个位置,项目级的也会生效,具体路径见 Claude Code settings.json 在哪。

原因和改法对照

下表前 5 行我们用 Ollama 复现过,后 3 行来自文档:

There's an issue with the selected model 原因和改法对照表:Ollama、OpenRouter、Anthropic 账号和 LLM 网关

其中“ANTHROPIC_BASE_URL 没清掉”指的是:以前为了接 Ollama 在 shell 配置里 export 过地址,后来想换回 Anthropic 官方账号,Claude Code 还是把请求发给 Ollama,于是 Claude 的模型名全部 404。#26408 里有用户就是 unset ANTHROPIC_BASE_URL 后解决的。

接 OpenRouter 时要注意的(来自官方文档)

这一节我们没有实测。OpenRouter 的 Claude Code 接入文档要求这样设置:

export ANTHROPIC_BASE_URL="https://openrouter.ai/api"
export ANTHROPIC_AUTH_TOKEN="你的 OpenRouter key"
export ANTHROPIC_API_KEY=""
  • 地址是 https://openrouter.ai/api,同样不要写成 /api/v1。
  • ANTHROPIC_API_KEY 要显式设成空字符串,文档专门强调要“显式”置空,只是不设不算。
  • 以前用 Anthropic 账号登录过的,先在 Claude Code 里运行 /logout。文档说缓存的登录会导致模型找不到这类报错。
  • 想换模型,用 ANTHROPIC_DEFAULT_OPUS_MODEL、ANTHROPIC_DEFAULT_SONNET_MODEL、ANTHROPIC_DEFAULT_HAIKU_MODEL 填 OpenRouter 上的模型名。
  • 设好后在 Claude Code 里运行 /status,确认连的是 OpenRouter。

文档也提醒,Claude Code 只保证在 Anthropic 官方的模型上正常工作,换别的模型可能出问题。接国内模型的思路差不多,DeepSeek、Kimi、GLM 的地址和模型名见 Claude Code 接国内模型。

没接第三方,用的是 Anthropic 账号

如果你没改过 ANTHROPIC_BASE_URL,官方报错说明页给的处理办法是:

  • 交互界面运行 /model,从你账号能用的模型里选;-p 模式用 --model 传别名或完整模型 ID。
  • 尽量用 sonnet、opus 这样的别名,文档说别名会指向维护中的默认模型,不会过期;写死的完整 ID 则可能过时。
  • 错误的模型反复出现,说明某个位置还存着旧 ID,按上面的优先级逐个找。
  • 2.1.206 之前的版本,登录过期且刷新不了时也会报这个错,运行 /login;新版本会直接显示 Login expired。
  • 地址指向 LLM 网关、所有模型都这样报错时,试试 ENABLE_TOOL_SEARCH=false。文档说从 2.1.304 起,经过网关时默认也会发送工具搜索相关的字段,有的网关不接受。

GitHub 上 #62035 是 Pro 账号所有模型都返回 model_not_found 404 的报告,属于账号或服务端的情况,自己改配置解决不了时可以去那里对照。其他报错可以在 Claude Code 报错速查里按原文查。

本地模型能跑起来以后

报错解决了,下一个常见问题是上下文。Ollama 文档建议给 Claude Code 这类工具至少 64000 token 的上下文,而 Ollama 在显存小于 24 GiB 时默认只给 4096,改法见 Ollama 上下文长度设置。

常见问题

报错里的模型名不是我设的,为什么?

说明有更高优先级的地方设了别的模型,或者你根本没设,Claude Code 用了自己的默认值。报错括号里的名字就是实际发出去的名字,拿它去对照 /model、--model、ANTHROPIC_MODEL 和各个 settings.json。

ollama run 能用,Claude Code 却报 there’s an issue with the selected model?

ollama run 不经过 ANTHROPIC_BASE_URL。先检查 Claude Code 的地址有没有多 /v1,再检查模型名是否和 ollama list 完全一致。

怎么看 Claude Code 到底请求了哪个地址?

看 Ollama 的服务日志,每个请求都有一行 GIN 记录,能看到路径和状态码。Claude Code 加 --debug 运行,调试日志里也有 404 的记录。

留下你的想法

你的邮箱不会公开。