Claude Code Router工具使用指南

Claude Code Router工具使用指南

技术背景

Claude Code Router 是一个将 Claude Code 请求路由到不同模型的工具,用户可以自定义任何请求,并且能享受 Anthropic 的更新。

实现步骤

安装依赖

  1. 安装 Claude Code:
1
npm install -g @anthropic-ai/claude-code
  1. 安装 Claude Code Router:
1
npm install -g @musistudio/claude-code-router

启动 Claude Code

使用以下命令启动:

1
claude-code-router ccr code

配置路由(可选)

设置 ~/.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
{
"OPENAI_API_KEY": "sk-xxx",
"OPENAI_BASE_URL": "https://api.deepseek.com",
"OPENAI_MODEL": "deepseek-chat",
"Providers": [
{
"name": "openrouter",
"api_base_url": "https://openrouter.ai/api/v1",
"api_key": "sk-xxx",
"models": [
"google/gemini-2.5-pro-preview",
"anthropic/claude-sonnet-4",
"anthropic/claude-3.5-sonnet",
"anthropic/claude-3.7-sonnet:thinking"
]
},
{
"name": "deepseek",
"api_base_url": "https://api.deepseek.com",
"api_key": "sk-xxx",
"models": ["deepseek-reasoner"]
},
{
"name": "ollama",
"api_base_url": "http://localhost:11434/v1",
"api_key": "ollama",
"models": ["qwen2.5-coder:latest"]
}
],
"Router": {
"background": "ollama,qwen2.5-coder:latest",
"think": "deepseek,deepseek-reasoner",
"longContext": "openrouter,google/gemini-2.5-pro-preview"
}
}

使用 /model 命令切换模型

在 Claude Code 中使用 /model 命令切换模型,格式为 provider,model,例如:

1
/model openrouter,anthropic/claude-3.5-sonnet

安装插件

将插件放置在 ~/.claude-code-router/plugins/ 目录,并在 config.js 中使用 usePlugins 选项指定插件名称,示例如下:

1
2
3
4
{
...,
"usePlugins": ["notebook-tools-filter", "toolcall-improvement"]
}

配置 GitHub Actions

  1. 根据官方文档在仓库中安装 Claude Code Actions,ANTHROPIC_API_KEY 可以使用任意字符串。
  2. 修改 .github/workflows/claude.yaml 文件,示例如下:
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
name: Claude Code

on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
pull_request_review:
types: [submitted]

jobs:
claude:
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Prepare Environment
run: |
curl -fsSL https://bun.sh/install | bash
mkdir -p $HOME/.claude-code-router
cat << 'EOF' > $HOME/.claude-code-router/config.json
{
"log": true,
"OPENAI_API_KEY": "${{ secrets.OPENAI_API_KEY }}",
"OPENAI_BASE_URL": "https://api.deepseek.com",
"OPENAI_MODEL": "deepseek-chat"
}
EOF
shell: bash

- name: Start Claude Code Router
run: |
nohup ~/.bun/bin/bunx @musistudio/[email protected] start &
shell: bash

- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@beta
env:
ANTHROPIC_BASE_URL: http://localhost:3456
with:
anthropic_api_key: "test"

最佳实践

  • 利用 GitHub Actions 在特定时间段触发 Claude Code,例如在 DeepSeek API 费用折扣时段运行任务以降低成本。
  • 包含大量上下文信息可以缩小不同大语言模型之间的性能差距。

常见问题

  • 使用官方网站提供的 DeepSeek API 进行多轮对话后可能会遇到 “exceeding context” 错误,此时需要丢弃之前的上下文重新开始,或者使用字节跳动的 DeepSeek API,其提供 128K 上下文窗口并支持 KV 缓存。
  • Claude code 消耗大量令牌,但由于 DeepSeek 成本较低,使用 claude code 的成本远低于 Claude,且无需订阅 Claude Max 计划。