ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Coding Plan 配完报 Unable to connect to Anthropic services?TaoToken 这样改 settings.json

Coding Plan 配完报 Unable to connect to Anthropic services?TaoToken 这样改 settings.json 配完 Coding PlanClaude Code 启动时甩给你一句 Unable to connect to Anthropic services这种时候多半不是网络断了也不是账号出了什么问题而是启动流程里的两处配置没对齐一处是 ~/.claude/settings.json 的 env 段决定请求发往哪个端点另一处是 ~/.claude.json 里的 hasCompletedOnboarding决定 Claude Code 要不要把这次启动当成首次引导来处理。TaoToken 在这里不负责猜报错原因它只把 Key 和 Base URL 这两样东西统一好——你先到 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建一把自己的 Key再把 ANTHROPIC_BASE_URL 从百炼的 coding.dashscope.aliyuncs.com 端点换成 https://taotoken.net/api 顺手把漏掉的布尔值补齐命令行里那条红字大概率就消失了。下面按报错定位 → 改文件 → 验证 → 对照排查的顺序走一遍每一步都能直接复制。1. 先把 Unable to connect 定位到具体哪个文件1.1 报错出现的时机比报错内容本身更有用Claude Code 报 Unable to connect to Anthropic services通常出现在两种时机而这两种时机背后的原因完全不同。第一种是你敲下 claude 之后立刻报终端里连欢迎界面都没画完整光标停在一行错误上——这类基本是启动阶段的引导流程没走完和真正的 HTTP 请求没关系抓包也抓不到东西因为请求根本没发出去。第二种是你已经进入交互界面发第一条消息时才报连不上这种才和 Base URL、认证信息、模型名直接相关。原文场景里的百炼 Coding Plan 属于典型的第二种隐患被第一种现象掩盖Key 是 sk-sp-xxxxx 开头、端点写的是 https://coding.dashscope.aliyuncs.com/apps/anthropic、模型写的是 qwen3.5-plus参数看上去一个不缺但只要 ~/.claude.json 里没有 hasCompletedOnboarding: trueClaude Code 就会把自己当成还没完成首次配置的新装环境启动时直接抛错你写的那套 settings.json 连读都没被读到。所以遇到这条报错先看它出现的时机再决定是去翻引导标记还是去翻端点配置。1.2 settings.json 管通道.claude.json 管引导这两个文件名字像、位置也像但职责差得很远混起来改就是反复报错的根源。settings.json 决定往哪发、用什么身份发、默认用哪个模型.claude.json 决定这次启动算不算首次运行。前者写错了会 401、404后者丢了会直接连界面都不给你。文件位置作用关键字段settings.json~/.claude/settings.jsonWindows 为 C:\Users\您的用户名.claude\settings.json决定 Claude Code 走哪个端点、用什么凭证、默认模型ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_MODEL.claude.json用户主目录下注意不在 .claude 文件夹里记录首次引导状态、项目级偏好hasCompletedOnboarding判断方法很土但有效改完之后进 Claude Code 用 /status 看当前生效的 Base URL 是不是你写进去的那个。如果显示的还是 dashscope 那串地址说明你改的是另一个文件如果 /status 里压根看不到你写的值先怀疑 .claude.json 里的引导标记没落地。这两个检查各花十秒能省掉半小时的重装折腾。2. 把 ANTHROPIC_BASE_URL 从百炼端点换到统一通道2.1 先到 TaoToken 创建 Key不用再纠结 sk-sp- 前缀原来那套流程是先订阅 Coding Plan再拿到一把 sk-sp- 开头的专用 Key然后填进 settings.json。仿写后的流程把第一步搬到了 TaoToken 打开页面注册登录进控制台 API Keys新建一把 Key 并复制下来。Key 只在创建时完整显示一次复制完先粘到临时文本里别中途去刷新页面否则就得删了重建。顺手在模型广场看一眼当前可用的模型 ID记下来待会填 ANTHROPIC_MODEL。这里要克制住自己编 ID 的冲动像 gpt-5 或任何带随意日期后缀的名字都不要写进去模型 ID 以模型广场当天的列表为准选一个你确实要长期用的。把 Key 和模型 ID 放在手边第 2.2 到 2.4 节就是纯粹的填空动作不需要再做任何决策。2.2 macOS / Linuxvim ~/.claude/settings.json 怎么写先建目录再打开文件避免 vim 新建时路径不存在报错mkdir -p ~/.claude cp ~/.claude/settings.json ~/.claude/settings.json.bak 2/dev/null vim ~/.claude/settings.json内容按下面这段落盘注意是放在 env 里不是顶层直接写{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: 以 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 模型广场当时列表为准的模型 ID } }几个容易翻车的细节Base URL 末尾不要带 /v1写 https://taotoken.net/api 就够了多一段路径就会变成 404JSON 不支持注释也不允许最后一个字段后面留逗号YOUR_API_KEY 是占位符保存前一定要整串替换成你复制的那把 Key别留空格和换行。改完先按 Esc 再输入 :wq 保存退出。2.3 Windowsnotepad %USERPROFILE%.claude\settings.jsonWindows 上的文件路径是 C:\Users\您的用户名.claude\settings.json在 PowerShell 或 CMD 里可以直接用环境变量拼出来notepad %USERPROFILE%\.claude\settings.json如果 .claude 目录还不存在先在文件资源管理器里手动建一个或者用 mkdir %USERPROFILE%.claude 创建。内容与 2.2 节完全一致唯一要额外注意的是保存编码优先存成 UTF-8 无 BOM某些编辑器默认加的 BOM 会让 JSON 解析在第一行就失败表现就是刚启动就报错。写完可以另存一份 .bak 备份后面想回退到百炼配置时直接换回来。2.4 补上 hasCompletedOnboarding: true别让引导流程卡住启动这是原文里最容易被跳过的一步也是报 Unable to connect 的直接原因。打开主目录下的 .claude.jsonmacOS/Linux 用 vim ~/.claude.jsonWindows 用 notepad %USERPROFILE%.claude.json确保里面有这一条{ hasCompletedOnboarding: true }如果文件里已经有其它字段只把这一条加进去不要整个覆盖否则会把之前积累的项目偏好一起清掉。改完彻底退出终端进程再重开——不是新开一个标签页而是关掉窗口重新启动让 Claude Code 重新读一遍这两个文件。很多人卡在这里反复试其实只是旧进程还拿着上一次的配置在跑。3. 重启终端后用 /status 验证 Base URL、Key 和模型3.1 /status 里应该看到什么进入 Claude Code 之后敲 /status重点盯三行信息。第一行看 Base URL应该是 https://taotoken.net/api 如果显示的还是 dashscope 端点说明配置文件确实没被读到回到第 2.4 节确认引导标记第二行看认证状态通常会显示已配置并只露 Key 的后几位显示为空或者报未认证就是 ANTHROPIC_AUTH_TOKEN 那行贴串了第三行看模型名应该等于你写在 ANTHROPIC_MODEL 里的值。三项全对再随便发一句你好确认能拿到回复。如果 /status 显示正常、发消息也正常那这条 Unable to connect 就算彻底解决了。此时可以退出来重新进一次做二次确认因为有些环境变量只在首次进程启动时读取第一次改完能跑、第二次反而报错的情况多半是 shell 里还残留着旧变量见下一节。3.2 shell 里的环境变量会盖过 settings.json不少人是在某次临时调试时 export 过 ANTHROPIC_BASE_URL之后就忘了这回事。这类变量在大多数情况下会盖过 settings.json 里的 env 段结果就是你改了半天文件进程实际用的还是旧地址。检查方式很简单env | grep -i anthropicWindows 下用set | findstr /i anthropic。看到旧的 dashscope 地址就在当前 shell 里清掉然后开一个干净的新终端再跑 Claude Code。这一步如果不做你会在改了没生效和文件写错了之间反复怀疑自己其实是变量在背后捣乱。3.3 想换模型就只动 ANTHROPIC_MODEL模型切换不需要碰 Base URL 和 Key把 ANTHROPIC_MODEL 的值换成另一个模型 ID重启 Claude Code 即可生效。切换前建议先在模型对话里确认目标模型可用避免改完文件才发现这个 ID 当前不在列表里。同样ID 只能从模型广场抄不要凭印象写写错的表现往往不是明确的模型不存在而是一句含混的连接失败反而更难查。4. 仍然报 Unable to connect三类典型写法错误对照4.1 401、404 与模型不可用分别指向哪一步现象大概率原因怎么改认证失败 / 401Key 复制时带了空格换行或粘贴的还是旧 sk-sp- Key重新复制一次整串替换 YOUR_API_KEY404 / 找不到端点Base URL 写成了 https://taotoken.net/api/v1 或末尾多了斜杠改成 https://taotoken.net/api提示模型不可用ANTHROPIC_MODEL 抄错或该模型当前不在列表以模型广场当时列表为准重选对照表之外还有一种隐蔽情况settings.json 写在 Windows 的 C:\Users\您的用户名.claude\ 下但你在 WSL 里跑 Claude Code读的是 Linux 主目录那一份。两套路径都改一遍或者明确自己到底在哪个环境里执行命令比来回猜测快得多。4.2 回控制台确认这次请求有没有记上账改完还连不上别急着重装 Claude Code。打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 进控制台看两件事Key 状态是否正常、有没有对应的调用记录。如果一条记录都没有说明请求根本没离开你的机器问题在本地文件层优先查 .claude.json 的引导标记和 shell 里的环境变量如果记录里出现成片的 4xx问题在参数层回到 4.1 的表逐项对一遍。这个判断能帮你把排查范围砍掉一半。4.3 统一通道只负责 Key 和 Base URL 两件事边界得说清楚这条通道提供的是统一的 Key 与 Base URL它不替你读写 ~/.claude/settings.json不替你执行 /status也不改变 Claude Code 自身的启动逻辑。换句话说hasCompletedOnboarding 那个布尔值还是得你自己补文件权限、JSON 语法、Windows 路径里的引号也都得你自己确认。把责任边界分清楚排障时才不会在两个方向上反复横跳也不会因为一次没生效就怀疑通道本身。5. 跑通之后顺手做完的三件事5.1 先用模型对话确认这把 Key 是活的在 模型对话 里用同一把 Key 发一条测试消息。这一步的意义是把Key 本身有问题和Claude Code 配置有问题彻底分开对话页面能正常回复说明 Key 和通道没问题报错就只剩本地文件层对话页面同样报错那就不用继续折腾 settings.json 了先解决 Key 的状态问题再说。5.2 长期写代码先看 Coding Plan 够不够用如果只是偶尔跑几个脚本默认套餐通常够用要是每天都让 Claude Code 读项目、改文件、跑大段上下文建议先看一眼 Coding Plan 的说明再决定免得写到一半被额度打断还要回头改配置。选之前把自己的日调用量估个大概比事后加购省事。5.3 Key 要轮换、要新建都回控制台处理以后要给不同项目分配不同的 Key或者怀疑 Key 泄露需要轮换统一在 控制台 API Keys 处理改完记得同步更新 settings.json 里的 ANTHROPIC_AUTH_TOKEN并重启 Claude Code。环境变量的字段名和各平台路径对照放在 Claude Code 接入文档 里遇到拿不准的字段以文档为准不要凭记忆敲。这类报错最磨人的地方在于它看起来像网络问题实际上是两个 JSON 文件的事。我现在的习惯固定成三步先确认 .claude.json 里的 hasCompletedOnboarding 是 true再改 settings.json 的 env 段最后用 /status 收尾核对 Base URL、认证状态和模型名。三步走完基本不用再回头比反复重启终端和重装工具有效得多。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进