P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。

我的钱包在哭泣

用 Claude Code 之前,我以为 AI 编程助手是来提升效率的。用了之后,我发现它是来提升血压的——主要是看到账单的时候。

Anthropic 的收费方式特别科学,科学到每按一次回车,我都能听到钱包发出一声微弱的叹息。那感觉就像请了个按秒计费的私教,你写一行代码,它思考三秒;你改一个变量,它推理五秒。月底一看账单,很吓人。

我就琢磨,能不能换个便宜的模型?比如本地跑个 Ollama,或者接个 DeepSeek,那价格跟白送差不多。结果 Claude Code 微微一笑:不行,我只认 Anthropic 的 API。

CCR:一个会翻译的"中间商"

就在我准备卖掉键盘还债的时候,我发现了 Claude Code Router,简称 CCR。这玩意儿就像一个会八国语言的翻译官,专门给 Claude Code 和第三方模型牵线搭桥。

它的工作原理特别简单:Claude Code 只会说 Anthropic 方言,Ollama 和 DeepSeek 只会说 OpenAI 普通话,CCR 站在中间,左边耳朵听 Anthropic 的话,右边嘴巴说 OpenAI 的话,两边都觉得自己在跟原配聊天。

更妙的是,CCR 在本地开一个小服务器,地址是 http://127.0.0.1:3456。你把 Claude Code 的 API 地址指向这里,它以为自己在跟 Anthropic 服务器对话,实际上是在跟你的笔记本电脑眉来眼去。

💡 核心逻辑:CCR 是协议转换网关,把 Anthropic Messages API 翻译成 OpenAI Chat Completions API,再翻译回来。两边都蒙在鼓里。

安装 CCR:比装游戏还简单

安装 CCR 的过程,跟下载一个 Steam 游戏差不多。去 GitHub Releases 页面,找到对应系统的安装包:macOS 用 .dmg,Windows 用 .exe,Linux 用 .AppImage。

装完启动,它会自动在后台创建配置文件。macOS 和 Linux 放在 ~/.claude-code-router/config.json,Windows 放在 %APPDATA%\Claude Code Router\config.json。

第一次启动的时候,我盯着屏幕等了半天,以为要配置什么高深参数。结果它自己把饭做好了,我就负责张嘴。这种体验,比某些需要读半小时文档才能跑起来的开源项目友好太多了。

配置 Ollama:白嫖本地算力

Ollama 是个好东西,只要你电脑不是十年前的古董,它就能在本地跑大模型。关键是:不要钱。不要钱这三个字,在 AI 圈子里简直就是天籁之音。

先确保你装了 Ollama,然后拉几个模型下来:

ollama pull llama3.1
ollama pull qwen2.5
ollama pull deepseek-r1:7b

拉模型的时候,你可以去泡杯咖啡,因为下载过程取决于你的网速。如果你的网速像蜗牛,那就泡壶茶。

接下来打开 CCR 桌面应用,进入 Providers,点 Add Provider。填下面这些信息:

Provider Name: Ollama
Endpoint: http://127.0.0.1:11434/v1
Protocol: openai_chat_completions
API Key: 随便填,比如 ollama
Models: llama3.1, qwen2.5

看到 API Key 可以随便填的时候,我感动得差点落泪。本地模型就是大气,不查身份证,不验健康码,来者皆是客。

为什么 endpoint 后面要加 /v1?因为 Ollama 从 0.1.32 版本开始,原生支持 OpenAI 兼容 API。CCR 就是通过这个接口,把 Anthropic 的请求翻译成 OpenAI 格式发过去。

配置 DeepSeek:云端便宜货

如果你电脑配置不够跑本地模型,或者你想用更强的推理能力,DeepSeek 是个不错的选择。它的价格比 Anthropic 便宜得多,效果却相当能打。

先去 DeepSeek 官网注册,然后在控制台创建一个 API Key。拿到 Key 之后,在 CCR 里再添加一个 Provider:

Provider Name: DeepSeek
Endpoint: https://api.deepseek.com/v1
Protocol: openai_chat_completions
API Key: 你的 sk-xxx
Models: deepseek-chat, deepseek-reasoner

deepseek-chat 是日常聊天和编码用的,deepseek-reasoner 是推理模型,适合复杂问题。你可以理解为一个是普通门诊,一个是专家号。

DeepSeek 的 API Key 可不能随便填,那是真金白银买的。填错了它真的会报错,不像 Ollama 那么好说话。

让 Claude Code"叛变"

现在 CCR 已经准备好了,接下来要让 Claude Code"叛变" Anthropic,投靠你的本地网关。这个过程就像让一只吃惯进口猫粮的猫,改吃国产粮。

编辑 Claude Code 的配置文件。全局配置在 ~/.claude/settings.json(macOS/Linux)或 %USERPROFILE%.claude\settings.json(Windows):

{
  "env": {
    "ANTHROPIC_BASE_URL": "http://127.0.0.1:3456",
    "ANTHROPIC_API_KEY": "ccr-local"
  }
}

注意,ANTHROPIC_API_KEY 的值可以随便写,CCR 作为本地网关不验证这个 Key。但 Claude Code 要求必须有值,不然它就不启动。这就像去餐厅必须点餐,但你可以点一杯免费的水。

如果你只想在某个项目里用,可以在项目根目录创建 .claude/settings.local.json,这个文件会自动被 gitignore,不用担心提交到仓库里丢人。

当然,你也可以用环境变量临时测试:

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

CCR 还提供了一个更懒的办法:在 Profiles 里选择 Claude Code,然后点 Apply,它会自动设置环境变量并打开 Claude Code。适合像我这样连配置文件都懒得写的人。

配置路由:谁干活,谁摸鱼

在 CCR 的 Routing 面板里,你可以设置默认用哪个模型。比如你日常用 DeepSeek,后台任务用本地 Ollama,复杂推理用 DeepSeek 的推理模型。

CCR 甚至支持根据任务类型自动路由。日常对话走 deepseek-chat,后台搜索走 llama3.1,深度思考走 deepseek-reasoner。这就像一个智能管家,知道什么时候该叫保姆,什么时候该叫保镖。

你还可以创建虚拟模型名,比如把 default-coding 映射到 deepseek-chat,把 default-reasoning 映射到 deepseek-reasoner。这样你在 Claude Code 里选模型的时候,不用记那一长串名字。

最实用的是备用路由功能。主模型挂了的时候,自动切到本地 Ollama。这就像你请了个月薪五万的专家,同时养了个不要钱的实习生,专家请假的时候实习生顶上。

验证:看看骗过去没有

配置完别急着高兴,先验证一下 CCR 网关是不是在正常工作。用 curl 测试一下:

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"}]}'

如果返回了 JSON 并且里面有 content 字段,说明 CCR 工作正常。如果返回了错误,那就回去检查配置,别问我怎么知道的,我检查了三遍。

接下来启动 Claude Code:

cd your-project
claude

如果一切正常,Claude Code 会直接跳过登录界面,进入会话。那一刻的感觉,就像逃票成功混进了演唱会,虽然有点心虚,但更多的是爽。

在 Claude Code 里输入 /status,确认 Anthropic base URL 显示的是 http://127.0.0.1:3456,而不是官方的 api.anthropic.com。这就像查岗,确认它真的在跟本地网关说话,而不是偷偷给 Anthropic 打电话。

踩坑指南:我替你摔过的跤

下面这几个问题,是我用血和泪换来的经验,建议你收藏,下次报错的时候翻出来对照。

还是跳登录界面

如果 Claude Code 还是让你登录,说明配置没生效。检查 settings.json 的路径对不对,环境变量有没有设置成功。在终端运行 echo $ANTHROPIC_BASE_URL 看看输出的是什么。

有时候 Claude Code 会缓存配置,重启终端或者清掉 ~/.claude/cache 试试。这就像电脑卡了要重启,虽然土,但管用。

连接被拒绝

Connection Refused 意思是 CCR 网关没启动。打开 CCR 桌面应用,进入 Server 面板,确认 Gateway 状态是 Running。如果端口被占用了,检查一下是不是有别的程序抢了 3456 端口。

模型不响应

如果模型不回复,先检查模型名对不对。Ollama 里的模型名必须跟 CCR 里配置的一致,大小写都不能错。DeepSeek 的话,直接用 curl 测试 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"}]}'

401 认证错误

API Key 没传对。ANTHROPIC_API_KEY 和 ANTHROPIC_AUTH_TOKEN 两个变量名别搞混,CCR 对这两个的处理方式不一样。保险起见,用 ANTHROPIC_API_KEY,值随便填。

协议转换报错

Claude Code 有时候会发送一些实验性字段,CCR 翻译不过来。在 settings.json 里加一行:

"CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1"

这会让 Claude Code 老实一点,少发那些花里胡哨的字段。

最终配置:抄作业时间

如果你懒得自己配,直接把下面这份作业抄走:

{
  "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,再开 CCR,最后开 Claude Code。顺序错了,就像先穿鞋再穿袜子,虽然也能走,但总觉得哪里不对。

最后说一句,CCR 是第三方开源项目,不是 Anthropic 官方出品。用它跑非 Anthropic 模型的时候,Claude Code 的一些高级功能可能会受限,比如超长上下文或者某些工具流。但比起省下来的钱,这些限制我完全可以接受。

毕竟,我的钱包已经很久没有这么开心过了。

P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐