Claude Code 接入本地大模型:CCR 路由配置实战
上一篇我们用 llama.cpp 在本地跑起了大模型,这一篇让它真正干活:把 Claude Code(Anthropic 的终端 AI 编程助手)接到本地模型上。默认情况下 Claude Code 走 Anthropic 官方 API,通过 CCR(claude-code-router) 这个路由网关,可以把它的请求全部转发到本地 llama-server,实现本地推理、数据不出本机。
核心概念先搞清楚
Claude Code
Claude Code 是 Anthropic 推出的命令行 AI 编程助手,直接在终端里工作:可以读项目代码、按指令修改文件、执行命令,适合在编辑器旁边配合使用。它默认通过 Anthropic 官方 API 或账号订阅访问 Claude 模型,但这套协议是可以通过环境变量重定向的,这正是本文接入本地模型的切入点。
CCR(claude-code-router)
CCR 是 @musistudio/claude-code-router 这个开源项目,作用是一个轻量网关:
- 接收 Claude Code 发来的请求,再转发到任意 OpenAI 兼容的模型端点;
- 支持配置多个 Provider(模型提供方),按模型名路由;
- 可以区分前台和后台任务走不同的模型(Router 里的
default和background)。
有了它,Claude Code 就能用上本地模型,而不是只能连 Anthropic 官方服务。
OpenAI 兼容接口
llama-server 除了自带聊天界面,还暴露了一组 OpenAI 兼容的 HTTP 接口:/v1/models(查询可用模型)、/v1/chat/completions(对话补全)。CCR 正是通过这组接口把请求转给本地模型的,所以配置里的 api_base_url 指向 llama-server 的地址。
npmmirror
npmmirror(原淘宝 npm 镜像)是国内的 npm 仓库镜像,用来加速依赖下载。安装 Claude Code 和 CCR 之前先设置镜像,可以避免网络超时。
安装 Claude Code
1 | # 设置国内镜像 |
安装完成后,在任意项目目录输入 claude 即可启动 Claude Code 的交互界面。
安装并配置 CCR
1 | npm install -g @musistudio/claude-code-router |
创建配置文件 ~/.claude-code-router/config.json。注意:CCR 默认端口号是 8080,这是常用端口,容易和本地模型的 8080 冲突,这里统一调整为 11122:
1 | { |
配置项说明:
| 配置项 | 含义 |
|---|---|
Providers[].name |
Provider 名称,自定义标识 |
Providers[].api_base_url |
模型端点地址,指向 llama-server 的 OpenAI 兼容接口 |
Providers[].api_key |
本地服务不校验密钥,随便填一个占位即可 |
Providers[].models |
该 Provider 下可用的模型名列表 |
Router.default |
默认路由,格式为 Provider 名 + 模型名 |
Router.background |
后台任务(如总结、索引)走的路由 |
确认模型 ID
配置中的模型名称 qwen3-uncensored(三处需要统一)可以使用 llama-server 暴露的接口确认:
1 | curl http://127.0.0.1:11122/v1/models |
返回结果里的 id 默认就是模型文件名去掉 .gguf,例如 Qwen3.6-35B-A3B-xxx-Q4_K_P。CCR 配置里的模型名必须和这个 id 一致。
模型名称太长的话,启动模型时可以加一个别名参数 --alias qwen3-uncensored,这样 /v1/models 返回的 id 就是别名,配置更简洁。完整启动命令:
1 | llama-server -m "Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf" --mmproj "mmproj-Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-f16.gguf" -ngl 999 -c 131072 -n 8192 --host 127.0.0.1 --port 11122 --alias qwen3-uncensored |
启动链路
整条链路需要三个终端配合:模型服务 → CCR 网关 → Claude Code。
终端 1:启动模型(也可以用上一篇的 start.sh 脚本,把端口改成 11122):
1 | llama-server -m "Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf" --mmproj "mmproj-Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-f16.gguf" -ngl 999 -c 131072 -n 8192 --host 127.0.0.1 --port 11122 --alias qwen3-uncensored |
终端 2:启动 CCR 网关(关闭命令是 ccr stop):
1 | ccr start |
终端 3:配置环境变量并运行 Claude Code:
1 | export ANTHROPIC_BASE_URL="http://127.0.0.1:3456" |
环境变量说明:
| 变量 | 含义 |
|---|---|
ANTHROPIC_BASE_URL |
把 Claude Code 的 API 地址重定向到 CCR 网关(默认 3456 端口) |
ANTHROPIC_AUTH_TOKEN |
CCR 本地生成的访问令牌,让网关识别请求 |
claude --model |
指定使用哪个模型,对应 CCR 配置里的模型名 |
启动后效果
三个终端都起来后,Claude Code 就会通过 CCR 和本地模型对话,效果如下:

请求链路是 Claude Code → CCR(3456) → llama-server(11122) → 本地模型,整个过程不经过任何外部服务,代码和对话内容都留在本机。
常见问题
- 模型名对不上:CCR 配置、
claude --model、/v1/models返回的 id 三处必须完全一致,建议用--alias统一成短名称; - 环境变量不生效:
export只在当前终端有效,新开终端要重新设置,或者写进 shell 配置文件; - 想换模型:修改
config.json里的模型名和 llama-server 的-m参数,重启服务即可; - 关闭 CCR:用
ccr stop,不影响模型服务本身的运行。


