拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

告别高额Claude账单!用CCR网关把第三方模型接入Claude Code的完整配置

告别高额Claude账单!用CCR网关把第三方模型接入Claude Code的完整配置

1. 为什么 Claude Code 用户都在找 CCR 网关降本方案

Claude Code 是目前终端里体验最顺手的 AI 编程助手之一,能读整个仓库、能改多文件、能跑命令,但它的计费方式让不少人用起来心里发虚。Anthropic 官方 API 按 token 计费,长上下文、多轮工具调用叠加起来,一个中等规模的重构任务就可能消耗掉可观的额度。很多人的真实感受是:功能确实强,但不敢放开用,每次回车都像在按秒计费的跑步机上。

于是「Claude Code 接入第三方模型」成了高频搜索词。核心诉求很明确:保留 Claude Code 的交互体验和工具链,把后端模型换成更便宜的选项,比如本地 Ollama、云端 DeepSeek,或者通过统一网关接入的多种模型。问题是 Claude Code 默认只认 Anthropic 的 Messages API 协议,第三方模型大多走 OpenAI Chat Completions 协议,两边对不上。

CCR(Claude Code Router)就是解决这个协议错位的中间层。它在本地起一个网关服务,对外暴露 Anthropic 兼容接口,对内把请求翻译成 OpenAI 格式转发给第三方模型,再把结果翻译回来。Claude Code 以为自己在跟 Anthropic 对话,实际上请求已经路由到了你指定的任意模型。这篇就按「装 CCR → 配第三方模型 → 改 Claude Code 指向 → 验证请求 → 排错」的顺序,把整套配置走一遍,配置片段可以直接复制。

适合谁看:已经在用或准备用 Claude Code、想控制调用成本、手里有 Ollama 或 DeepSeek 等第三方模型额度的开发者。不需要你懂协议细节,跟着配就行。

2. TaoToken 网关前置准备与 CCR 安装配置

在讲 CCR 之前,先说一个更省事的思路。如果你不想在本地维护 CCR 进程、也不想自己管多个第三方模型的 Key,可以用 TaoToken 这类统一网关作为上游。它的 API 地址是 https://taotoken.net/api,兼容 Anthropic 和 OpenAI 两种协议风格,Claude Code 可以直接把 Base URL 指过去,省掉本地翻译层。对于「只想快点用上、不想折腾本地服务」的人,这是更短的路径。

不过本文的重点是 CCR 方案,因为它能让你在本地自由组合多个模型、做路由和故障切换。两条路不冲突:你可以先用 TaoToken 跑通,再决定要不要上 CCR 做更细的路由控制。

CCR 的安装方式按系统分:macOS 用 .dmg,Windows 用 .exe,Linux 用 .AppImage,去 GitHub Releases 页面下载对应包即可。装完首次启动,它会自动生成配置文件,路径是:

  • macOS / Linux:~/.claude-code-router/config.json
  • Windows:%APPDATA%\Claude Code Router\config.json

这个文件是后面所有配置的核心。CCR 的配置结构大致分三块:Providers(上游模型提供方)、Router(路由规则)、APIKEY(本地网关的访问密钥)。下面给一份可直接改的 JSON 骨架:

{ "APIKEY": "ccr-local", "Providers": [ { "name": "ollama", "api_base_url": "http://127.0.0.1:11434/v1/chat/completions", "api_key": "ollama", "models": ["llama3.1", "qwen2.5"] }, { "name": "deepseek", "api_base_url": "https://api.deepseek.com/v1/chat/completions", "api_key": "sk-你的DeepSeekKey", "models": ["deepseek-chat", "deepseek-reasoner"] } ], "Router": { "default": "deepseek,deepseek-chat", "background": "ollama,qwen2.5", "think": "deepseek,deepseek-reasoner", "longContext": "deepseek,deepseek-chat" } }

几个关键点解释一下。api_base_url对 Ollama 要带/v1/chat/completions,因为 Ollama 从 0.1.32 起原生支持 OpenAI 兼容接口,CCR 就是通过这个路径转发。DeepSeek 的地址是官方给的https://api.deepseek.com/v1/chat/completions,Key 必须填真实的,填错会直接 401。

Router里的值格式是provider名,模型名。default是日常对话走哪个,background是后台小任务(比如生成标题、补全)走哪个,think是推理类请求走哪个,longContext是长上下文场景走哪个。这样你可以让便宜的本地模型干杂活,让推理强的模型处理复杂问题,成本自然就压下来了。

如果你用 TaoToken 作为上游 Provider,配置里把api_base_url换成https://taotoken.net/api/v1/chat/completions,api_key换成在控制台创建的 Key 即可,模型名按文档里支持的填。这样 CCR 本地路由 + TaoToken 统一上游,两层都能省。

配完保存,重启 CCR,进 Server 面板确认 Gateway 状态是 Running,默认监听http://127.0.0.1:3456。这一步没跑起来,后面 Claude Code 一定连不上。

3. Claude Code 侧 Base URL 与 settings.json 可复制配置

CCR 跑起来后,要让 Claude Code 把请求发给它,而不是发给 Anthropic 官方。改的是 Claude Code 的配置文件:

  • 全局:~/.claude/settings.json(macOS/Linux)或%USERPROFILE%\.claude\settings.json(Windows)
  • 项目级:项目根目录.claude/settings.local.json(会被 gitignore,适合临时测试)

直接复制这份:

{ "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" } }

ANTHROPIC_BASE_URL指向 CCR 本地网关,这是整个方案的关键一行。ANTHROPIC_API_KEY的值要和 CCR 配置里的APIKEY一致,这里都写ccr-local。CCR 作为本地网关默认不严格校验这个 Key,但 Claude Code 要求必须有值,否则不启动,所以随便填一个固定字符串即可。

后两行是排障用的。CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS关掉实验性字段,避免 CCR 翻译不过来报协议错误;CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC关掉非必要遥测请求,减少无谓的转发和报错。

如果你用 TaoToken 直连(不走 CCR),配置改成:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "你的TaoTokenKey", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" } }

注意 TaoToken 直连时ANTHROPIC_API_KEY要填真实 Key,不是随便写。模型 ID 按文档里支持的填,这里只是示例。

改完配置后,重启终端让环境变量生效。想临时测试也可以直接 export:

export ANTHROPIC_BASE_URL=http://127.0.0.1:3456 export ANTHROPIC_API_KEY=ccr-local

CCR 桌面端还有个更省事的做法:在 Profiles 里选 Claude Code,点 Apply,它会自动帮你设好环境变量并拉起 Claude Code。适合不想手动改文件的场景。

这里提醒一个容易混的点:ANTHROPIC_API_KEY和ANTHROPIC_AUTH_TOKEN是两个不同的变量,CCR 对它们的处理方式不一样。保险起见统一用ANTHROPIC_API_KEY,避免认证逻辑走岔。

4. 验证请求:curl 测试与 Claude Code 内 /status 确认

配置写完不代表生效,必须验证。分两步:先测 CCR 网关本身通不通,再测 Claude Code 有没有真的走网关。

第一步,用 curl 直接打 CCR 的 Anthropic 兼容端点:

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": "deepseek-chat", "max_tokens": 50, "messages": [{"role": "user", "content": "Say hello"}] }'

如果返回的 JSON 里有content字段,说明 CCR 正常把请求翻译并转发给了 DeepSeek,链路通了。如果返回 401,检查Authorization头里的值是否和 CCR 配置的APIKEY一致。如果返回连接错误,说明 CCR 没启动或端口不对。

第二步,启动 Claude Code:

cd your-project claude

进入会话后输入/status,看 Anthropic base URL 那一行显示的是不是http://127.0.0.1:3456。如果是,说明 Claude Code 确实在跟本地网关说话,没有偷偷连官方。这一步很关键,很多人配置改了但没重启终端,环境变量没生效,/status里还是官方地址。

再发一句真实对话,比如「帮我看看当前目录下有哪些文件」,观察 CCR 的日志面板有没有对应的请求记录。有记录且 Claude Code 正常回复,就说明整条链路——Claude Code → CCR → 第三方模型 → 返回——完全打通了。

如果你用的是 TaoToken 直连方案,验证方式类似,把 curl 的地址换成https://taotoken.net/api/v1/messages,Header 里带真实 Key,能返回内容就说明接入成功。想先在线试模型效果,可以打开模型对话页面直接聊几句,确认模型可用再写进配置。

5. 常见报错排查:401、连接被拒、模型不响应、协议转换失败

这一节按真实报错对照,遇到问题直接查。

还是跳登录界面。说明 Claude Code 没读到你的配置。先确认settings.json路径对不对,再在终端跑echo $ANTHROPIC_BASE_URL看输出。如果为空,说明环境变量没设上,重启终端或检查文件是否被覆盖。Claude Code 有时会缓存配置,清掉~/.claude/cache再试。

Connection refused / local proxy failed。CCR 网关没启动,或者端口被占。打开 CCR 的 Server 面板确认 Gateway 是 Running,检查 3456 端口有没有被别的程序占用。换个端口的话,Claude Code 的ANTHROPIC_BASE_URL也要同步改。

模型不响应。先核对模型名。Ollama 里的模型名必须和 CCR 配置里完全一致,大小写都不能错。DeepSeek 的话,直接用 curl 测官方接口是否正常:

curl https://api.deepseek.com/v1/chat/completions \ -H "Authorization: Bearer sk-你的Key" \ -H "Content-Type: application/json" \ -d '{"model": "deepseek-chat", "messages": [{"role": "user", "content": "hi"}]}'

官方接口都不通,问题就在 Key 或额度,不在 CCR。

401 认证错误。分两种:CCR 本地认证失败,检查Authorization头;上游认证失败,检查 Provider 里的api_key。用 TaoToken 时同理,Key 填错会直接 401,去控制台重新创建一个 API Key 替换即可。

协议转换报错 / reading choices 相关错误。Claude Code 有时会发实验性字段,CCR 翻译不过来。在settings.json里加上CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS: "1",让它少发花哨字段。如果报错里出现reading 'choices',通常是上游返回格式不是标准 OpenAI 结构,检查api_base_url是否漏了/v1/chat/completions路径。

OAuth 相关报错。说明 Claude Code 还在尝试走官方登录流程,Base URL 没生效。回到第 3 节确认配置,重启终端。

排查顺序建议固定:先 curl 测 CCR → 再 curl 测上游 → 再看 Claude Code/status→ 最后看 CCR 日志。逐层定位,比盲目改配置快得多。

6. 长期编码与 Agent 场景的接入选择

跑通之后,日常使用还有几个实用技巧。启动顺序记住:先开 Ollama(如果用本地模型),再开 CCR,最后开 Claude Code。顺序错了,CCR 找不到上游会报错。

路由配置可以按任务类型细化。日常编码走deepseek-chat,成本低响应快;复杂重构或算法推理走deepseek-reasoner;后台小任务走本地qwen2.5,完全不花钱。这样组合下来,一个月的调用成本能压到官方直连的很小一部分。

如果你经常跑长任务、Agent 工作流,或者需要多模型切换,建议把 CCR 的备用路由配上:主模型不可用时自动切到本地 Ollama,避免任务中断。对于更长期的编码和 Agent 场景,也可以考虑用 Coding Plan 这类方案,把额度和路由统一管理,省去自己维护多个 Key 的麻烦。

需要创建和管理 Key 的话,去控制台操作;接入细节和参数说明看接入文档;想先验证模型效果,直接开模型对话试几句。把这几步走完,Claude Code 的体验保留,账单压力降下来,这套配置就算真正落地了。

返回列表