1. cmd 里敲 claude 报 ERR_BAD_REQUEST:不是装坏了,是默认通道被卡住
Claude Code 装好后,cmd 里敲claude却报Unable to connect to Anthropic services / ERR_BAD_REQUEST,这一下就把人卡住了。以前很多教程会教你打开用户目录、显示隐藏项目、改claude.json、加一个"hasCompletedOnboarding": true,看起来能跳过首次引导,实则绕远了——它只是让界面不再弹引导页,并没有把模型请求送到一条能走通的路上去。把模型通道改成 TaoToken 后,这个错就不用再从claude.json上找补;TaoToken 官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 一个地方就能拿到统一接入的 API Key,Claude Code、Codex、其他兼容客户端都能用同一套凭据。
先厘清一个概念:Claude Code 本身是终端里的 AI 编程智能体,能读写项目、跑测试、做重构,但它的模型推理在远程服务端完成。安装时npm install把程序从 npm 源拉了下来;运行时它要走模型 API 通道跟大模型通信。这两条路是不同的,很多人把「安装成功」当成「一定能用」,其实中间还有一层模型通道要配置。报错里出现Unable to connect to Anthropic services,含义就是客户端连不上模型服务;出现ERR_BAD_REQUEST,含义是请求被对方拒收。两者叠加,基本可以确定是默认通道不适合当前网络环境,而不是 Node.js 或 Git 装坏了。
这里要说明白:手动改claude.json里的hasCompletedOnboarding,在旧教程里是为了让客户端跳过首次引导和地域校验。这个字段只影响客户端的引导状态,不影响网络层,所以它治不了ERR_BAD_REQUEST。更麻烦的是,文件里多加一个逗号、少写一个引号,都可能导致 Claude Code 整个启动异常。走 TaoToken 之后,客户端从配置的 Base URL 发起请求,根本不经过官方默认入口,自然也不需要去claude.json里做任何手工标记。
2. 不碰 claude.json:先过三关检查,再去 TaoToken 创建 API Key
2.1 Node.js、Git、Claude Code 三个版本号都过了再往下走
TaoToken 只是换模型通道,不负责替你装运行环境。Claude Code 是 Node.js 应用,依赖 npm 安装,也靠 Node.js 引擎运行;Git 则用来做安全回滚、自动忽略文件、读取项目上下文。原文的流程一、二就是先装这两样,这里我把检查命令合并成三行。在 cmd 里依次执行:
node -v npm -v git -v都能打印出版本号,说明运行环境没问题。接着确认 Claude Code 本体:
claude --version能出现版本号,就说明程序装好了,剩下的是通道问题。如果这里直接提示claude 不是内部或外部命令,那是 npm 全局 bin 没进 PATH,先解决安装路径,再回来配置 TaoToken,否则后面所有步骤都接不上。
2.2 在 TaoToken 注册并创建 API Key,模型 ID 以模型广场为准
原文这一步是「选择 API 平台注册登录、充值、创建 API Key」,对应到 TaoToken 就是三件事:
- 打开 TaoToken 注册并登录;
- 在控制台创建一个 API Key,创建后立即复制保存,关闭页面后完整串不会再显示;
- 在模型广场确认你打算用的 DeepSeek 模型 ID,顺手看一眼上下文长度标注。
如果控制台提示需要先充值或购买额度,按页面说明操作就行,这和使用任何 API 平台一样。注意 Key 只显示一次,不要贴到公开仓库、聊天记录或截图里。至于模型 ID,别凭记忆填写,务必以 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 模型广场当前列出的为准。短视频教程里那些一年前的旧 ID,跟你手头这个平台不一定对得上,写错一个字符,后面的请求照样拿ERR_BAD_REQUEST。
3. cc-switch 新建 DeepSeek 配置,Base URL 填 https://taotoken.net/api
3.1 为什么用 cc-switch:配置可视化,不动安装目录文件
cc-switch 是社区开发的配置切换工具,专门帮你在多套模型配置之间切换。原文已经走了一遍图形界面,这里沿用同样的路径。它把 Base URL、API Key、模型 ID 都存成独立的配置项,启动时把当前激活的那一套带入客户端。你不需要手改claude.json,也不需要每次切换模型都去重开终端改环境变量。Windows 下直接去 GitHub 下载安装包打开,桌面图标双击就能进主界面。
用环境变量也能达到类似效果,比如ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_MODEL,但对 cmd 用户来说,每次换 Key 都要重开终端,而且一旦哪里多打了空格,报错信息并不直观。cc-switch 的好处是点选即切换,适合折腾多套模型的场景。
3.2 新建供应商:名称、Base URL、Key、模型 ID 四个字段
打开 cc-switch,点击右上角的 + 号,选择 DeepSeek 模板。弹窗里一般会有几个输入项,按下面的对应关系填:
| 字段 | 填写内容 |
|---|---|
| 配置名称 | TaoToken-DeepSeek |
| Base URL | https://taotoken.net/api |
| API Key | YOUR_API_KEY |
| 模型 ID | 以 TaoToken 模型广场为准 |
把YOUR_API_KEY替换成你在 TaoToken 控制台创建的真实 Key,前面不要留空格,后面不要带换行。这里最容易犯的错有两个:一是在https://taotoken.net/api后面手滑补一个/v1,这个端点本身就是兼容入口,不需要 v1 路径;二是把官网落地页 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 当成 Base URL 填进去,官网是给人注册、看模型、看用量的,API 端点是给程序发请求的,两者不能混用。填错了,客户端可能把网页 HTML 当成 API 响应解析,要么报ERR_BAD_REQUEST,要么报 JSON 解析失败。
3.3 「声明支持 1M」的勾选,按模型广场标注来
原文里勾了「声明支持 1M」,下面还填了对应标记。这个勾的含义是告诉 Claude Code:当前模型能接收 100 万 token 量级的上下文,让它放心地把完整项目代码一次性喂进来。如果你选的 DeepSeek 模型确实支持这个长度,勾上是合理的,能解锁大项目分析能力;如果不支持,勾了反而可能让工具高估上下文容量,后续请求被模型侧直接拒绝。判断依据只有一个:去 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 的模型广场看该模型的上下文长度标注,写明了再勾,没写明就先保持默认。千万别看到教程里勾了就跟风勾,模型不支持的话,后续排障会多绕一圈。
4. claude 重新启动:ERR_BAD_REQUEST 消失,/model 里能看到 DeepSeek 模型
4.1 三步验证:启动、查看模型、跑一次真实调用
关闭旧 cmd,重新打开一个新窗口,输入claude,回车。如果之前停在Unable to connect to Anthropic services / ERR_BAD_REQUEST,这次应该直接进入交互界面。然后在输入框里敲/model,查看当前生效的模型是不是刚才在 cc-switch 里配的那一个。/model列表能显示出来,说明客户端确实通过 TaoToken 的通道拿到了模型 ID 并握手成功。
注意/model只是查看列表,为了确认整条链路真实可用,还得让 Claude Code 写一段代码作为功能验证。比如让它生成一个 Python 冒泡排序函数,或者让它解释当前项目里某一段你贴进来的代码。重点是让模型输出内容,输出正常才说明 token 真的被消费了、推理结果真的回来了。这里的验证只涉及项目内的代码生成,不会让 Claude Code 去连接你的生产机器或数据库。
4.2 回 TaoToken 控制台,确认这次调用被记账
验证完别急着关窗口。回到 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 的用量或会话页面,看刚才那次 Claude Code 交互是否生成了请求记录。如果显示有调用次数和 token 消耗,说明整条链路是闭环的:Claude Code → cc-switch → TaoToken 兼容通道 → DeepSeek 模型,全部走通。以后再遇到「装好了但没法用」的报错,优先查通道配置,不用再去翻claude.json。
4.3 命令行用户也可以直接用 TaoToken 官方 CLI 启动
如果你不想用 cc-switch 的图形界面,TaoToken 也提供官方 CLI,适合喜欢在终端里一条命令拉起会话的人。先全局安装:
npm install -g @taotoken/taotoken然后运行:
taotoken cc -k YOUR_API_KEY -u https://taotoken.net/api -m YOUR_MODEL_IDYOUR_API_KEY仍然是你在 TaoToken 官网创建的那一个,YOUR_MODEL_ID按模型广场实际列出的模型 ID 填入。CLI 和 cc-switch 两种方式不冲突,同一把 Key 可以同时被多个客户端使用,按你的操作习惯二选一即可。
5. 排障:多出来的 /v1、没复制全的 Key、旧 claude.json 残留
5.1 Base URL 末尾多了 /v1,或者把官网落地页填了进去
换完通道后如果ERR_BAD_REQUEST依然存在,第一个检查点就是 Base URL。填进 cc-switch 的必须是https://taotoken.net/api,末尾不要带/v1。很多兼容接口的文档会让你填/v1结尾,但 TaoToken 的接入方式就是到/api为止,多一个路径段,请求就会路由到不存在的端点。另一个常见错误是把 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 整个填进去,这是网页落地页,不是 API 地址。官网页面给浏览器打开,接口地址给工具填写,二者分开记,排障时间能省一半。
5.2 Key 没复制完整,或模型 ID 跟模型广场对不上
第二个检查点是 API Key。先确认你在 cc-switch 里填写的是不是从 TaoToken 控制台复制的完整串,占位符YOUR_API_KEY有没有被替换掉。复制时最容易漏掉末尾的字符,或者多复制一个换行,粘贴后看起来一样,实际多了一个看不见的\n。模型 ID 同理,以模型广场当前列出的为准,别拿网上教程里那个旧 ID 直接填。cc-switch 如果提供「测试连接」按钮,先点一下测试,通了再回 Claude Code 验证,能快速定位问题出在客户端还是通道。
5.3 以前手动改过 claude.json,先备份再重建
如果你之前按旧教程在claude.json里加过hasCompletedOnboarding,或者手工改过其他字段,现在接入 TaoToken 之后出现怪异状态,比如 Claude Code 总认为是首次启动、/model列表读不到、启动时提示配置损坏,那说明旧改动在产生干扰。处理方式很直接:完全退出 Claude Code,打开用户目录,在资源管理器里把「隐藏的项目」显示打开,找到claude.json,重命名成claude.json.bak备份,然后重新启动claude。客户端会按默认模板重新生成这个文件,你在 cc-switch 里的 TaoToken 配置不受影响。这一步只是清理旧教程留下的残留,不是让你去改配置文件绕过什么校验,改过的同学做完清理后,以后也不用再碰它。
下次再遇到「Claude Code 装好了却 ERR_BAD_REQUEST」这类问题,先别急着搜教程改claude.json,打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 注册账号、创建 API Key,再在 cc-switch 里把 Base URL 配成https://taotoken.net/api,启动claude敲一遍/model,最后回控制台看一眼这次调用的 token 消耗。链路通没通,会话记录会告诉你答案,而不是靠手动改配置文件去撞运气。