ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Claude Code 使用笔记:用 claude-code-router 接入 Qwen3 Coder 与 GLM-4.5 的 config 骨架

Claude Code 使用笔记:用 claude-code-router 接入 Qwen3 Coder 与 GLM-4.5 的 config 骨架 1. 为什么要在 Claude Code 里做多模型路由Claude Code 是 Anthropic 出的命令行编程助手能读项目、改文件、跑命令交互体验接近一个坐在终端里的结对程序员。但它的默认模型通道比较单一遇到长上下文重构、批量改测试、跨文件搜索这类任务时成本和响应速度都会成为瓶颈。我自己的体感是写小函数用轻量模型就够做架构级重构才需要上更强的模型全部走同一条通道既浪费又慢。claude-code-router 解决的正是这个问题。它是一个 Node.js 写的本地路由层把 Claude Code 发出的 Anthropic 格式请求转换成 OpenAI 兼容格式再按你定义的规则分发到不同模型。你可以让默认对话走 Qwen3 Coder让长上下文任务走 GLM-4.5也可以按关键词、按 token 长度、按子代理类型分流。对国内开发者来说Qwen3 Coder 和 GLM-4.5 都是中文友好、代码能力扎实的模型配合统一 Key/API 通道 TaoToken就能在一个入口里管理多家模型不用来回改环境变量。这篇笔记面向已经装好 Node.js、想用 Claude Code 但不想被单一模型绑死的开发者。我会给出可直接复制的 config 骨架、settings.json 片段以及启动后怎么验证路由真的生效、模型切换真的成功。全程在 Node.js 18 环境下操作命令和配置都经过实测。2. 前置准备Node.js、Claude Code 与 TaoToken 通道2.1 环境与依赖版本先确认 Node.js 版本。claude-code-router 依赖较新的 ESM 和 fetch 实现Node.js 18 以下会报模块解析错误。node -v # 期望输出 v18.x 或更高推荐 v20 LTS npm -v如果版本不够用 nvm 切换nvm install 20 nvm use 20接着全局安装两个包。Claude Code 本体和 router 是分开的router 负责拦截请求本体负责交互。npm install -g anthropic-ai/claude-code npm install -g musistudio/claude-code-router安装完成后验证claude --version ccr --version两个命令都能输出版本号说明环境就绪。如果ccr找不到检查 npm 全局 bin 目录是否在 PATH 里npm config get prefix可以看到路径。2.2 在 TaoToken 获取统一 KeyTaoToken 在这里的角色是统一 Key/API 通道你只需要一个 API Key就能访问 Qwen3 Coder、GLM-4.5 等多个模型不用分别去各家平台注册、分别管理额度。对 router 配置来说这意味着 providers 里可以共用同一个api_key字段减少配置出错概率。操作路径是打开 TaoToken 官网注册登录后进入控制台在 API Keys 页面创建一个新 Key。建议给这个 Key 起个能识别的名字比如claude-code-router方便后续在用量页面区分。创建后立即复制保存页面刷新后就不再完整显示。拿到 Key 后API 基地址用https://taotoken.net/api。注意这个地址不带任何查询参数直接作为 OpenAI 兼容的 base_url 使用。模型名称方面Qwen3 Coder 对应qwen3-coderGLM-4.5 对应glm-4.5具体以控制台模型列表为准。注意API Key 属于敏感凭证不要写进会提交到 Git 的配置文件。下面配置里我会用环境变量占位实际使用时再替换。3. 可复制的 config 骨架与 settings.json 片段3.1 claude-code-router 配置文件位置claude-code-router 的配置文件默认在用户目录下的.claude-code-router/config.json。Windows 是C:\Users\你的用户名\.claude-code-router\config.jsonmacOS/Linux 是~/.claude-code-router/config.json。如果目录不存在手动创建即可。这个文件的核心结构分三块providers定义模型来源router定义分流规则APIKEY是 router 本地监听时给 Claude Code 用的占位密钥不是 TaoToken 的 Key随便设一个字符串即可。3.2 providers 与 router 骨架下面是我实测可用的骨架把 Qwen3 Coder 设为默认GLM-4.5 设为长上下文和子代理专用。你可以直接复制后替换api_key。{ APIKEY: local-router-placeholder, providers: [ { name: taotoken, api_base_url: https://taotoken.net/api/v1/chat/completions, api_key: sk-你的TaoToken密钥, models: [ qwen3-coder, glm-4.5 ] } ], router: { default: taotoken,qwen3-coder, background: taotoken,qwen3-coder, think: taotoken,glm-4.5, longContext: taotoken,glm-4.5, longContextThreshold: 60000, webSearch: taotoken,qwen3-coder } }几个字段的含义需要说清楚。default是普通对话的默认模型我选 Qwen3 Coder因为它响应快、代码补全准。background是后台任务比如生成标题、摘要用的模型同样走轻量通道。think对应需要推理链的场景交给 GLM-4.5。longContext在输入超过longContextThreshold设定的 token 数时自动切换这里设 60000超过就换 GLM-4.5 处理长文件。webSearch是联网搜索场景仍走 Qwen3 Coder。提示api_base_url要带/v1/chat/completions后缀因为 router 按 OpenAI 兼容格式发请求。只写到/api会返回 404。3.3 settings.json 片段Claude Code 本身通过环境变量或 settings.json 指定它要连的 Anthropic 端点。router 启动后会在本地监听一个端口默认 3456我们需要让 Claude Code 把请求发给这个本地端口而不是官方地址。在项目根目录或用户目录创建.claude/settings.json写入{ env: { ANTHROPIC_BASE_URL: http://127.0.0.1:3456, ANTHROPIC_API_KEY: local-router-placeholder } }这里的ANTHROPIC_API_KEY必须和 config.json 里的APIKEY一致router 用它做本地校验。ANTHROPIC_BASE_URL指向 router 的本地监听地址这样 Claude Code 的所有请求都会先经过 router再由 router 按规则转发到 TaoToken 通道。如果你不想改项目文件也可以在启动前用环境变量覆盖export ANTHROPIC_BASE_URLhttp://127.0.0.1:3456 export ANTHROPIC_API_KEYlocal-router-placeholder两种方式效果一样settings.json 更适合团队协作时固化配置。4. 启动与验证确认路由生效、模型切换成功4.1 启动 router 与 Claude Code配置写好后先单独启动 router观察它的日志输出。新开一个终端窗口ccr start正常会看到类似Router listening on http://127.0.0.1:3456的提示。这个窗口保持开着日志会实时打印每次请求命中的 provider 和 model是验证路由的关键依据。然后在另一个终端进入你的项目目录启动 Claude Codecd ~/your-project ccr codeccr code是 router 提供的包装命令它会自动带上正确的环境变量再调起 Claude Code比手动 export 更省事。启动后你会看到 Claude Code 的交互界面。4.2 验证默认路由命中 Qwen3 Coder在 Claude Code 里输入一个简单请求比如帮我写一个 Python 函数读取 CSV 并返回按某列排序后的前 10 行发送后切回 router 的终端窗口日志里应该出现类似[router] request - providertaotoken modelqwen3-coder看到modelqwen3-coder说明默认路由生效。如果显示的是其他模型名检查 config.json 里default字段的拼写格式必须是provider名,模型名中间是英文逗号不能有空格。4.3 验证长上下文切换到 GLM-4.5要触发longContext分支需要构造一个超过 60000 token 的输入。最直接的办法是让 Claude Code 读取一个大文件。在项目里找一个较大的源码文件然后输入读取 src/large-file.js 并总结它的主要模块结构Claude Code 会把文件内容塞进上下文当 token 数超过阈值router 日志会变成[router] request - providertaotoken modelglm-4.5 reasonlongContextreasonlongContext明确告诉你切换发生了。如果没触发可能是文件不够大换一个更大的文件或者临时把longContextThreshold调低到 10000 做测试验证完再改回去。4.4 用 /model 命令手动切换除了自动路由Claude Code 支持在会话里手动指定模型。输入斜杠命令/model taotoken,glm-4.5再发一条消息router 日志会显示modelglm-4.5且不带reason字段说明是手动指定生效。想切回默认输入/model taotoken,qwen3-coder这个手动切换在调试时很有用你可以快速对比两个模型对同一段代码的回答质量再决定把哪个设为默认。5. 本篇常见报错排查5.1 401 Unauthorized最常见的原因是api_key写错或过期。检查 config.json 里的api_key是否和 TaoToken 控制台创建的一致注意不要有多余空格。另外确认ANTHROPIC_API_KEY和APIKEY两个占位值一致不一致会导致 router 本地校验失败报错信息可能伪装成 401。5.2 404 Not Found九成是api_base_url路径不对。正确写法是https://taotoken.net/api/v1/chat/completions少写/v1或/chat/completions都会 404。如果你用的是其他兼容端点也要确认它是否要求/v1前缀。5.3 模型名不识别报错类似model not found。TaoToken 控制台的模型列表里模型 ID 是精确匹配的qwen3-coder不能写成Qwen3-Coder或qwen3_coder。复制时留意大小写和连字符。GLM-4.5 同理确认是glm-4.5而不是glm4.5。5.4 端口被占用ccr start报EADDRINUSE说明 3456 端口已被其他进程占用。可以改 config.json 里的端口配置或者在启动前释放端口lsof -i :3456 kill -9 PID改端口的话记得同步更新 settings.json 里的ANTHROPIC_BASE_URL。5.5 请求超时如果日志显示请求发出但长时间无响应先确认网络能正常访问 TaoToken 的 API 地址。可以在终端直接 curl 测试curl -X POST https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的密钥 \ -H Content-Type: application/json \ -d {model:qwen3-coder,messages:[{role:user,content:hi}]}能返回正常 JSON 说明通道没问题问题在 router 配置如果 curl 也超时检查本地网络或 Key 的额度状态。6. 把路由用顺手的几个建议配置跑通只是第一步真正提升效率的是把路由规则和你的工作流对齐。我自己的做法是把default留给 Qwen3 Coder 处理日常补全和小重构把think和longContext都指向 GLM-4.5专门对付需要通盘理解的大任务。这样既控制了响应速度又保证了复杂场景的质量。另外建议定期去 TaoToken 控制台看用量分布。如果发现某个模型调用量异常高可能是路由规则写得太宽把本该走轻量通道的请求也导到了重模型上。根据用量反推调整longContextThreshold和think的触发条件比拍脑袋设参数更靠谱。最后config.json 建议纳入版本管理但用环境变量替换密钥团队里每个人用自己的 Key规则共享。这样新人入职时复制一份配置、填上自己的 Key 就能跑不用重新踩一遍路由的坑。
返回列表