1. Claude Code CLI 启动 /init 就报 glm-5 加载失败,到底卡在哪
如果你在终端里敲下claude,界面顶部显示glm-5 · API Usage Billing,接着执行/init却弹出There's an issue with the selected model (glm-5). It may not exist or you may not have access to it.,那说明工具已经把你的默认模型锁定成了 glm-5,但当前这条请求链路根本没能力把它拉起来。这个报错在 Claude Code CLI 里非常典型,核心检索词就是「模型加载异常」「init 报错」「glm-5 配置」。它不是什么玄学问题,而是模型 ID、API 端点、鉴权密钥三者没有对齐。
Claude Code CLI 本质上是一个终端里的编码 Agent,它默认走 Anthropic 的接口规范,模型列表、鉴权头、请求体格式都是按 Claude 系列设计的。当你把模型名改成 glm-5,工具会拿这个名字去请求,但请求发往的端点、携带的 Key 未必认识这个模型,于是工具只能告诉你「模型可能不存在,或者你没权限」。这句话拆开就是三种可能:模型 ID 写错了、Key 没有该模型权限、或者端点压根不支持这个模型体系。
这篇内容适合两类人:一类是刚装好 Claude Code CLI、想用 glm-5 做编码但一启动就报错的开发者;另一类是想通过统一 Key/API 通道把多模型接进 CLI、避免每次换模型都改一堆配置的人。我会从settings.json和config.toml两个骨架文件入手,把配置项逐个拆开,再结合 TaoToken 的统一通道完成一次可复制的接入验证。全程给命令、给配置片段、给预期输出,你照着做就能定位到底哪一环断了。
2. 先把 TaoToken 通道准备好,再谈模型配置
在动 Claude Code CLI 的配置文件之前,得先有一个能同时承载多模型请求的入口。TaoToken 在这里扮演的角色就是统一 Key 和统一 API 通道:你不需要为每个模型厂商单独维护一套密钥和端点,而是用同一个 Key、同一个 Base URL 去请求不同模型。官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 根地址是 https://taotoken.net/api ,注意 API 地址后面不加任何 UTM 参数,配置里要写干净。
第一步是拿到 Key。打开控制台页面 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,登录后进入 API Keys 管理页 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite ,新建一个 Key 并复制。这个 Key 就是后面settings.json里要填的凭证。建议单独建一个用于 CLI 的 Key,方便后续按项目轮换或吊销。
第二步是确认你要用的模型 ID。glm-5 在不同平台上的官方 ID 可能带后缀,比如glm-5-plus、glm-5-flash之类,写错一个字符就会触发「模型不存在」。你可以先在模型对话页 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite 里手动选一次 glm-5,发一条测试消息,确认这个模型在你的账号下确实可用、返回正常。这一步能提前排掉「Key 没权限」和「模型 ID 写错」两个坑,比在 CLI 里反复试要快得多。
如果你后续打算长期用 CLI 做编码、跑 Agent 任务,可以顺带看一下 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 ,配置项含义、端点路径、鉴权方式都以文档为准,遇到不确定的字段先去这里核对。
3. settings.json 与 config.toml 的可复制配置骨架
Claude Code CLI 的配置分两层:一层是全局或项目级的settings.json,管模型、端点、Key 这些运行时参数;另一层是config.toml,管工具行为、权限、默认工作目录等。报错glm-5加载失败,九成问题出在settings.json的模型与端点没对齐。下面给一份可直接抄的骨架,你按自己的路径和 Key 替换即可。
先看settings.json。macOS 下通常在~/.claude/settings.json,项目级则在项目根目录的.claude/settings.json。核心字段如下:
{ "model": "glm-5", "apiKey": "sk-你的TaoTokenKey", "baseURL": "https://taotoken.net/api", "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoTokenKey" } }这里有两个关键点。第一,baseURL和ANTHROPIC_BASE_URL必须一致,都指向https://taotoken.net/api,不能带尾斜杠,也不能带 UTM 参数。第二,model字段的值必须和你在模型对话页里验证过的官方 ID 完全一致。如果你验证时用的是glm-5-plus,这里就写glm-5-plus,不要简写成glm-5。
再看config.toml。它一般放在~/.claude/config.toml或项目级.claude/config.toml,负责工具行为:
[default] model = "glm-5" api_base = "https://taotoken.net/api" api_key = "sk-你的TaoTokenKey" timeout = 120 [permissions] allow_file_write = true allow_shell = trueconfig.toml里的model和api_base要和settings.json保持一致,否则工具启动时会以其中一个为准,另一个被忽略,导致你改了 A 文件却以为 B 文件生效。实测下来,最容易踩的坑就是两个文件里模型名不一样:settings.json写glm-5,config.toml写glm-5-plus,启动时加载了前者,报错依旧。
如果你用的是环境变量方式,可以在~/.zshrc或~/.bashrc里加:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="sk-你的TaoTokenKey" export ANTHROPIC_MODEL="glm-5"环境变量的优先级通常高于配置文件,所以如果你同时配了文件和环境变量,以环境变量为准。排查时先echo $ANTHROPIC_MODEL确认当前 shell 里到底是什么值,避免被旧变量覆盖。
4. 逐步验证:从 /model 到一次成功的 /init
配置改完不要直接开新会话就完事,按下面顺序验证,每一步都有明确的预期结果,哪一步不对就停在哪一步排查。
第一步,退出所有已开的 Claude 会话,重新打开终端,执行:
claude --version确认版本号,比如Claude Code v2.1.62。版本太旧可能不识别新模型 ID,如果低于你参考文档里的推荐版本,先升级。
第二步,启动 CLI:
claude启动后看顶部状态栏。如果显示的还是glm-5 · API Usage Billing,说明模型名被读到了;如果显示别的模型,说明配置文件没生效,回去检查settings.json路径和 JSON 语法。JSON 里多一个逗号都会导致整个文件被忽略,用python -m json.tool ~/.claude/settings.json校验一下格式。
第三步,在会话里执行:
/model这会拉取当前 Key 和端点下可用的模型列表。预期结果是返回一串模型 ID。如果你在列表里能看到glm-5或你配置的那个 ID,说明通道和权限没问题;如果列表为空或报鉴权错误,说明 Key 或端点有问题,回到第 2 节重新确认 Key 和baseURL。
第四步,执行初始化:
/init预期结果是工具开始扫描当前工作目录、生成项目上下文,不再弹出There's an issue with the selected model。如果仍然报错,把报错原文完整复制出来,重点看括号里的模型名是不是你配置的那个。如果括号里是glm-5但你配的是glm-5-plus,说明有另一个配置文件在覆盖,用grep -r "glm-5" ~/.claude/ .claude/把所有出现的地方找出来统一。
第五步,发一条真实请求验证链路:
请读取当前目录下的 README.md,总结它的内容。如果模型正常返回总结,说明从 CLI 到 TaoToken 通道再到 glm-5 的整条链路已经通了。这一步比/init更能说明问题,因为/init偏工具内部动作,真实请求才验证了模型推理能力。
5. 本篇常见错排查:模型名、端点、Key、版本四类
报错There's an issue with the selected model (glm-5)看起来只有一句话,但触发原因可以归成四类,按出现频率从高到低排。
第一类,模型 ID 不匹配。这是最常见的。你以为官方 ID 是glm-5,实际可能是glm-5-plus、glm-5-air或带日期后缀的版本。排查方法:去模型对话页手动选一次,看请求里实际用的 ID,或者查接入文档里的模型列表。把settings.json、config.toml、环境变量三处的模型名统一成同一个正确 ID。
第二类,端点写错。baseURL写成了https://taotoken.net/api/(带尾斜杠),或者写成了官网首页地址,或者带了 UTM 参数。正确写法是https://taotoken.net/api,干净、无尾斜杠、无参数。端点错了,请求发不到正确路径,工具自然认为模型不可用。
第三类,Key 权限或余额问题。Key 本身有效,但没有开通 glm-5 的访问权限,或者账号余额不足。排查方法:在模型对话页用同一个 Key 发一条 glm-5 消息,如果那边也报权限错误,就是 Key 的问题,去控制台重新分配权限或换 Key。
第四类,工具版本兼容。旧版 Claude Code CLI 的模型列表是硬编码的,不认识新模型 ID。排查方法:claude --version看版本,对照文档里的最低版本要求,用包管理器升级。macOS 下如果是 Homebrew 装的,brew upgrade claude-code;npm 装的,npm update -g @anthropic-ai/claude-code。
还有一个隐蔽的坑:多个配置文件同时存在。项目级.claude/settings.json会覆盖全局~/.claude/settings.json,环境变量又覆盖两者。排查时用这个命令把所有相关配置列出来:
echo "ENV MODEL: $ANTHROPIC_MODEL" echo "ENV BASE: $ANTHROPIC_BASE_URL" cat ~/.claude/settings.json 2>/dev/null cat .claude/settings.json 2>/dev/null cat ~/.claude/config.toml 2>/dev/null把输出里的模型名和端点逐个比对,不一致的就是元凶。我试过在项目里留了一个旧的.claude/settings.json,里面模型名还是上一版的,结果全局配置怎么改都没用,最后就是靠这个命令找出来的。
6. 把通道固定下来,后续换模型只改一个字段
glm-5 加载失败这件事,表面是模型配置问题,底层是「模型名、端点、Key」三件套没有统一管理。一旦你用 TaoToken 把端点和 Key 固定成https://taotoken.net/api加一个统一 Key,后续换模型就只需要改model一个字段,不用再动鉴权和端点。这对经常在 Claude、glm 之间切换做编码的人来说,省掉的是每次重新配环境的重复劳动。
如果你主要做长期编码和 Agent 任务,建议把 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 操作,建议给 CLI 单独建一个 Key,方便出问题时快速定位是 Key 还是配置的锅。
最后留一个实用习惯:每次改完配置,先跑python -m json.tool校验 JSON,再claude --version确认版本,然后claude启动看状态栏模型名,最后/model拉列表确认权限。这四步走完再执行/init,基本不会再遇到「模型加载异常」这种启动即报错的情况。配置这东西,改的时候多花两分钟核对,比报错后翻半天日志划算。