
Claude Code 是 Anthropic 推出的强大 AI 编程助手,但每月的订阅费用让很多开发者望而却步。
通过 Claude Code Router (CCR),我们可以:
- 对接本地模型:部署 GLM5 等开源模型,实现零成本使用
- 多模型智能路由:根据任务类型自动选择最合适的模型
- 灵活组合:本地 + 云端混合部署,兼顾隐私、成本和质量
本文将手把手教你搭建这套方案,让你的 AI 编程助手成本降低 90% 以上。
1. 环境准备和工具安装
1.1 安装 Claude Code
首先需要在你的开发机器上安装 Claude Code:
1
2
| # 官方安装脚本(需要科学上网)
curl -fsSL https://claude.ai/install.sh | bash
|
1.2 安装 Claude Code Router
Claude Code Router 是一个 Node.js 包,用于桥接 Claude Code 和本地模型:
1
2
| # 需要 Node.js 20+ 版本
npm install -g @musistudio/claude-code-router
|
1.3 验证安装
安装完成后,验证两个工具是否正常工作:
1
2
3
4
5
6
7
| # 检查 Claude Code 版本
❯ claude --version
2.1.51 (Claude Code)
# 检查 CCR 版本
❯ ccr version
claude-code-router version: 2.0.0
|
2. 模型部署
2.1 模型下载
在服务器上下载 GLM5 模型:
根据硬件配置选择合适的版本
1
2
3
4
5
| # 使用 huggingface-cli 下载模型
# FP8 版本 推荐配置:H200*8
hf download zai-org/GLM-5-FP8 --local-dir /raid/lixd/models/glm5-fp8
# INT4 版本
hf download Intel/GLM-5-int4-mixed-AutoRound --local-dir /raid/lixd/models/glm5-int4-mixed-autoround
|
2.2 vLLM 服务启动
使用 vLLM 框架部署模型服务,确保已安装 GPU 驱动和 NVIDIA Container Toolkit。
由于 GLM5 需要最新版的 transformers 支持,官方镜像暂未包含,需要先构建自定义镜像:
已经推送到 lixd96/vllm-openai:v0.17.1-cu130,直接拉取即可
docker pull lixd96/vllm-openai:v0.17.1-cu130
构建自定义镜像:
创建 Dockerfile:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| FROM vllm/vllm-openai:v0.17.1-cu130
# 安装 git 用于从源码安装 transformers
RUN apt-get update && apt-get install -y git && \
rm -rf /var/lib/apt/lists/*
# 安装最新版 transformers(GLM5 需要最新版支持)
RUN pip install --no-cache-dir git+https://github.com/huggingface/transformers.git
# 设置工作目录
WORKDIR /app
# 默认启动命令
ENTRYPOINT ["vllm"]
|
构建并推送镜像:
1
2
| # 构建镜像
docker build -t lixd96/vllm-openai:v0.17.1-cu130-ex .
|
启动服务:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| docker run -d \
--name vllm-glm5 \
--runtime nvidia \
--gpus '"device=0,1,2,3"' \
-p 8000:8000 \
-v /raid/lixd/models/glm5-int4-mixed-autoround:/glm5-int4-mixed-autoround \
--shm-size 16g \
lixd96/vllm-openai:v0.17.1-cu130 \
serve /glm5-int4-mixed-autoround \
--tensor-parallel-size 4 \
--tool-call-parser glm47 \
--reasoning-parser glm45 \
--enable-auto-tool-choice \
--served-model-name glm5 \
--trust-remote-code \
--gpu-memory-utilization 0.85 \
--api-key "your-api-key" \
--host 0.0.0.0 \
--port 8000
|
关键参数说明:
- GPU 配置:根据实际 GPU 数量调整
--gpus 和 --tensor-parallel-size 参数 - 内存共享:
--shm-size 16g 确保容器有足够共享内存 - 工具调用:
--enable-auto-tool-choice 启用工具调用功能,--tool-call-parser glm47 使用 GLM 系列的工具调用解析器 - 推理解析:
--reasoning-parser glm45 启用 GLM 的推理能力 - 信任远程代码:
--trust-remote-code 允许加载模型的自定义代码 - 张量并行:
--tensor-parallel-size 4 在多 GPU 上并行处理
2.3 服务验证
部署完成后,验证服务是否正常运行:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| # 查看可用模型列表
curl http://localhost:8000/v1/models
# 基础对话测试
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "glm5",
"messages": [
{"role": "user", "content": "你好,请介绍一下你自己"}
],
"max_tokens": 100,
"temperature": 0.7
}'
# 流式对话测试
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "glm5",
"messages": [
{"role": "user", "content": "用一句话解释什么是 Kubernetes"}
],
"max_tokens": 200,
"stream": true
}'
|
如果一切正常,你应该能看到模型的响应输出。
2.4 配置 Claude Code Router
配置说明
核心配置文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| {
// LLM 提供商
"Providers": [
{
"name": "openai",
"baseUrl": "https://api.openai.com/v1",
"apiKey": "$OPENAI_API_KEY",
"models": ["gpt-4", "gpt-3.5-turbo"]
}
],
// 路由
{
"Router": {
"default": "openai,gpt-4",
"background": "openai,gpt-3.5-turbo",
"think": "openai,gpt-4",
"longContext": "anthropic,claude-3-opus"
}
}}
|
完整配置
创建或编辑配置文件 ~/.claude-code-router/config.json:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
| {
"LOG": true,
"LOG_LEVEL": "debug",
"CLAUDE_PATH": "",
"HOST": "127.0.0.1",
"PORT": 3456,
"APIKEY": "",
"API_TIMEOUT_MS": "600000",
"PROXY_URL": "",
"transformers": [],
"Providers": [
{
"name": "vllm",
"api_base_url": "http://your-server-ip:8000/v1/chat/completions",
"api_key": "your-api-key",
"models": [
"glm5"
],
"transformer": {
"use": [
"enhancetool",
[
"sampling",
{
"temperature": "0.7",
"top_p": "0.8",
"top_k": "20",
"repetition_penalty": "1.05"
}
]
]
}
}
],
"StatusLine": {
"enabled": true,
"currentStyle": "default",
"default": {
"modules": []
},
"powerline": {
"modules": [
{
"type": "workDir",
"icon": "",
"text": "{{workDirName}}",
"color": "bright_blue"
},
{
"type": "gitBranch",
"icon": "🌿",
"text": "{{gitBranch}}",
"color": "bright_green"
},
{
"type": "model",
"icon": "🤖",
"text": "{{model}}",
"color": "bright_yellow"
},
{
"type": "usage",
"icon": "📊",
"text": "{{inputTokens}} → {{outputTokens}}",
"color": "bright_magenta"
},
{
"type": "script",
"icon": "📜",
"text": "Script Module",
"color": "bright_cyan",
"scriptPath": ""
}
]
}
},
"Router": {
"default": "vllm,glm5",
"background": "vllm,glm5",
"think": "vllm,glm5",
"longContext": "vllm,glm5",
"longContextThreshold": 102400,
"webSearch": "vllm,glm5",
"image": ""
},
"CUSTOM_ROUTER_PATH": ""
}
|
配置说明:
- API 地址:将
your-server-ip 替换为实际的服务器 IP 地址 - API 密钥:设置与 vLLM 启动时相同的 API 密钥
- 路由配置:将所有任务类型都指向本地模型
- 状态栏:启用自定义状态栏显示工作目录、Git 分支、模型信息等
- 日志级别:调试阶段可设为
debug,生产环境建议改为 info
3. 开始使用
3.1 启动 Claude Code Router
使用 ccr code 替代原来的 claude 命令:
效果如下:

启动后,在 claude 界面输入以下命令切换模型
之后就可以正常使用了。
ps: 不切换模型也可以,只是终端会一直显示用的 Claude 的模型。
4. 进阶:多模型智能路由
前面我们介绍了单一模型的配置方式,但在实际使用中,不同类型的任务对模型能力的要求各不相同。
Claude Code Router 的强大之处在于支持对接多个模型,并根据任务类型自动路由到最合适的模型。
4.1 为什么需要多模型路由?
不同任务对模型的需求差异很大:
| 任务类型 | 特点 | 推荐模型策略 |
|---|
| 日常对话 | 频率高、响应快 | 轻量级模型,节省资源 |
| 代码生成 | 需要准确性和逻辑性 | 中等能力模型 |
| 复杂推理 | 需要深度思考 | 顶级能力模型 |
| 长文本处理 | 需要大上下文窗口 | 支持长上下文的模型 |
| 图像理解 | 需要多模态能力 | 视觉语言模型 |
通过合理配置,可以实现:
- 成本优化:简单任务用便宜模型,复杂任务才用昂贵模型
- 性能平衡:快速响应与高质量输出的权衡
- 资源利用:充分利用不同模型的优势
4.2 多模型配置示例
以下是一个对接多个模型服务商的完整配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| {
"LOG": true,
"LOG_LEVEL": "info",
"HOST": "127.0.0.1",
"PORT": 3456,
"API_TIMEOUT_MS": "600000",
"Providers": [
{
"name": "local-glm5",
"api_base_url": "http://192.168.1.100:8000/v1/chat/completions",
"api_key": "your-local-key",
"models": ["glm5"],
"transformer": {
"use": ["enhancetool"]
}
},
{
"name": "deepseek",
"api_base_url": "https://api.deepseek.com/v1/chat/completions",
"api_key": "$DEEPSEEK_API_KEY",
"models": ["deepseek-chat", "deepseek-reasoner"]
},
{
"name": "openai",
"api_base_url": "https://api.openai.com/v1/chat/completions",
"api_key": "$OPENAI_API_KEY",
"models": ["gpt-4o", "gpt-4o-mini"]
},
{
"name": "zhipu",
"api_base_url": "https://open.bigmodel.cn/api/paas/v4/chat/completions",
"api_key": "$ZHIPU_API_KEY",
"models": ["glm-4-plus", "glm-4-flash"]
}
],
"Router": {
"default": "local-glm5,glm5",
"background": "zhipu,glm-4-flash",
"think": "deepseek,deepseek-reasoner",
"longContext": "local-glm5,glm5",
"longContextThreshold": 64000,
"webSearch": "openai,gpt-4o-mini",
"image": "openai,gpt-4o"
}
}
|
4.3 路由策略详解
default(默认路由)
- 用途:常规对话和代码编写
- 建议:选择性价比高的主力模型
- 示例:本地 GLM5 或 DeepSeek Chat
background(后台任务)
- 用途:自动触发的辅助任务,如代码审查、状态检查
- 特点:频率高、对质量要求相对较低
- 建议:使用轻量快速模型,如 GLM-4-Flash、GPT-4o-mini
- 成本优势:可节省 80% 以上的 API 费用
think(思考密集型)
- 用途:复杂算法设计、架构决策、疑难问题排查
- 特点:需要深度推理能力
- 建议:使用最强推理模型,如 DeepSeek Reasoner、Claude Opus
- 注意:这类模型响应较慢,但输出质量最高
longContext(长上下文)
- 用途:分析大型代码库、处理长文档
- 触发条件:当上下文超过
longContextThreshold 时自动切换 - 建议:选择支持 64K+ 上下文的模型
- 示例:GLM5(200K)、Claude(200K)
webSearch(网络搜索)
- 用途:联网查询资料
- 建议:选择支持工具调用的模型
- 示例:GPT-4o、DeepSeek Chat
image(图像任务)
- 用途:截图分析、图表解读
- 建议:使用多模态模型
- 示例:GPT-4o、Claude 3.5 Sonnet
4.4 最佳实践建议
工作原理
Claude Code Router 的核心原理是通过启动一个 HTTP 中转服务,在不修改 Claude Code 源码的情况下完成请求的转发和格式转换。
Claude Code 使用 Anthropic API 规范进行通信,而大多数模型服务商(如 OpenAI、DeepSeek 等)使用 OpenAI API 规范。CCR 的作用就是:
- 接收请求:CCR 启动一个 HTTP 服务(默认端口 3456),监听 Claude Code 的请求
- 格式转换:将 Anthropic API 格式的请求转换为 OpenAI API 格式
- 智能路由:根据任务类型将请求分发到不同的模型服务商
- 响应转换:将模型的响应转换回 Anthropic API 格式返回给 Claude Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| ┌─────────────────────────────────────────────────────────────┐
│ Claude Code │
│ (使用 Anthropic API 规范通信) │
└─────────────────────────┬───────────────────────────────────┘
│ Anthropic API 格式
▼
┌─────────────────────┐
│ CCR HTTP 服务 │
│ (Express.js) │
│ │
│ • 格式转换 │
│ • 智能路由 │
│ • 请求重写 │
└──────────┬──────────┘
│ OpenAI API 格式
┌─────────────────┼─────────────────┐
│ │ │
┌────▼────┐ ┌─────▼─────┐ ┌─────▼─────┐
│ 本地 │ │ 云端 │ │ 云端 │
│ GLM5 │ │ DeepSeek │ │ OpenAI │
│ (default)│ │ (think) │ │ (image) │
└─────────┘ └───────────┘ └───────────┘
|
按需分配,降低成本
CCR 的核心优势在于可以根据任务特点选择最合适的模型,实现成本与质量的平衡:
| 任务类型 | 特点 | 推荐策略 |
|---|
| 日常开发 | 频率高、响应要求快 | 性价比高的主力模型 |
| 复杂推理 | 需要深度思考 | 推理能力强的模型 |
| 图像理解 | 需要多模态能力 | 支持视觉的模型 |
| 后台任务 | 自动触发、频率高 | 轻量快速模型 |
| 长文本 | 需要大上下文 | 支持长上下文的模型 |
成本对比:
1
2
3
4
5
6
7
8
| ┌────────────────────────────────────────────────┐
│ Claude Max Plan │
│ $200 / 月 │
├────────────────────────────────────────────────┤
│ CCR 多模型路由 │
│ 日常任务用便宜模型 + 复杂任务用强模型 │
│ ~$20 / 月 │
└────────────────────────────────────────────────┘
|
通过合理配置路由策略,将高频低难度任务分配给低成本模型,仅在必要时调用高端模型,月成本可降低 90% 以上。
5. 常见问题与解决方案
5.1 “Unable to connect to Anthropic services” 错误
如果运行 ccr code 时报错:“Unable to connect to Anthropic services”,可以修改 ~/.claude.json 文件,在最外层添加以下配置:
1
2
3
| {
"hasCompletedOnboarding": true
}
|
保存后重新运行即可。
6. 小结
本文介绍了如何通过 Claude Code Router 打破 Claude Code 的使用限制:
- 本地部署:通过 vLLM 部署 GLM5 模型,实现零成本使用
- 多模型路由:根据任务类型智能分发,高频任务用便宜模型,复杂任务用强模型
- 成本优化:相比 Claude Max Plan,合理配置后成本可降低 90% 以上
CCR 还支持对接更多 Provider,如 DeepSeek、智谱 AI、OpenAI 等,可根据实际需求灵活组合。如果你也在寻找高性价比的 AI 编程方案,不妨试试这套配置。