Claude Code 是目前最强的 AI 编程助手之一,但"只能跑在 Anthropic 官方模型上"这件事正在成为越来越多开发者的痛点:官方 API 价格不低、国内直连不稳、封号风险让人焦虑、而且当你的工作流里 80% 的 token 都花在"读文件、格式化、写注释"这类低价值任务上时,用 $15/M token 的 Opus 来处理这些显然是在烧钱。
claude-code-router(CCR) 是 GitHub 上开源的代理中间件,它的核心思想极其简单:在 Claude Code 和上游模型之间插一层智能路由,让不同类型的请求自动流向最合适(也最便宜)的模型。复杂的架构决策给 Opus,日常的代码补全给 DeepSeek,超长上下文给 Gemini 2.5 Pro——全部自动,Claude Code 这边的体验不变。
本文是目前中文社区最完整的 CCR 教程,涵盖:为什么要用、它怎么工作、如何安装、如何配置、国内中转站接入、路由策略设计、常见问题与避坑指南。全文约 5000 字,建议收藏后分段阅读。
目录
一、为什么需要 Claude Code Router
1.1 Claude Code 的费用问题有多严重
Claude Code 默认运行在 claude-opus-4-6 上。对于重度用户,每个月的 API 账单很容易达到 $100–$300。问题在于,这些 token 的"价值密度"极度不均匀:
- 约 40% 花在文件读取、目录遍历、代码格式化等机械操作上
- 约 25% 是模板代码生成、测试用例填写等低复杂度任务
- 约 20% 是简单的单文件编辑和注释
- 只有约 15% 是真正需要 Opus 级别推理能力的复杂任务——多文件架构设计、Debug 复杂 Bug、生成技术方案
也就是说,你花在 Opus 上的账单里,大约 85% 其实用不着 Opus。DeepSeek V3(约 $0.27/M input)来处理这些,效果几乎无差别,成本节省 50 倍以上。
1.2 国内开发者的额外痛点
在中国大陆直接访问 Anthropic API 通常需要代理,延迟高、稳定性差,遇到网络抖动时任务直接中断。而大量国内中转站(硅基流动、PoloAPI、诗云API 等)的 API 端点在国内直连,延迟低得多。CCR 让你可以轻松把请求路由到这些中转站,彻底摆脱网络不稳的困扰。
1.3 封号风险与多账号策略
2026 年 Anthropic 加强了对违规使用的检测,部分重度用户遭遇封号。CCR 允许你将多个 Provider(不同中转站、不同 API Key)配置为轮转池,单账号被封后自动切换,不影响工作流。
1.4 模型多样化的实际价值
Gemini 2.5 Pro 提供高达 100 万 token 的上下文窗口,处理超大代码库时碾压 Opus;DeepSeek R1 在数学推理和算法题上有独到之处;本地 Ollama 模型在隐私敏感的企业场景中不可替代。CCR 让这些模型可以无缝融入一个工作流,而不需要你手动切换环境变量、重启进程。
二、CCR 是如何工作的
CCR 的架构可以用一句话概括:它在 localhost 上启动一个兼容 Anthropic API 的本地代理,Claude Code 把所有请求发给这个代理,代理根据路由规则决定把请求转给哪个上游模型,再把响应原路返回给 Claude Code。
请求流转示意
Claude Code → http://localhost:3456 (CCR 代理)
↓ 路由判断
┌──────────────────┼──────────────────┐
↓ ↓ ↓
背景任务 复杂推理 超长上下文
DeepSeek Chat DeepSeek R1 Gemini 2.5 Pro
($0.27/M) ($0.55/M) ($1.25/M)
└──────────────────┼──────────────────┘
↓
响应返回 Claude Code CCR 内部有几个关键组件:
- Gateway Service:监听本地端口(默认 3456),接收来自 Claude Code 的 Anthropic Messages 格式请求
- Router Engine:根据 config.json 中的路由规则,判断当前请求属于哪个"场景"(background / think / longContext / webSearch / default)
- Protocol Adapter:将 Anthropic 格式的请求转换为目标 Provider 所需的格式(OpenAI Chat Completions / Gemini Generate Content / 等),并处理响应的格式转换
- Fallback Handler:当主 Provider 失败时,按顺序尝试备用 Provider
对 Claude Code 来说,整个过程是透明的——它只看到一个"本地 Anthropic API 端点",完全不知道背后转发给了谁。你设置一个环境变量即可:
export ANTHROPIC_BASE_URL="http://localhost:3456" 三、安装 CCR
3.1 前置条件
- Node.js 18 或更高版本(
node -v确认) - 已安装 Claude Code(
npm install -g @anthropic-ai/claude-code) - 至少一个可用的 AI API Key(Anthropic、DeepSeek、SiliconFlow 等任意一家均可)
3.2 通过 npm 安装(推荐)
npm install -g @musistudio/claude-code-router
安装完成后,ccr 命令即可使用。验证安装:
ccr --version 3.3 通过 GitHub 源码安装
git clone https://github.com/musistudio/claude-code-router
cd claude-code-router
npm install
npm run build
npm link # 将 ccr 命令链接到全局 3.4 Desktop 版(图形界面)
如果你更喜欢图形界面,可以从 GitHub Releases 下载对应平台的安装包:
- macOS(Apple Silicon / Intel):.dmg 或 .zip
- Windows:.exe 安装程序
- Linux:.AppImage
Desktop 版内置了可视化的 Provider 管理、路由规则编辑器、请求日志面板和使用量统计,适合不熟悉 JSON 配置的用户。本文的配置说明以命令行版本为主,因为它更便于在服务器或 CI 环境中使用。
四、基础配置:config.json 详解
CCR 的配置文件默认位于 ~/.claude-code-router/config.json。第一次运行时会自动创建目录,你需要手动创建这个文件。
4.1 最简配置(单 Provider)
如果你只想把 Claude Code 的请求转发给一个 Provider,以下是最精简的配置:
{
"Providers": [
{
"name": "anthropic",
"api_key": "sk-ant-api03-你的Key",
"api_base_url": "https://api.anthropic.com",
"models": ["claude-opus-4-6", "claude-sonnet-4-6"]
}
],
"Router": {
"default": "anthropic,claude-sonnet-4-6"
}
} 4.2 配置结构解析
config.json 有两个顶层字段:
| 字段 | 类型 | 说明 |
|---|---|---|
Providers | Array | 可用的 API 供应商列表,每个元素定义一个 Provider |
Router | Object | 路由规则,决定哪类请求发给哪个 Provider + 模型 |
Provider 字段说明:
| 字段 | 必填 | 说明 |
|---|---|---|
name | ✓ | Provider 的唯一标识符,Router 中用 "name,model" 格式引用 |
api_key | ✓ | 该 Provider 的 API Key |
api_base_url | ✓ | API 端点基础 URL |
models | - | 该 Provider 支持的模型列表(可选,用于 UI 展示) |
protocol | - | 协议类型:openai(默认)/ anthropic / gemini |
4.3 Router 路由键说明
Router 对象支持以下路由场景键:
| 路由键 | 触发条件 | 典型用法 |
|---|---|---|
default | 不匹配其他规则时 | 日常编码任务,配置主力模型 |
background | Claude Code 标记为后台任务 | 文件扫描、格式化、总结——最适合接最便宜的模型 |
think | 需要深度推理时(thinking 模式) | 架构设计、算法题——适合 R1 类推理模型 |
longContext | 输入 token 超过阈值(默认 60k) | 超大代码库——适合 Gemini 2.5 Pro 的百万 token 窗口 |
webSearch | 需要联网搜索时 | 查文档、查 API 变更记录 |
路由值格式为 "provider_name,model_name"(逗号分隔,无空格)。
五、国内开发者:中转站接入配置
对于国内开发者,直接调用 Anthropic、OpenAI 等官方 API 存在网络不稳的问题。CCR 可以完美搭配国内 AI API 中转站使用——只需把 api_base_url 改成中转站的端点即可。
5.1 硅基流动(SiliconFlow)接入
硅基流动 是国内覆盖开源模型最广的平台之一,DeepSeek、Qwen、GLM 系列均有,国内直连,新用户有免费额度。
{
"Providers": [
{
"name": "siliconflow",
"api_key": "sk-你在硅基流动的Key",
"api_base_url": "https://api.siliconflow.cn/v1",
"protocol": "openai",
"models": [
"deepseek-ai/DeepSeek-V3",
"deepseek-ai/DeepSeek-R1",
"Qwen/Qwen2.5-Coder-32B-Instruct"
]
}
],
"Router": {
"default": "siliconflow,deepseek-ai/DeepSeek-V3",
"background": "siliconflow,Qwen/Qwen2.5-Coder-32B-Instruct",
"think": "siliconflow,deepseek-ai/DeepSeek-R1"
}
} 5.2 混合配置:中转站 + 官方(推荐方案)
最推荐的生产配置:日常任务走硅基流动(低成本、国内直连),复杂任务和超长上下文走 OpenRouter(模型覆盖最广),真正需要最顶级效果时才走官方 Anthropic。
{
"Providers": [
{
"name": "siliconflow",
"api_key": "sk-硅基流动Key",
"api_base_url": "https://api.siliconflow.cn/v1",
"protocol": "openai"
},
{
"name": "openrouter",
"api_key": "sk-or-OpenRouter的Key",
"api_base_url": "https://openrouter.ai/api/v1",
"protocol": "openai"
},
{
"name": "anthropic",
"api_key": "sk-ant-官方Key或中转Key",
"api_base_url": "https://api.anthropic.com",
"protocol": "anthropic"
}
],
"Router": {
"default": "siliconflow,deepseek-ai/DeepSeek-V3",
"background": "siliconflow,Qwen/Qwen2.5-Coder-32B-Instruct",
"think": "siliconflow,deepseek-ai/DeepSeek-R1",
"longContext": "openrouter,google/gemini-2.5-pro-preview"
}
} 5.3 其他中转站配置参考
PoloAPI
{
"name": "poloapi",
"api_key": "sk-你的PoloAPI-Key",
"api_base_url": "https://poloapi.top/v1",
"protocol": "openai"
} OpenRouter(海外节点,模型覆盖最广)
{
"name": "openrouter",
"api_key": "sk-or-你的OpenRouter-Key",
"api_base_url": "https://openrouter.ai/api/v1",
"protocol": "openai",
"models": [
"google/gemini-2.5-pro-preview",
"anthropic/claude-opus-4-6",
"deepseek/deepseek-chat"
]
} 本地 Ollama(完全免费,隐私敏感场景)
{
"name": "ollama",
"api_key": "ollama",
"api_base_url": "http://localhost:11434/v1",
"protocol": "openai",
"models": ["qwen2.5-coder:32b", "deepseek-coder-v2:16b"]
} 注:需要提前安装并运行 Ollama,并拉取对应模型(ollama pull qwen2.5-coder:32b)。
六、路由策略精讲
6.1 启动 CCR
配置完 config.json 后,运行:
# 启动 CCR 代理服务(默认监听 localhost:3456)
ccr start
# 另开一个终端窗口,启动 Claude Code 并指向 CCR
export ANTHROPIC_BASE_URL="http://localhost:3456"
claude 或者使用 CCR 的快捷命令,它会自动设置环境变量并启动 Claude Code:
ccr code 6.2 background 路由:最大化成本节省的关键
background 是 CCR 中对成本影响最大的路由键。Claude Code 在执行以下操作时会自动标记为 background 模式:
- 读取大量文件内容(
Readtool) - 目录遍历和文件搜索(
Glob/Greptool) - 代码总结和格式化任务
- 自动生成测试用例
这些任务的 token 消耗量往往非常大,但对模型智能程度的要求极低。把 background 路由到 Qwen/Qwen2.5-Coder-32B-Instruct(硅基流动免费)或者本地 Ollama,直接把这部分成本降为零或接近零。
6.3 think 路由:为推理密集型任务提速
当 Claude Code 进入 extended thinking 模式(通常是你提出了复杂的架构问题或算法题时),CCR 可以把这些请求路由到 DeepSeek R1 这类专门为推理优化的模型。DeepSeek R1 在数学、代码推理任务上和 Opus 4.6 在同一级别,但价格低得多。
"Router": {
"think": "siliconflow,deepseek-ai/DeepSeek-R1"
} 6.4 longContext 路由:处理超大代码库
当单次请求的输入 token 超过 60,000(默认阈值)时,CCR 自动切换到 longContext 路由。Claude Opus 4.6 只有 200k 的上下文窗口,而 Gemini 2.5 Pro 提供高达 100 万 token 的上下文,对于分析大型项目非常有价值。
"Router": {
"longContext": "openrouter,google/gemini-2.5-pro-preview"
} 可以自定义阈值(单位:token):
"Router": {
"longContextThreshold": 80000,
"longContext": "openrouter,google/gemini-2.5-pro-preview"
} 6.5 完整四层路由策略
以下是一个经过实践验证的"四层路由"配置,适合大多数独立开发者场景:
{
"Providers": [
{
"name": "siliconflow",
"api_key": "sk-你的硅基Key",
"api_base_url": "https://api.siliconflow.cn/v1",
"protocol": "openai"
},
{
"name": "openrouter",
"api_key": "sk-or-你的OpenRouterKey",
"api_base_url": "https://openrouter.ai/api/v1",
"protocol": "openai"
}
],
"Router": {
"default": "siliconflow,deepseek-ai/DeepSeek-V3",
"background": "siliconflow,Qwen/Qwen2.5-Coder-32B-Instruct",
"think": "siliconflow,deepseek-ai/DeepSeek-R1",
"longContext": "openrouter,google/gemini-2.5-pro-preview",
"longContextThreshold": 60000
}
} 这个配置的逻辑:
- 默认 → DeepSeek V3(国内直连,性价比最高的代码生成模型)
- 后台任务 → Qwen2.5-Coder-32B(在硅基流动上部分免费,速度快)
- 深度推理 → DeepSeek R1(推理能力接近 Opus,成本低 10 倍)
- 超长上下文 → Gemini 2.5 Pro(百万 token 窗口,处理超大项目)
七、进阶配置:Fallback 与 Fusion 模型
7.1 Fallback 自动切换
当主 Provider 报错或超时时,Fallback 机制会自动尝试备用 Provider,确保工作流不中断。格式为数组:
{
"Router": {
"default": ["siliconflow,deepseek-ai/DeepSeek-V3", "openrouter,deepseek/deepseek-chat"],
"background": ["siliconflow,Qwen/Qwen2.5-Coder-32B-Instruct", "ollama,qwen2.5-coder:32b"]
}
} CCR 按数组顺序尝试,第一个失败就切第二个,以此类推。这对于中转站可用性不稳定的场景非常实用。
7.2 API Key 轮转(防单账号封禁)
同一 Provider 的多个 API Key 可以配置为轮转池,CCR 会自动在它们之间负载均衡:
{
"Providers": [
{
"name": "siliconflow",
"api_key": ["sk-key1", "sk-key2", "sk-key3"],
"api_base_url": "https://api.siliconflow.cn/v1",
"protocol": "openai"
}
]
} 7.3 Fusion 组合模型
Fusion 模型是 CCR Desktop 版的特有功能:将一个基础模型与特定能力(视觉、联网搜索、MCP 工具)组合成一个"虚拟模型",在路由规则中当作单一模型使用。
例如,配置一个"支持视觉能力的 DeepSeek":当你给 Claude Code 发送截图时,视觉处理部分走 Gemini Flash(便宜快速),文本生成部分仍然走 DeepSeek V3。
7.4 自定义路由函数(高级)
CCR 支持用 JavaScript 函数定义自定义路由逻辑,适合需要精细控制的场景:
{
"Router": {
"customRouter": "function route(ctx) { if (ctx.tokenCount > 100000) return 'openrouter,google/gemini-2.5-pro-preview'; if (ctx.scenario === 'background') return 'ollama,qwen2.5-coder:32b'; return 'siliconflow,deepseek-ai/DeepSeek-V3'; }"
}
} ctx 对象包含 scenario(路由场景)、tokenCount(输入 token 数)、model(请求中的模型名)等字段,可以基于这些信息实现任意路由逻辑。
八、实际成本对比
8.1 按月账单对比
假设你是重度 Claude Code 用户,每月 API 用量约 100M tokens(输入+输出):
| 方案 | 月均费用 | 说明 |
|---|---|---|
| Claude Pro 订阅 | $20/月 | 有速率限制,重度用户会被节流 |
| Claude Max 订阅 | $100–200/月 | 无节流,但仍限于 Anthropic 模型 |
| 纯官方 API(Opus 4.6) | $1,500–1,800/月 | $15/M input + $75/M output,不封顶 |
| CCR + DeepSeek Only | $5–15/月 | 全量路由至 DeepSeek V3,成本极低 |
| CCR + 四层混合路由 | $20–60/月 | 日常用 DeepSeek,复杂用 Gemini,按需 Opus |
| CCR + 本地 Ollama | $0/月 | 仅 GPU 电费,适合本地算力充足的开发者 |
8.2 现实期望值
社区真实用户反馈的成本降幅:
- 所有任务全路由到 DeepSeek:成本降至原来的 5–10%,但复杂架构任务质量有明显下降
- 四层混合路由(推荐):成本降至原来的 20–40%,质量几乎无感知差异
- 仅 background 路由到廉价模型:成本降至原来的 50–60%,最安全的入门策略
网上流传的"降低 80–99%"的数字,通常建立在"将大量任务路由到本地 Ollama 或免费模型"的基础上,实际效果高度依赖你的工作负载类型。建议先跑一周的请求日志,再根据实际的 token 分布来调整路由策略。
九、常见问题与避坑指南
❌ 问题1:CCR 启动后 Claude Code 报 Connection Refused
原因:ANTHROPIC_BASE_URL 端口设置错误,或 CCR 未正常启动。
解决:运行 ccr start 后确认输出中显示监听端口,然后对应设置环境变量。命令行版默认是 3456,Desktop 版默认是 8080。
# 命令行版
export ANTHROPIC_BASE_URL="http://localhost:3456"
# Desktop 版
export ANTHROPIC_BASE_URL="http://localhost:8080" ❌ 问题2:路由到便宜模型后,Claude Code 的文件编辑功能失效
原因:部分模型不支持 tool calling(工具调用),而 Claude Code 的 Write/Edit/Bash 等工具依赖这一能力。
解决:确认所选模型支持 function calling / tool use。以下模型经过社区验证可用:
- DeepSeek V3 ✓
- DeepSeek R1 ✓(部分版本需要通过 OpenRouter 调用)
- Qwen2.5-Coder-32B-Instruct ✓
- Gemini 2.5 Pro / Flash ✓
- Ollama 本地模型:需要确认具体版本是否支持
❌ 问题3:中文输出乱码或响应中断
原因:部分中转站对 streaming 响应的处理存在 BUG,或者模型本身的中文编码支持有问题。
解决:尝试在 config 中为该 Provider 添加 "stream": false,改为非流式响应;或换用其他中转站/模型。
❌ 问题4:background 任务没有被路由到设置的便宜模型
原因:background 路由依赖 Claude Code 在请求中附带 scenario 标记,不同版本的 Claude Code 行为可能有差异。
解决:升级到最新版 Claude Code(npm update -g @anthropic-ai/claude-code),并在 CCR 日志中确认路由判断是否正确执行。
❌ 问题5:config.json 改动后不生效
原因:CCR 服务在运行期间会缓存配置,修改文件后不会自动重载。
解决:ccr stop 停止服务,再 ccr start 重启。
安全与隐私注意事项
- API Key 安全:config.json 存储在本地,注意文件权限。不要把包含真实 Key 的 config.json 提交到 Git 仓库。
- 中转站可信度:你发送给中转站的所有代码内容,都会经过中转站服务器。对于涉密或商业代码,建议只使用官方 API 或本地 Ollama。
- 失去 Anthropic 的安全护栏:路由到第三方模型后,Anthropic 的 Constitutional AI 安全机制不再生效。对于企业用户,请评估合规风险。
十、结语
claude-code-router 本质上是一个"让你重新掌控 Claude Code 底层模型选择权"的工具。它的技术门槛不高——核心就是一个 JSON 配置文件和两个环境变量——但它能带来的成本节省和灵活性是显著的。
对于国内开发者,CCR + 国内中转站的组合解决了两个最核心的问题:网络稳定性(国内直连)和成本控制(按任务类型路由到最性价比的模型)。从长远来看,随着 AI 编程工具竞争加剧,这种"与特定厂商解耦"的架构会越来越有价值。
快速上手检查清单
- 安装:
npm install -g @musistudio/claude-code-router - 创建
~/.claude-code-router/config.json,至少配置一个 Provider - 启动:
ccr code(自动设置环境变量并启动 Claude Code) - 验证:在 Claude Code 中执行一个任务,在 CCR 日志中确认请求被正确路由
- 优化:根据请求日志的 token 分布,调整各路由场景的模型选择
如果你在配置过程中遇到问题,欢迎在 GitHub Issues 中查找或提交。社区很活跃,大多数常见问题都有解决方案。