1. 从 npm 到 config.json:Claude Code 与 ccr code 本地安装全流程
Claude Code 是 Anthropic 推出的终端 AI 编程助手,能直接在命令行里读写项目文件、执行命令、跑测试;ccr code(Claude 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 的包,解压重命名,再把路径写进.bashrc:
mkdir -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 registry=https://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 Code:
npm install -g @anthropic-ai/claude-code再装 ccr code,它的包名是@musistudio/claude-code-router:
npm 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/api,api_key填你在控制台生成的 Key,models里写你要用的 Model ID。这三件套(Base URL + Key + Model ID)缺一不可,写错任何一个都会在请求时报错。TaoToken 的 Key 在控制台的 API Keys 页面生成,地址是 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=config_json&utm_campaign=rewrite ,生成后复制粘贴到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 Unauthorized:Key 无效或没带Bearer前缀。检查 config.json 里api_key是否完整,有没有多余空格。TaoToken 的 Key 以sk-开头,复制时别漏字符。如果 Key 是对的还报 401,去控制台确认这个 Key 有没有被禁用或额度耗尽。
local proxy failed / connection refused:ccr 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/api,Key 在控制台管理,模型 ID 在 config.json 的models里声明。这套结构的好处是换模型只改一个字段,不用动 Claude Code 本身。
如果你打算长期在终端里做编码和 Agent 任务,可以了解下 Coding Plan,地址是 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite ,适合高频调用场景。想先试试模型对话效果,可以去 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite 。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,里面有各语言的调用示例。
最后给个实用技巧:config.json 改完不用重装,直接重启 ccr 就生效。建议把这份配置备份一份,换机器时复制过去改个 Key 就能用。装的过程中如果卡在某个报错,优先用 curl 单独测通道,能省很多排查时间。