Claude Code 如何配置本地Ollama模型或别的模型(Deepseek等)

个人使用场景 claude 模型实在是太贵了,想使用 Claude Code 默认只支持 Anthropic 的接口格式,所以本文记录了如何把本地模型或者其他模型(Deepseek等)接入 Claude Code 使用的方法。
通过 Claude Code Router (CCR) 将 Claude Code CLI 连接到 Ollama(本地模型)或 DeepSeek(云端模型),从而使用非 Anthropic 模型运行 Claude Code。


目录

  1. 原理概述
  2. [安装 Claude Code Router](#安装 Claude Code Router "#2-%E5%AE%89%E8%A3%85-claude-code-router")
  3. [配置 Ollama 提供商](#配置 Ollama 提供商 "#3-%E9%85%8D%E7%BD%AE-ollama-%E6%8F%90%E4%BE%9B%E5%95%86")
  4. [配置 DeepSeek 提供商](#配置 DeepSeek 提供商 "#4-%E9%85%8D%E7%BD%AE-deepseek-%E6%8F%90%E4%BE%9B%E5%95%86")
  5. [配置 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")
  6. 验证连接
  7. 进阶:路由规则与虚拟模型
  8. 常见问题排查
  9. 参考链接

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   │      │                  │
                  └──────────────────┘                  └──────────────────┘      └──────────────────┘

工作流程

  1. Claude Code 原生只支持 Anthropic Messages API 格式(/v1/messages
  2. Claude Code Router 运行在本地,暴露一个兼容 Anthropic API 的端点 http://127.0.0.1:3456
  3. 通过设置 ANTHROPIC_BASE_URL=http://127.0.0.1:3456,Claude Code 将所有 API 请求发送到 CCR
  4. CCR 内部做协议转换:将 Anthropic Messages 格式翻译成 OpenAI Chat Completions 格式(Ollama / DeepSeek 都支持)
  5. 响应再从 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_TOKENANTHROPIC_API_KEY 传递凭证

2. 安装 Claude Code Router

系统要求

  • macOS 10.15+ / Windows 10+ / Linux (支持 AppImage)
  • 已安装 Claude Code CLI

下载安装

  1. 访问 GitHub Releases 页面
  2. 下载对应系统的安装包:
    • macOS : .dmg 文件
    • Windows : .exe 安装程序
    • Linux : .AppImage 文件
  3. 安装并启动应用

首次启动

启动后,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 界面配置

  1. 打开 CCR 桌面应用
  2. 进入 Providers → 点击 Add Provider
  3. 填写以下信息:
字段
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
  1. 点击 Save

为什么 Ollama 的 endpoint 是 :11434/v1 Ollama 从 0.1.32 版本开始原生支持 OpenAI 兼容 API,路径为 /v1/chat/completions。 CCR 通过 openai_chat_completions 协议将 Anthropic 请求转换后发送到此端点。

也可以直接通过 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 提供商

前置条件

通过 CCR 界面配置

  1. 打开 CCR 桌面应用
  2. 进入 Providers → 点击 Add Provider
  3. 填写以下信息:
字段
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
  1. 点击 Save
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 网关

  1. 在 CCR 桌面应用中进入 Server
  2. 点击 Start 启动网关服务
  3. 确认状态:两个端点应处于运行状态:
    • Wrapper gateway : http://127.0.0.1:3456
    • Core gateway runtime : http://127.0.0.1:3457

💡 建议勾选 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 功能,可以一键应用配置:

  1. 在 CCR 中进入 Profiles
  2. 选择 Claude Code
  3. 选择目标模型(例如你在 Ollama 中配置的 llama3.1
  4. 点击 Apply --- 这会自动设置环境变量并打开 Claude Code

5.4 配置 CCR 路由

在 CCR 的 Routing 面板中设置:

路由项 推荐配置
Default Provider 选择你配置的 Ollama 或 DeepSeek
Default Model 选择具体模型,如 llama3.1deepseek-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 → RoutingAdd Routing Rule 中设置。

7.2 虚拟模型(Virtual Models)

可以创建虚拟模型名称来简化模型选择:

arduino 复制代码
llama3.1 → Ollama 上的 llama3.1
default-coding → deepseek-chat
default-reasoning → deepseek-reasoner

在 CCR → RoutingVirtual 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_URLANTHROPIC_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"
  }
}

启动顺序

正确的启动顺序是:

  1. 启动 Ollama (如果用本地模型):ollama serve
  2. 启动 CCR 并确保网关处于 Running 状态
  3. 启动 Claude Codeclaude

10. 参考链接


免责声明:Claude Code Router 是一个第三方开源项目,非 Anthropic 官方维护。使用非 Anthropic 模型运行 Claude Code 时,部分 Claude Code 原生功能(如超长上下文、思考能力、工具流式传输等)可能因协议转换而受限。始终在符合你所在组织的安全策略的前提下使用。

相关推荐
程序员小假1 小时前
RAG文档存储与切割策略详解:从基础到进阶
agent
Darling噜啦啦1 小时前
LLM 数据工程实战:从数据集划分到交叉验证——大模型智能的根基
llm
沉默王二2 小时前
震惊!Claude Code这五个核心概念我居然才知道!
agent·ai编程·claude
老梁agent3 小时前
一个 Agent 不够用?工业场景下的多 Agent 路由模式实战
物联网·agent
贵慜_Derek3 小时前
复杂系统没法一把梭重构:Semi-Autoresearch 怎么小步迁移还不掉功能
人工智能·agent·ai编程
HjhIron3 小时前
工具调用:当LLM学会使用"武器",AI Agent的底层逻辑拆解
llm·agent
武子康3 小时前
调查研究-195 从 AmEx 支付系统看 Cell-based Architecture:真正的高可用,不是无限重试,而是控制失败边界
人工智能·openai·agent