在 Claude Code 中使用 GLM 模型出现 Unable to connect to Anthropic services 的解决方案:把 settings 改到 TaoToken
1. 报错现场还原Claude Code 接 GLM 为什么总提示 Unable to connect to Anthropic services你打开终端敲下claude本想让它用 GLM 模型帮你改一段代码结果屏幕上直接甩出一行红字Unable to connect to Anthropic services紧跟着还有Failed to connect to api.anthropic.com: ERR_BAD_REQUEST。这时候你大概率会愣一下——我明明已经在settings.json里把模型换成 GLM 了怎么它还在往 Anthropic 的服务器上撞这个问题的本质其实不是 GLM 不能用而是 Claude Code 这个客户端在启动时默认会去读几个环境变量来决定「请求发到哪、用什么身份发」。如果你只在settings.json里改了model字段但ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN这两个关键变量没生效Claude Code 就会继续用默认的api.anthropic.com作为请求地址。而你的网络环境访问这个地址时要么被拦、要么返回 400于是就有了Unable to connect to Anthropic services。我试过在 Windows 的 cmd、PowerShell 和 WSL 里分别复现发现一个很典型的坑很多人改完settings.json后没有重启终端或者只改了用户级变量但当前会话没刷新导致 Claude Code 读到的还是旧值。另一个高频原因是settings.json的路径放错了——Claude Code 在不同系统下读取的配置目录不一样放错位置等于没配。所以这篇内容要解决的核心就三件事第一搞清楚 Claude Code 到底从哪里读配置第二把settings.json和环境变量改成指向一个稳定可用的 Anthropic 兼容入口第三用一条最小请求验证请求确实发出去了、并且能正常返回。下面我会用 TaoToken 作为统一入口来演示因为它同时提供 Anthropic 兼容的 Base URL 和 Key 管理适合用来做这种「改 settings 定位连接失败」的排查。需要先说明的是这个排查思路是通用的。不管你后面接的是 GLM、还是其他国产模型只要它提供 Anthropic 兼容接口配置逻辑都一样把 Base URL 指过去、把 Key 填对、把非必要流量关掉。区别只是 Base URL 和 Model ID 不同。2. TaoToken 前置准备拿到 Base URL、API Key 和 Model ID 三件套在动手改settings.json之前你得先把三样东西准备好我把它叫做「接入三件套」Base URL、API Key、Model ID。缺任何一个Claude Code 都会在连接阶段报错而且报错信息往往不会直接告诉你缺的是哪个只会笼统地说Unable to connect to Anthropic services。第一步打开 TaoToken 的控制台地址是https://taotoken.net/console。登录后进入 API Keys 页面路径是https://taotoken.net/api-keys。在这里你可以创建一个新的 Key复制出来先存到记事本里。注意Key 只在创建时完整显示一次关掉页面就看不到了所以一定要先复制。第二步确认 Base URL。TaoToken 的 Anthropic 兼容入口是https://taotoken.net/api。这个地址就是你要填到ANTHROPIC_BASE_URL里的值。很多人在这里会多写一个斜杠或者少写一个/api导致请求 404然后又被 Claude Code 包装成连接失败。建议你直接复制不要手敲。第三步确定 Model ID。如果你要用 GLM 系列Model ID 通常形如glm-4-plus或glm-4.7这类字符串。具体可用的 Model ID 以 TaoToken 文档页https://taotoken.net/doc里的模型列表为准。你可以先在模型对话页面https://taotoken.net/models里手动选一次 GLM发一条消息确认能通再去配 Claude Code。这一步很关键因为它把「Key 是否有效」和「Claude Code 配置是否正确」两个问题拆开了避免你在一堆报错里来回猜。这里有个细节值得展开为什么一定要先在三件套层面确认因为 Claude Code 的报错信息粒度很粗。它不会告诉你「你的 Key 无效」还是「你的 Base URL 写错了」它只会说连不上 Anthropic 服务。如果你不先把 Key 和 Base URL 在一个更简单的环境里验证一遍后面改settings.json时就会陷入「改了也不对、不知道哪不对」的死循环。另外TaoToken 的 Coding Plan 页面https://taotoken.net/coding-plan里也提供了针对 Claude Code 这类编码工具的接入说明如果你打算长期用 Claude Code 写代码可以顺带看一下配额和模型选择。但排查阶段不用纠结套餐先把连通性跑通最重要。准备好这三样之后你就可以进入下一步开始改配置文件了。记住接下来的所有配置核心目标只有一个让 Claude Code 发出的请求打到https://taotoken.net/api而不是api.anthropic.com。3. 可复制配置settings.json 片段与三件套写法现在进入实操。Claude Code 读取配置的顺序通常是「环境变量优先settings.json 兜底」。所以最稳的做法是两边都配并且保持一致。下面我按系统分开写你可以直接复制。先看settings.json。在 macOS 和 Linux 下路径一般是~/.claude/settings.json在 Windows 下路径是C:\Users\你的用户名\.claude\settings.json。如果.claude目录不存在手动建一个。文件内容如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的TaoToken密钥, ANTHROPIC_MODEL: glm-4-plus, CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: 1 } }这里四个字段各有作用。ANTHROPIC_BASE_URL决定请求发到哪必须指向 TaoToken 的兼容入口。ANTHROPIC_AUTH_TOKEN是你的身份凭证填 TaoToken 的 Key。ANTHROPIC_MODEL指定默认模型填 GLM 的 Model ID。CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC设为1作用是关掉 Claude Code 启动时的一些非必要遥测请求这些请求有时也会打到 Anthropic 官方地址从而干扰你的排查。如果你更习惯用 TOML 风格管理或者你的工具链里有config.toml可以写成这样语义和上面完全一致[env] ANTHROPIC_BASE_URL https://taotoken.net/api ANTHROPIC_AUTH_TOKEN sk-你的TaoToken密钥 ANTHROPIC_MODEL glm-4-plus CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 1接下来是环境变量。Windows 的 cmd 里用setx写入用户级变量setx ANTHROPIC_BASE_URL https://taotoken.net/api setx ANTHROPIC_AUTH_TOKEN sk-你的TaoToken密钥 setx ANTHROPIC_MODEL glm-4-plus setx CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 1PowerShell 里写法不同用[System.Environment]::SetEnvironmentVariable[System.Environment]::SetEnvironmentVariable(ANTHROPIC_BASE_URL, https://taotoken.net/api, User) [System.Environment]::SetEnvironmentVariable(ANTHROPIC_AUTH_TOKEN, sk-你的TaoToken密钥, User) [System.Environment]::SetEnvironmentVariable(ANTHROPIC_MODEL, glm-4-plus, User) [System.Environment]::SetEnvironmentVariable(CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC, 1, User)Linux 或 macOS 的 shell 里写入~/.bashrc或~/.zshrcexport ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENsk-你的TaoToken密钥 export ANTHROPIC_MODELglm-4-plus export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC1写完记得source ~/.zshrc或重开终端。这里有个高频坑setx写入后当前已经打开的 cmd 窗口不会立即生效必须关掉重开。很多人改完直接在当前窗口敲claude结果还是报Unable to connect to Anthropic services就是因为变量没刷新。如果你用的是 CC Switch 这类配置切换工具或者 Cline MCP、Codex 的auth.json逻辑也一样Base URL 填https://taotoken.net/apiKey 填 TaoToken 的 KeyModel ID 填 GLM 的 ID。三件套缺一不可任何一处写错都会回到连接失败。4. 验证请求用最小命令确认请求真的发出去了配置改完先别急着在 Claude Code 里跑复杂任务。用一条最小请求验证能最快定位问题。最直接的方式是用curl打一次 Anthropic 兼容的 messages 接口curl -X POST https://taotoken.net/api/v1/messages \ -H x-api-key: sk-你的TaoToken密钥 \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: glm-4-plus, max_tokens: 64, messages: [{role: user, content: 只回复两个字通了}] }如果返回的 JSON 里有content字段并且文本是「通了」说明 Base URL、Key、Model ID 三件套全部正确。如果返回 401说明 Key 有问题返回 404说明 Base URL 路径不对返回 400 且提示 model 不存在说明 Model ID 写错了。这三种错误在 Claude Code 里都会被包装成Unable to connect to Anthropic services所以先用 curl 拆开看效率高很多。curl 通了之后再回到 Claude Code。先确认当前终端里的变量确实生效echo $ANTHROPIC_BASE_URL echo $ANTHROPIC_MODELWindows cmd 里用echo %ANTHROPIC_BASE_URL%。确认输出是https://taotoken.net/api和你的 GLM Model ID而不是api.anthropic.com。如果输出不对说明变量没写进去或者没刷新回到上一步重配。然后启动 Claude Codeclaude进去之后输入一句简单的话比如「帮我写一个 Python 的 hello world」。如果它能正常返回代码说明整条链路通了。这时候你可以再让它做一件稍微复杂的事比如「读取当前目录下的 README.md 并总结」观察是否稳定。如果第一次通、第二次报错那可能是网络抖动或配额问题不是配置问题。还有一个验证技巧在 Claude Code 里输入/status或类似命令不同版本可能不同查看当前使用的 Base URL 和模型。如果显示的还是 Anthropic 官方地址说明settings.json没被读到检查路径和文件名是否正确。文件名必须是settings.json不能是settings.json.txtWindows 下尤其容易犯这个错。5. 常见报错排查401、local proxy failed、reading choices、OAuth即使按上面配了还是可能遇到几种典型报错。我按真实遇到过的顺序列一下方便你对照。第一种401 Unauthorized。这通常出现在 curl 阶段说明 Key 无效或没带对。检查ANTHROPIC_AUTH_TOKEN是不是复制完整了有没有多余空格。TaoToken 的 Key 一般以sk-开头如果你复制时漏了前缀就会 401。另外注意有些工具读的是ANTHROPIC_API_KEY而不是ANTHROPIC_AUTH_TOKEN如果你用的客户端版本较老两个都配上更保险。第二种local proxy failed。这个报错说明 Claude Code 尝试走本地代理但代理没起来或者端口不对。如果你之前配过HTTP_PROXY或HTTPS_PROXY环境变量先临时清掉再试unset HTTP_PROXY unset HTTPS_PROXYWindows 下用set HTTP_PROXY清空。清掉后重开终端再跑 Claude Code。这个报错和Unable to connect to Anthropic services经常一起出现因为代理把请求拦了客户端就认为是连不上服务。第三种reading choices相关报错。这个通常出现在返回体解析阶段说明请求其实发出去了但返回的 JSON 结构不符合 Claude Code 预期。常见原因是 Model ID 填了一个不兼容 Anthropic 格式的模型或者 Base URL 指向了一个 OpenAI 格式的接口而不是 Anthropic 格式。确认你填的是https://taotoken.net/api并且 Model ID 是 Anthropic 兼容列表里的。第四种OAuth 相关报错。Claude Code 某些版本会尝试走 OAuth 登录流程如果你已经用 Key 认证就不需要 OAuth。可以在settings.json里确认没有残留的 OAuth 配置或者设置CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC1减少这类尝试。排查时有个通用原则先 curl再 Claude Code先环境变量再 settings.json先简单模型再复杂任务。每一步只改一个变量改完立刻验证这样出问题时你能准确定位是哪一步引入的。6. 稳定接入建议把配置固化下来并持续验证跑通之后建议把配置固化避免下次重装或换机器时又踩一遍。最省事的做法是把settings.json和环境变量写进一个初始化脚本比如setup-claude.sh里面就三行 export 加一个写 json 的动作。换机器时跑一遍脚本三件套就齐了。另外Model ID 不要写死在脑子里建议放在一个变量里统一管理。比如在 shell 里定义export GLM_MODELglm-4-plus然后settings.json里引用。这样以后换模型只改一处。如果你打算长期用 Claude Code 配合 GLM 做编码可以关注 TaoToken 的 Coding Plan 页面https://taotoken.net/coding-plan里面有针对编码场景的模型推荐和配额说明。日常验证模型是否可用用模型对话页面https://taotoken.net/models最快。需要管理多个 Key 时API Keys 页面https://taotoken.net/api-keys可以随时创建和吊销。接入文档在https://taotoken.net/doc遇到新版本 Claude Code 的配置变化先查文档再动手。最后提醒一句每次升级 Claude Code 后重新跑一次 curl 验证。因为新版本可能改变配置读取逻辑或者引入新的默认行为。保持「改完必验」的习惯Unable to connect to Anthropic services这类报错就很难再困住你。