1. 从 npm 到 config.jsonClaude Code 与 ccr code 本地安装全流程Claude Code 是 Anthropic 推出的终端 AI 编程助手能直接在命令行里读写项目文件、执行命令、跑测试ccr codeClaude Code Router则是一个路由层把 Claude Code 的请求转发到不同模型供应商让你用统一入口调用多家模型。这套组合适合谁适合想在本地终端里做代码补全、重构、排障又希望灵活切换模型通道的开发者。我第一次装的时候卡在 Node 版本和 config.json 的字段上折腾了大半天所以这篇把从环境准备到 API 连通验证的每一步都写清楚你照着敲就能跑通。整个流程分六步装 Node/npm、全局装 Claude Code、全局装 ccr code、准备 API Key、写 config.json、启动并验证。核心检索词就是 claude code 安装、ccr code 配置、npm 全局安装、config.json 骨架。下面按顺序来每一步都给可复制的命令和配置。2. Node 与 npm 环境准备版本选择与镜像加速Claude Code 和 ccr code 都依赖 Node 运行时Node 版本太低会直接报错。官方建议 Node 18 以上实测 Node 20 和 22 都稳。先确认你机器上有没有node -v npm -v如果输出v18.x以下或者命令找不到就得装。Linux 新版本Ubuntu 20.04/22.04 等直接走官方源最省事curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt-get install -y nodejs装完再node -v确认。如果是 Ubuntu 16.04 这类老系统官方源可能因为 glibc 版本不够装不上这时候用全依赖版本。下载对应 glibc 的包解压重命名再把路径写进.bashrcmkdir -p ~/node tar -xzvf node-v22.9.0-linux-x64-glibc-217.tar.gz -C ~/node/ mv ~/node/node-v22.9.0-linux-x64-glibc-217/ ~/node/node-v22/ echo export PATH$HOME/node/node-v22/bin:$PATH ~/.bashrc source ~/.bashrc这里有个坑路径里的$HOME别写成固定的/home/xxx换机器就失效。装好后把 npm 源换成国内镜像下载包快很多npm config set registryhttps://registry.npmmirror.com npm config get registry最后一条命令应该回显https://registry.npmmirror.com/。到这一步 Node 和 npm 就绪可以进下一步。如果你用的是 macOS直接brew install node或者官网 pkg 安装包都行逻辑一样。3. 安装 Claude Code 与 ccr code全局命令与 config.json 骨架环境好了两条全局安装命令搞定主体工具。先装 Claude Codenpm install -g anthropic-ai/claude-code再装 ccr code它的包名是musistudio/claude-code-routernpm install -g musistudio/claude-code-router装完验证一下claude --version ccr --version两个都能输出版本号就说明装上了。接下来是重点——config.json。ccr code 的配置文件默认在~/.claude-code-router/config.json没有就手动建mkdir -p ~/.claude-code-router cd ~/.claude-code-router touch config.json然后写入配置骨架。下面这份是可复制的 JSON把api_key换成你自己的{ LOG: false, Providers: [ { name: taotoken, api_base_url: https://taotoken.net/api/v1/chat/completions, api_key: sk-你的TaoToken密钥, models: [ claude-sonnet-4-5, claude-opus-4-1, gpt-5 ], transformer: { use: [ [maxtoken, { max_tokens: 65536 }], enhancetool ] } } ], Router: { default: taotoken,claude-sonnet-4-5, background: taotoken,gpt-5, think: taotoken,claude-opus-4-1, longContext: taotoken,claude-sonnet-4-5, longContextThreshold: 60000 } }三个关键字段必须对齐api_base_url指向 TaoToken 的 API 通道https://taotoken.net/apiapi_key填你在控制台生成的 Keymodels里写你要用的 Model ID。这三件套Base URL Key Model ID缺一不可写错任何一个都会在请求时报错。TaoToken 的 Key 在控制台的 API Keys 页面生成地址是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentconfig_jsonutm_campaignrewrite 生成后复制粘贴到api_key字段。Router段决定不同场景走哪个模型default是默认对话background是后台任务think是推理任务longContext是超长上下文。longContextThreshold设 60000 表示超过 6 万 token 自动切到长上下文模型。这套配置的好处是统一走 TaoToken 通道不用为每个供应商单独维护 Key。4. 验证请求启动 ccr code 并确认 API 连通配置写完进你的项目目录启动cd ~/your-project ccr code第一次启动 ccr 会读取 config.json如果 JSON 格式有误会直接报解析错误。启动成功后你会看到 Claude Code 的交互界面。这时候发一条测试请求比如帮我看看当前目录下有哪些文件并解释 package.json 的作用如果模型正常返回说明 API 通道打通了。想更直接地验证连通性可以用 curl 单独测一次 TaoToken 的接口curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-你的TaoToken密钥 \ -d { model: claude-sonnet-4-5, messages: [{role: user, content: ping}], max_tokens: 50 }返回里带choices数组和内容就说明 Key 和 Base URL 都对。如果返回 401是 Key 问题返回 404多半是api_base_url路径写错注意结尾要带/v1/chat/completions。实测下来ccr code 启动后如果一直转圈不出结果九成是 config.json 里Router引用的模型名和Providers里的models对不上检查一下逗号前后的名称是否完全一致。验证通过后你就可以在终端里正常用 Claude Code 做代码补全、重构、写测试了。想切换模型改Router里的字段重启 ccr 即可。5. 常见报错排查401、local proxy failed 与 reading choices装这套东西最容易踩的坑集中在几个报错上我按真实遇到的顺序列一下。401 UnauthorizedKey 无效或没带Bearer前缀。检查 config.json 里api_key是否完整有没有多余空格。TaoToken 的 Key 以sk-开头复制时别漏字符。如果 Key 是对的还报 401去控制台确认这个 Key 有没有被禁用或额度耗尽。local proxy failed / connection refusedccr code 本地代理没起来。先确认ccr --version能正常输出再检查有没有其他进程占用端口。重启终端或者ccr restart一般能解决。如果是在容器里跑确认容器网络能访问外网。reading choices 报错Cannot read properties of undefined (reading choices)这是响应结构不对通常是api_base_url写成了https://taotoken.net/api而漏了/v1/chat/completions。补全路径即可。另一种情况是模型名写错供应商返回了错误对象而不是标准响应ccr 解析choices时就崩了。对照models数组里的名称逐个核对。OAuth / 登录相关报错Claude Code 原生会引导你登录 Anthropic 账号但走 ccr 路由时不需要 OAuth所有请求都通过 config.json 里的 Key 走。如果启动时被要求登录说明 ccr 没接管成功检查ccr code命令是不是在项目目录下执行的以及 config.json 是否在~/.claude-code-router/下。JSON 解析错误config.json 里多一个逗号、少一个引号都会导致启动失败。用python -m json.tool config.json验证格式能正常输出就说明 JSON 合法。排查顺序建议先 curl 测 Key 和 Base URL再验证 config.json 格式最后看 ccr 启动日志。这样能快速定位是通道问题还是配置问题。6. 统一通道接入与后续使用建议把 Claude Code 和 ccr code 装好、config.json 配好之后你就有了一套本地终端 AI 编程环境。所有模型请求统一走 TaoToken 的 API 通道Base URL 是https://taotoken.net/apiKey 在控制台管理模型 ID 在 config.json 的models里声明。这套结构的好处是换模型只改一个字段不用动 Claude Code 本身。如果你打算长期在终端里做编码和 Agent 任务可以了解下 Coding Plan地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 适合高频调用场景。想先试试模型对话效果可以去 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有各语言的调用示例。最后给个实用技巧config.json 改完不用重装直接重启 ccr 就生效。建议把这份配置备份一份换机器时复制过去改个 Key 就能用。装的过程中如果卡在某个报错优先用 curl 单独测通道能省很多排查时间。