个人使用场景
claude模型实在是太贵了,想使用Claude Code默认只支持Anthropic的接口格式,所以本文记录了如何把本地模型或者其他模型(Deepseek等)接入Claude Code使用的方法。
通过 Claude Code Router (CCR) 将 Claude Code CLI 连接到 Ollama(本地模型)或 DeepSeek(云端模型),从而使用非 Anthropic 模型运行 Claude Code。
目录
- 原理概述
- [安装 Claude Code Router](#安装 Claude Code Router "#2-%E5%AE%89%E8%A3%85-claude-code-router")
- [配置 Ollama 提供商](#配置 Ollama 提供商 "#3-%E9%85%8D%E7%BD%AE-ollama-%E6%8F%90%E4%BE%9B%E5%95%86")
- [配置 DeepSeek 提供商](#配置 DeepSeek 提供商 "#4-%E9%85%8D%E7%BD%AE-deepseek-%E6%8F%90%E4%BE%9B%E5%95%86")
- [配置 Claude Code 连接到 CCR](#配置 Claude Code 连接到 CCR "#5-%E9%85%8D%E7%BD%AE-claude-code-%E8%BF%9E%E6%8E%A5%E5%88%B0-ccr")
- 验证连接
- 进阶:路由规则与虚拟模型
- 常见问题排查
- 参考链接
1. 原理概述
架构图
scss
┌─────────────────┐ Anthropic Messages API ┌──────────────────────────┐
│ │ ──────────────────────────────▶ │ │
│ Claude Code │ /v1/messages │ Claude Code Router │
│ (CLI / VSC) │ ◀────────────────────────────── │ (localhost:3456) │
│ │ │ │
└─────────────────┘ └──────────┬───────────────┘
│
┌──────────────────────────────────────┼──────────────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Ollama │ │ DeepSeek API │ │ OpenAI API │
│ (localhost) │ │ (云端) │ │ (其他兼容) │
│ :11434/v1 │ │ api.deepseek │ │ │
└──────────────────┘ └──────────────────┘ └──────────────────┘
工作流程
- Claude Code 原生只支持 Anthropic Messages API 格式(
/v1/messages) - Claude Code Router 运行在本地,暴露一个兼容 Anthropic API 的端点
http://127.0.0.1:3456 - 通过设置
ANTHROPIC_BASE_URL=http://127.0.0.1:3456,Claude Code 将所有 API 请求发送到 CCR - CCR 内部做协议转换:将 Anthropic Messages 格式翻译成 OpenAI Chat Completions 格式(Ollama / DeepSeek 都支持)
- 响应再从 OpenAI 格式翻译回 Anthropic 格式返回给 Claude Code
关键事实
| 事项 | 说明 |
|---|---|
| Claude Code 发送的协议 | Anthropic Messages API (/v1/messages) |
| Ollama 支持的协议 | OpenAI Chat Completions API (/v1/chat/completions) |
| DeepSeek 支持的协议 | OpenAI Chat Completions API (/v1/chat/completions) |
| CCR 的作用 | 协议转换网关,在两种格式间翻译 |
| 认证方式 | 通过 ANTHROPIC_AUTH_TOKEN 或 ANTHROPIC_API_KEY 传递凭证 |
2. 安装 Claude Code Router
系统要求
- macOS 10.15+ / Windows 10+ / Linux (支持 AppImage)
- 已安装 Claude Code CLI
下载安装
- 访问 GitHub Releases 页面
- 下载对应系统的安装包:
- macOS :
.dmg文件 - Windows :
.exe安装程序 - Linux :
.AppImage文件
- macOS :
- 安装并启动应用
首次启动
启动后,CCR 会在以下位置创建配置文件:
- macOS / Linux :
~/.claude-code-router/config.json - Windows :
%APPDATA%\Claude Code Router\config.json
3. 配置 Ollama 提供商
前置条件
- 已安装 Ollama
- 已拉取至少一个模型,例如:
bash
ollama pull llama3.1
ollama pull qwen2.5
ollama pull deepseek-r1:7b
- Ollama 服务正在运行(默认监听
http://127.0.0.1:11434)
通过 CCR 界面配置
- 打开 CCR 桌面应用
- 进入 Providers → 点击 Add Provider
- 填写以下信息:
| 字段 | 值 |
|---|---|
| Provider Name | Ollama |
| Endpoint (Base URL) | http://127.0.0.1:11434/v1 |
| Protocol | openai_chat_completions |
| API Key | 留空(或随意填写 ollama) |
| Models | 输入你已拉取的模型名,如 llama3.1, qwen2.5 |
- 点击 Save
为什么 Ollama 的 endpoint 是
:11434/v1? Ollama 从 0.1.32 版本开始原生支持 OpenAI 兼容 API,路径为/v1/chat/completions。 CCR 通过openai_chat_completions协议将 Anthropic 请求转换后发送到此端点。
通过 Deeplink 配置(可选)
也可以直接通过 URL Scheme 快速添加:
perl
ccr://provider?name=Ollama&base_url=http%3A%2F%2F127.0.0.1%3A11434%2Fv1&api_key=ollama&models=llama3.1,qwen2.5&protocol=openai_chat_completions
在浏览器中打开此链接,CCR 会弹出确认对话框。
测试 Ollama 连接
在终端验证 Ollama 的 OpenAI 兼容 API 是否正常:
bash
curl http://127.0.0.1:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.1",
"messages": [{"role": "user", "content": "Hello"}]
}'
应返回包含 choices 字段的 JSON 响应。
4. 配置 DeepSeek 提供商
前置条件
- 注册 DeepSeek 平台
- 获取 API Key(在控制台创建)
通过 CCR 界面配置
- 打开 CCR 桌面应用
- 进入 Providers → 点击 Add Provider
- 填写以下信息:
| 字段 | 值 |
|---|---|
| Provider Name | DeepSeek |
| Endpoint | https://api.deepseek.com/v1 |
| Protocol | openai_chat_completions |
| API Key | sk-xxxxxxxxxxxxxxxxxxxx(你的 DeepSeek API Key) |
| Models | deepseek-chat, deepseek-reasoner |
- 点击 Save
通过 Deeplink 配置(可选)
perl
ccr://provider?name=DeepSeek&base_url=https%3A%2F%2Fapi.deepseek.com%2Fv1&api_key=sk-xxxxxxxxx&models=deepseek-chat,deepseek-reasoner&protocol=openai_chat_completions
DeepSeek 模型说明
| 模型 ID | 说明 | 适用场景 |
|---|---|---|
deepseek-chat |
DeepSeek V3 / 最新聊天模型 | 日常编码、代码生成 |
deepseek-reasoner |
DeepSeek R1 推理模型 | 复杂推理、调试分析 |
5. 配置 Claude Code 连接到 CCR
5.1 启动 CCR 网关
- 在 CCR 桌面应用中进入 Server
- 点击 Start 启动网关服务
- 确认状态:两个端点应处于运行状态:
- Wrapper gateway :
http://127.0.0.1:3456 - Core gateway runtime :
http://127.0.0.1:3457
- Wrapper gateway :
💡 建议勾选 Auto-start,这样每次开机 CCR 会自动启动网关。
5.2 创建 Claude Code 配置文件
方法 A:全局配置(推荐)
编辑 ~/.claude/settings.json(macOS/Linux)或 %USERPROFILE%\.claude\settings.json(Windows):
json
{
"env": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:3456",
"ANTHROPIC_API_KEY": "ccr-local"
}
}
ANTHROPIC_API_KEY的值可以是任意非空字符串------CCR 作为本地网关不验证这个 key,但 Claude Code 要求必须有值才会绕过登录流程。
方法 B:项目级配置
在项目根目录创建 .claude/settings.local.json(此文件会自动被 gitignore):
json
{
"env": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:3456",
"ANTHROPIC_API_KEY": "ccr-local"
}
}
方法 C:Shell 环境变量(临时,适合测试)
bash
export ANTHROPIC_BASE_URL=http://127.0.0.1:3456
export ANTHROPIC_API_KEY=ccr-local
5.3 使用 CCR Profiles 自动配置(推荐)
CCR 提供了 Profile 功能,可以一键应用配置:
- 在 CCR 中进入 Profiles
- 选择 Claude Code
- 选择目标模型(例如你在 Ollama 中配置的
llama3.1) - 点击 Apply --- 这会自动设置环境变量并打开 Claude Code
5.4 配置 CCR 路由
在 CCR 的 Routing 面板中设置:
| 路由项 | 推荐配置 |
|---|---|
| Default Provider | 选择你配置的 Ollama 或 DeepSeek |
| Default Model | 选择具体模型,如 llama3.1 或 deepseek-chat |
你还可以配置针对不同工作负载的路由规则:
- Background(后台任务)→ 可以用更便宜的模型
- Thinking(推理任务)→ 可以用更强的模型
- Subagent(子智能体)→ 可以用性价比更高的模型
6. 验证连接
6.1 快速测试(curl)
在配置好环境变量后,先用 curl 测试 CCR 网关是否正常响应:
bash
curl -X POST http://127.0.0.1:3456/v1/messages \
-H "Authorization: Bearer ccr-local" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model": "llama3.1", "max_tokens": 50, "messages": [{"role": "user", "content": "Say hello"}]}'
注意:这里的
model名称必须与你之前在 CCR 中添加的模型名称一致。 如果 DeepSeek 使用deepseek-chat,如果 Ollama 使用你拉取的模型名如llama3.1。
如果返回 JSON 且包含 content 字段,说明 CCR 工作正常。
6.2 启动 Claude Code
bash
cd your-project
claude
如果一切正常,Claude Code 应该 跳过登录界面,直接进入会话。
6.3 检查状态
在 Claude Code 中运行:
bash
/status
查看以下关键信息:
| 状态项 | 期望值 |
|---|---|
Anthropic base URL |
http://127.0.0.1:3456 |
API key |
应显示 ANTHROPIC_API_KEY(而非 Login method) |
6.4 发送测试消息
尝试发送一条简单的消息,比如:
sql
Hello, what model are you running on?
如果 CCR 路由配置正确,你会收到模型回复,并能在 CCR 的 Dashboard 中看到请求记录。
7. 进阶:路由规则与虚拟模型
7.1 多模型路由
CCR 支持根据请求特征将不同任务路由到不同模型:
| 路由条件 | 目标模型 | 用途 |
|---|---|---|
| Default | deepseek-chat |
日常对话和编码 |
| Background | llama3.1 (本地 Ollama) |
后台任务、代码搜索 |
| Thinking | deepseek-reasoner |
需要深度推理的任务 |
| Long Context | deepseek-chat |
处理大文件 |
配置方式:在 CCR → Routing → Add Routing Rule 中设置。
7.2 虚拟模型(Virtual Models)
可以创建虚拟模型名称来简化模型选择:
arduino
llama3.1 → Ollama 上的 llama3.1
default-coding → deepseek-chat
default-reasoning → deepseek-reasoner
在 CCR → Routing → Virtual Models 中配置。
7.3 备用路由(Fallback)
当主模型不可用时,CCR 可以自动切换到备用模型:
makefile
Primary: deepseek-chat (DeepSeek)
Fallback: llama3.1 (Ollama,本地运行,不需要网络)
在 Routing → 编辑路由规则 → 配置 Fallback 模型。
7.4 API Key 轮转
对 DeepSeek 等 API 服务,可以配置多个 API Key 实现负载均衡和故障转移:
在 Providers → 编辑 DeepSeek → API Key 字段使用逗号分隔多个 key:
sk-key1,sk-key2,sk-key3
CCR 会在请求失败时自动轮换到下一个 key。
8. 常见问题排查
8.1 Claude Code 仍然显示登录界面
原因:CCR 的网关配置未被 Claude Code 读取到。
解决:
- 确认
ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY都已正确设置 - 如果使用
settings.json,确认文件路径正确:- 全局:
~/.claude/settings.json - 项目级:
.claude/settings.local.json
- 全局:
- 运行
echo $ANTHROPIC_BASE_URL检查环境变量是否生效 - 在 Claude Code 中运行
/status查看实际生效的 base URL
8.2 连接被拒绝(Connection Refused)
原因:CCR 网关未启动。
解决:
- 确认 CCR 桌面应用正在运行
- 在 CCR → Server 中确认 Gateway 状态为 "Running"
- 检查端口是否被占用:
lsof -i :3456
8.3 模型返回错误或不响应
原因:可能存在多种问题。
解决步骤:
对于 Ollama:
bash
# 检查 Ollama 服务状态
ollama list
# 确认模型已加载
ollama run llama3.1
# 检查 Ollama 日志
ollama serve
对于 DeepSeek:
bash
# 直接测试 DeepSeek API
curl https://api.deepseek.com/v1/chat/completions \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{"model": "deepseek-chat", "messages": [{"role": "user", "content": "hi"}]}'
8.4 401 认证错误
原因:API Key 未正确传递。
解决:
- 如果使用
ANTHROPIC_API_KEY,CCR 收到的是x-api-key头 - 如果使用
ANTHROPIC_AUTH_TOKEN,CCR 收到的是Authorization: Bearer头 - 大多数情况下,两者都可以,只需确保
settings.json中的变量名与 CCR 期望的一致
8.5 协议转换错误
原因:CCR 在 Anthropic Messages ↔ OpenAI Chat Completions 之间转换时可能遇到不兼容的字段。
解决:
- 在 Claude Code 中设置环境变量:
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 - 这会让 Claude Code 少发送一些实验性字段,降低协议转换出错的概率
- 在 settings.json 中添加:
json
{
"env": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:3456",
"ANTHROPIC_API_KEY": "ccr-local",
"CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1"
}
}
8.6 检查 CCR 日志
CCR 桌面应用中的 Network Logs 面板可以查看所有通过的请求和响应,是排查问题的最佳工具。
8.7 重置配置
如果需要完全重置:
bash
# 备份现有配置
cp ~/.claude-code-router/config.json ~/.claude-code-router/config.json.bak
# 删除配置(CCR 会在下次启动时重新创建)
rm ~/.claude-code-router/config.json
# 清除 Claude Code 缓存
rm -rf ~/.claude/cache
9. 完整配置示例
最终 ~/.claude/settings.json
json
{
"env": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:3456",
"ANTHROPIC_API_KEY": "ccr-local",
"CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
}
}
启动顺序
正确的启动顺序是:
- 启动 Ollama (如果用本地模型):
ollama serve - 启动 CCR 并确保网关处于 Running 状态
- 启动 Claude Code :
claude
10. 参考链接
- Claude Code Router GitHub --- 项目源码与 Release 下载
- Claude Code 官方文档 - LLM Gateway --- Claude Code 的网关协议说明
- Claude Code 官方文档 - 连接到 LLM Gateway --- 配置
ANTHROPIC_BASE_URL的详细指南 - Claude Code 官方文档 - 网关协议参考 --- 网关 API 协议细节
- Ollama 官方文档 --- Ollama 本地模型运行
- DeepSeek 平台 --- DeepSeek API 管理
免责声明:Claude Code Router 是一个第三方开源项目,非 Anthropic 官方维护。使用非 Anthropic 模型运行 Claude Code 时,部分 Claude Code 原生功能(如超长上下文、思考能力、工具流式传输等)可能因协议转换而受限。始终在符合你所在组织的安全策略的前提下使用。