尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Claude Code 集成国产大模型:claude-code-router 配置教程

Claude Code 集成国产大模型:claude-code-router 配置教程 先说结论Claude Code 本身是 Anthropic 官方出的终端编程智能体效果确实顶但对很多国内开发者和学习者来说官方 API 有不少现实门槛——绑定海外支付方式、按美元计费、接口稳定性也看网络心情。所以社区现在最流行的玩法就是给 Claude Code 装一个“协议翻译层”让它能调用 DeepSeek、Kimi、智谱 GLM、通义千问这些国产大模型。这套方案既能保留 Claude Code 的 Agent 工作流读代码、改文件、跑命令、提 commit又能把成本打下来接口还是国内直连非常舒服。这篇教程面向纯小白我会从 Node.js 安装开始一路讲到 Claude Code 本体、路由层 claude-code-router 的配置再给你一套可以直接抄作业的 DeepSeek 配置文件最后附上我踩过的坑和排查清单。整个方案不需要写一行代码逻辑全程命令 配置文件。1. 先把思路捋清楚Claude Code 怎么“改嫁”国产模型很多人第一次听说 Claude Code 能接国产大模型第一反应是“这俩协议都不一样能通吗”。能通而且原理比你想的简单。1.1 Claude Code 是什么它到底怎么工作Claude Code 是 Anthropic 推出的命令行 AI 编程助手。你不需要在编辑器里装插件直接在一个终端里启动用自然语言给它下指令比如“看一下这个项目告诉我哪里性能有瓶颈”它会自己去读文件、跑测试、改代码甚至帮你执行 git 命令。它每干一件事背后其实都在做同一个循环把你的指令转成请求发给大模型大模型返回“我准备做这些动作”然后它执行这些动作再把你看到的输出结果继续发给大模型直到任务完成。这个循环里最关键的部分是它跟模型之间有一套固定的“对话格式”。官方版 Claude Code 默认只认 Anthropic Messages API 格式而且默认只连 Anthropic 自家的模型。你要是直接把请求地址换成 DeepSeek 或者别的国产模型两边语言不通根本聊不下去。1.2 国产模型的优势便宜、直接、没门槛Claude Code 官方模型很强但“强”和“适合所有人”是两回事。官方接口需要 Anthropic 账号绑海外支付方式按用量计费对很多学生党、个人开发者来说门槛不低。国产模型这边就是另一番光景了。DeepSeek、Kimi、GLM、通义千问这些国内注册就能用充值就是微信/支付宝扫一下成本相比官方 API 直接低一个量级赠金还经常送。更重要的是这些模型基本都提供 OpenAI 兼容接口而 OpenAI 的消息格式在开源生态里已经是事实标准这就给了做“中间转换层”的机会。1.3 集成原理一个“翻译官”搞定协议转换所以方案的核心就是找一个“翻译官”把 Claude Code 的 Anthropic 格式请求翻译成 OpenAI 格式发给国产模型再把国产模型的返回翻译回 Claude Code 能理解的格式。这个“翻译官”就是 claude-code-router社区里也常叫 CCR。它底层用的是 LiteLLM 这套成熟的模型网关支持几百种模型的转发也支持你自定义任意 OpenAI 兼容接口。你只要写一个 JSON 配置文件把国产模型的 API 地址、Key、模型名填进去再在环境变量里把 Claude Code 的请求地址指向 CCR 的本地代理整个链路就通了。一句话总结这个思路Claude Code 负责干活CCR 负责翻译国产模型负责思考。2. 环境准备把 Node.js 和 Claude Code 本体装好在搞串联之前先把地基打好。磨刀不误砍柴工这一步我建议按顺序来不要跳。2.1 安装 Node.jsLTS 版本就够Claude Code 和 CCR 都是基于 Node.js 的 npm 包所以 Node.js 是第一个必须装的组件。到 Node.js 官网下载 LTS 版本不是 Current 版本Windows 用户直接下载 .msi 安装包macOS 用户下载 .pkgLinux 用户可以用 nvm 装。安装过程中全部默认选项即可Windows 用户特别留意一下安装向导里“Add to PATH”那个选项要勾上不然一会儿命令行找不到 node。装完打开一个新的终端输入node -v npm -v能正常输出版本号比如 v20.x.x 和 10.x.x就说明装好了。2.2 给 npm 换个国内源能省很多时间npm 默认源在国外装大一点的项目容易卡到怀疑人生。这一步强烈建议先做npm config set registry https://registry.npmmirror.com设置完之后可以验证npm config get registry输出了 npmmirror 的地址就说明换源成功。后面所有 npm 安装命令都会快很多。2.3 安装 Claude Code 本体直接在终端执行npm install -g anthropic-ai/claude-code全局安装装完确认一下claude --version如果能输出版本号说明 Claude Code 本体已经就位。注意现在先别急着运行claude命令因为默认情况下它会进入官方登录流程。我们接下来要做的是让它先“改道”再去启动它。2.4 三个环境变量提前搞懂不踩坑Claude Code 在启动时会按照一定的优先级去读取 API 地址和令牌。后面我们所有“改道”操作本质就是通过环境变量实现的。你需要记住三个变量ANTHROPIC_BASE_URLAPI 请求的基础地址。默认是 Anthropic 官方地址我们要改成 CCR 本地代理的地址。ANTHROPIC_AUTH_TOKEN自定义令牌。CCR 模式下它并不真正校验令牌内容你随便填一个字符串让它能通过就行真正的 Key 在 CCR 的配置文件里。ANTHROPIC_API_KEY官方 API Key。这个变量是个大坑如果它被设置了Claude Code 会优先读它直接连到官方地址然后报 401。如果你之前配置过务必先把它清掉。注意这三个变量的优先级关系是 ANTHROPIC_API_KEY 优先于 ANTHROPIC_AUTH_TOKEN。只要 ANTHROPIC_API_KEY 存在Claude Code 就会拿着它去连 ANTHROPIC_BASE_URL 指向的地址。所以我们后面设置环境变量时一定要确认它没有被设置。3. 安装配置路由层claude-code-router 独立部署这是整套方案里最核心的一步也是标题里“集成”两个字的真正含义所在。我会先把 CCR 是什么说清楚再一步步配置。3.1 claude-code-router 是什么和 cc-switch 有什么区别claude-code-router 是 GitHub 上社区维护的开源项目musistudio/claude-code-router它实际上是一个本地代理服务。安装之后它会监听你电脑上的一个端口比如 3456。Claude Code 的所有请求都会发送到这个端口CCR 再根据你配置文件里的规则把请求转发给 DeepSeek、Kimi 或者其他模型。社区里还有一个工具叫 cc-switchCC Switch它的定位更偏向于“切换器”把官方 API 和各个国产模型的 API 配置提前存好需要哪个一键切换。CC Switch 有图形界面操作直观但它的实现本质是帮你修改 Claude Code 的环境配置和认证信息适合只想快速换模型、不想关心底层协议的人。而 CCR 走的是“本地代理 协议翻译”路线好处是配置一次之后非常稳定不依赖官方登录态而且支持更复杂的模型映射比如把 Claude 的不同模型分别映射到不同的国产模型上。这篇教程我以 CCR 为主方案因为它才是“集成”玩法的核心同时也是社区里讨论最多、坑也最清楚的一条路。3.2 安装 CCR继续在终端执行npm install -g musistudio/claude-code-router安装完你会多一个claude-code-router命令有些版本也提供ccr缩写命令。你可以先看一下它的帮助信息claude-code-router --help如果你的版本比较新输出的命令名可能略有差异不影响使用。如果发现运行不了多半是安装源的问题回到第 2.2 步检查一下 npm 源重新装一遍。3.3 编辑 config.json以 DeepSeek 为例的完整配置CCR 启动时会读取一个配置文件路径在用户主目录下的~/.claude-code-router/config.json。第一次运行它可能不会自动创建这个文件需要手动建目录、建文件。最稳妥的方式是在你的用户主目录下新建.claude-code-router文件夹然后在里面新建config.json。我直接把一份可运行的 DeepSeek 配置贴出来你可以先复制过去再逐项理解{ provider: { default: deepseek, deepseek: { base_url: https://api.deepseek.com, api_key: sk-你的DeepSeek密钥, models: [ deepseek-chat, deepseek-reasoner ] } }, model_mapping: { claude-sonnet-4-20250514: deepseek-chat, claude-opus-4-20250514: deepseek-chat }, env: { LITELLM_MODEL: deepseek-chat, ANTHROPIC_SMALL_FAST_MODEL: deepseek-chat } }这个配置里只有三块内容理解它你就能举一反三provider模型提供方。default表示默认走哪个提供方这里填的是 deepseek代表默认所有请求都发给 DeepSeek。然后定义了一个名为deepseek的提供方base_url填 DeepSeek 的 OpenAI 兼容接口地址api_key填你在 DeepSeek 开放平台申请的密钥models列的是可用的模型名。model_mapping模型映射。Claude Code 会按原始的 Claude 模型名请求比如 claude-sonnet-4-20250514但 DeepSeek 不认识这个名字所以这里把它映射成 deepseek-chat。如果你常用的是 Claude 的 opus 模型也一并映射过去。env环境覆盖。LITELLM_MODEL让 CCR 在转发时统一使用 deepseek-chatANTHROPIC_SMALL_FAST_MODEL是 Claude Code 内部用于快速任务的“小模型”参数也一并指向 deepseek-chat。DeepSeek 的 API Key 需要去 DeepSeek 开放平台注册并创建创建之后复制以sk-开头的字符串替换掉上面配置里的占位文字。不用纠结选哪种模型新用户直接选 deepseek-chat 就行它就是官方主推的对话/编程模型deepseek-reasoner 是推理模型后面我会说要慎用。3.4 启动路由服务让 Claude Code 走本地代理配置文件保存好之后先在终端启动 CCRclaude-code-router启动成功的话终端会显示监听在某个端口通常默认是 3456。保持这个终端不要关它就是你的本地“翻译官”。然后新开一个终端设置环境变量。Windows PowerShell 用户执行$env:ANTHROPIC_BASE_URLhttp://127.0.0.1:3456 $env:ANTHROPIC_AUTH_TOKENlocal-test-tokenmacOS / Linux 用户执行export ANTHROPIC_BASE_URLhttp://127.0.0.1:3456 export ANTHROPIC_AUTH_TOKENlocal-test-token如果你刚才检查发现存在ANTHROPIC_API_KEY先删掉它unset ANTHROPIC_API_KEYWindows PowerShell 则是Remove-Item Env:ANTHROPIC_API_KEY环境变量设置好之后在同一个终端启动 Claude Codeclaude此时它不会再走官方登录流程而是老老实实把请求发到 CCR 的本地地址。你可以直接给它一句最简单的话“你好请回复收到”。如果 CCR 那边日志显示转发到了 deepseek并且 Claude Code 里正常回复了就说明集成已经打通。注意CCR 的终端窗口不要关关了 Claude Code 就找不到翻译官了。如果你用的是 VS Code 这类集成终端建议拆两个终端一个跑 CCR一个跑 Claude Code。3.5 扩展一个配置接入 Kimi、GLM、Qwen 甚至本地模型配置文件的写法一旦理解接其他国产模型就是复制粘贴的事。以 Kimi 为例你只需要在provider里加上一个 moonshot 的提供方然后修改default指向它{ provider: { default: moonshot, moonshot: { base_url: https://api.moonshot.cn/v1, api_key: sk-你的Kimi密钥, models: [ kimi-k2-0711-preview, moonshot-v1-32k ] } }, model_mapping: { claude-sonnet-4-20250514: kimi-k2-0711-preview }, env: { LITELLM_MODEL: kimi-k2-0711-preview, ANTHROPIC_SMALL_FAST_MODEL: moonshot-v1-32k } }GLM 和通义千问同理GLM 的接口地址是https://open.bigmodel.cn/api/paas/v4通义千问的兼容接口是https://dashscope.aliyuncs.com/compatible-mode/v1。你只需要注意两点一是模型名必须填平台真实存在的模型名二是base_url结尾要不要带/v1要看平台文档填错了就会报 404 或者连接错误。如果你想接本地跑的 Ollama 模型CCR 同样支持。因为 Ollama 本身也会暴露一个 OpenAI 兼容接口http://localhost:11434/v1。你只要把 base_url 指过去模型名填成你本地拉取的模型就行比如qwen2.5-coder:14b。本地模型的好处是完全免费、数据不出机器坏处是模型太小的话代码理解能力明显不如云端大模型适合拿来做简单任务、离线环境或者隐私敏感场景。对新手来说我建议先别碰 Ollama把云端模型跑通了再说不然你分不清是配置问题还是模型能力问题。4. 实操验证从“能回话”到“能干活”很多新手走到“能回话”这一步就觉得成功了但你用 Claude Code 不是来聊天的是让它帮你干活的。所以验证要分三步走能不能读文件、能不能改文件、能不能执行命令。4.1 在真实项目里测试文件读取随便找一个你本地的代码项目进入目录后启动 Claude Codecd /path/to/your/project claude然后输入先看一下这个项目的目录结构告诉我用了什么技术栈如果它能够列出目录、指出关键文件、说出技术栈说明“读文件”这个链路是通的。你可以继续追问某个文件的内容看它能不能准确引用。4.2 测试代码修改与生成让它在项目里新建一个文件在 utils 目录下创建一个 format.js里面导出一个格式化日期时间的函数输入时间戳输出 YYYY-MM-DD HH:mm:ss这一步如果顺利你会看到它自动创建目录、创建文件、写入内容。如果模型能力够强它还会顺手补上注释。这里要注意观察两端一是在你运行 Claude Code 的终端里它会实时展示“将要执行什么操作”比如创建文件前会展示文件路径执行命令前会展示完整命令并等待你确认。二是在 CCR 的终端里你会看到一次请求里的工具调用数量和耗时这些信息对判断模型质量很有用。4.3 检查 CCR 日志流量是否真的走了国产模型集成成功不代表每一步都对。判断请求到底去了哪里最直接的办法就是看 CCR 终端里的日志。正常情况日志里会记录每次请求转发的目标模型比如显示deepseek/deepseek-chat。如果日志显示你在请求anthropic/xxx说明 Claude Code 绕过了 CCR直接连到了官方地址回去检查环境变量。另一种常见情况是Claude Code 能正常回复但 CCR 日志里只有少量转发记录你觉得很奇怪。这是因为 Claude Code 内部有上下文缓存机制会在同一个会话里复用一部分缓存结果所以不是每一步操作都会触发新的模型请求这是正常的。4.4 确认工具调用链路完整国产模型接进 Claude Code 之后最大的差异点在于“工具调用”的稳定性。Claude Code 本质是靠模型的工具调用来干活的模型必须能输出“我要调用 read_file 工具、参数是 xxx”的结构化指令。你可以在测试时特别要求它执行一个稍微复杂点的任务比如把当前目录下所有 .js 文件的行数统计出来并生成一个 report.md如果它能分多次读文件、多次执行统计命令最后写出报告说明工具调用链路是完整的。如果它只回答你一段话但没有实际执行说明模型可能没把工具调用当回事这种时候换模型或者调模型参数往往比折腾 Claude Code 配置更有效。5. 国产模型选型对比做编程 Agent 哪个更顺手这一节直接给结论不同模型在 Claude Code 里的体验差距很大不是“能接就能用”。5.1 主流国产模型接入参数速查表模型API 地址推荐模型名优势注意点DeepSeekhttps://api.deepseek.comdeepseek-chat编程能力强、便宜、工具调用稳定别用 deepseek-reasoner 做 Agent耗时太长Kimi月之暗面https://api.moonshot.cn/v1kimi-k2-0711-preview长上下文、中文理解好长任务偶尔会“话多”需要你把任务拆细智谱 GLMhttps://open.bigmodel.cn/api/paas/v4glm-4-plus / glm-4-air中文灵活、性价比高海外生态兼容细节偶尔有小坑通义千问https://dashscope.aliyuncs.com/compatible-mode/v1qwen-plus / qwen-max阿里云生态、工具调用规范需要开通对应模型服务权限Ollama 本地模型http://localhost:11434/v1qwen2.5-coder:14b 等完全免费、数据不出机器对硬件要求高小模型干活能力有限5.2 为什么我不推荐 DeepSeek 的 reasoner 模型很多人看 DeepSeek 的 deepseek-reasoner 很火就顺手把它配进 Claude Code。实际跑起来你会发现它确实能输出很长的思考过程但在 Claude Code 这种“一步一工具”的场景里推理模型每一次都要想很久一个简单的读文件操作可能要等十几秒体验非常割裂。更关键的是reasoner 在长 Agent 流程里容易产生“过度思考”经常该执行工具的时候还在分析导致整个任务节奏拖得很慢。我的建议很直接日常编程任务统一用 deepseek-chat把 deepseek-reasoner 留给你需要深度解题、单独提问的场合而不是塞进 Agent 工作流。5.3 不同预算和使用场景的选型建议如果你是个人开发者想体验“Claude Code 工作流 国产模型性价比”首选 DeepSeek。它现在是国内编程类模型里对工具调用支持得最顺的一档而且每百万 token 的成本低到可以忽略适合长期挂着跑。如果你经常要处理超长上下文项目比如让 Claude Code 读一个大型 monorepoKimi 的优势就出来了长文本不容易“忘事”但你要接受它在个别复杂任务里多话、效率略低的问题。如果你已经在用阿里云那直接上通义千问最省事权限管理、账单都跟自家账号打通工具调用也很稳。如果你有隐私需求或者经常在无网环境干活再考虑 Ollama 本地模型。本地模型建议直接上 14B 以上的参数规模7B 的模型拿来写代码基本属于折磨自己。6. 常见问题与排查技巧实录这套方案我折腾过好几轮下面这些坑基本都是新手必经之路。我把现象和解决办法列成一张速查表你遇到问题直接对应着查。现象可能原因解决办法启动 Claude Code 后报 401 Unauthorized设置了 ANTHROPIC_API_KEY请求带着官方 Key 走到了错误地址unset ANTHROPIC_API_KEY或清掉系统环境变量里的对应项请求卡住CCR 日志没有动静CCR 没启动或者 ANTHROPIC_BASE_URL 设置错误确认 CCR 终端还开着确认地址是 http://127.0.0.1:3456 而不是 https模型能回话但就是不执行工具模型本身工具调用能力弱或误用了推理模型换 deepseek-chat 这类非推理模型确认 model_mapping 的模型名正确回答到一半突然截断模型输出的 max_tokens 不够Claude Code 一次请求希望模型输出很长的工具调用序列在 CCR 的转发参数里调大 max_tokens比如设置到 4096 以上每次启动都要重新设置环境变量你设置的是临时环境变量新终端就失效了把 export 命令写进 shell 配置文件~/.zshrc 或 ~/.bashrc或用系统环境变量面板持久化请求偶尔打到官方 API 的感觉模型名默认走 Claude 官方映射被 Claude Code 内置逻辑绕过了代理把 model_mapping 配全确保所有 Claude 模型名都有对应的国产模型Westminster 模式下报网络错误本地代理端口被占用换一个端口比如 CCR 启动参数指定端口再同步修改 ANTHROPIC_BASE_URLCCR 启动报配置文件错误JSON 格式写错了或者缺少必填字段到 JSON 在线校验工具里粘贴验证注意最后一个字段后面不要有多余逗号6.1 关于 401 的深度排查上面表格里的 401 值得单独展开说。很多人第一次配完明明 ANTHROPIC_BASE_URL 和 ANTHROPIC_AUTH_TOKEN 都设置了仍然报 401。第一反应换个思路先打印当前环境变量看看是不是残留了 ANTHROPIC_API_KEY。Windows 上可以用Get-ChildItem Env: | Where-Object { $_.Name -like ANTHROPIC* }macOS / Linux 上env | grep ANTHROPIC如果有 ANTHROPIC_API_KEY 存在直接删掉再试。如果只有一个 ANTHROPIC_BASE_URL 但指向的是官方地址也是同样的问题逻辑Claude Code 在某些版本里会优先读取内置的官方路由只有当 ANTHROPIC_BASE_URL 明确设置为非官方地址时才走自定义路由。6.2 关于“模型不干活只聊天”的深度解析这个现象在 DeepSeek 上其实不常见但在某些中文模型的早期兼容版本里很典型。原因多半不是 Claude Code 配置问题而是模型在“该输出工具调用”的时候输出了一段自然语言。解决办法依次尝试第一换一个更稳的模型比如从 deepseek-reasoner 换成 deepseek-chat第二把任务描述得更简洁避免长段落指令干扰模型的输出判断第三检查 CCR 的底层 LiteLLM 版本npm update -g musistudio/claude-code-router升级到最新版很多兼容性问题都是靠版本迭代修掉的。6.3 关于输出截断的补充Claude Code 在复杂任务里一次请求会期望模型输出一系列工具调用。国产模型默认的 max_tokens 上限往往低于 Claude 官方模型这就会导致模型还没说完整套工具调用计划输出就被掐断了表现出来就是“回答到一半戛然而止”。如果你用的模型在平台上支持调高 max_tokens可以在 CCR 的 provider 配置里加上请求体重写参数。具体字段名以你安装的 CCR 版本 README 为准但思路就是把 max_tokens 调大最好不低于 4096。这一条在接 Kimi 和 GLM 时尤其重要它们默认值普遍偏保守。6.4 关于日志和调试的独家技巧Claude Code 自身也有日志遇到疑难问题不要只盯 CCR。进入 Claude Code 后输入/status可以查看当前会话的 API 状态和模型信息输入/cost可以看到 token 消耗估算。这两条命令是排查“到底有没有走国产模型”的终极证据。另外我建议新手全程用两个终端观察一个跑 CCR、一个跑 Claude Code。一旦发现异常先在 CCR 日志里找有没有转发记录。如果 CCR 日志干干净净说明请求根本没到 CCR往环境变量方向查如果 CCR 日志里有请求但报错了把报错信息复制下来搜索绝大多数都是模型名写错或 Key 没填对。最后分享点个人经验这套配置我用了小半年日常主力就是 DeepSeek备一个 Kimi 处理超长文档。实际体验下来国产模型跟 Claude Code 结合最舒服的场景不是让它一口气写几百行代码而是让它做代码审查、写测试、改 bug这种“小步快跑”的任务国产模型完成度很高成本几乎可以忽略。我个人的习惯是新项目第一次整体架构设计、或者涉及大范围重构时我还会切回官方模型认真讨论平时迭代开发、补测试、查 bug全部挂在 DeepSeek 上。这样既保住了关键时刻的质量又不用一直为日常琐碎任务烧钱。最后再提醒一件事Claude Code 迭代速度很快模型名也会随官方更新而变化如果你哪天发现之前能用的配置突然失效先去搜一下最新的模型映射名称多半是模型名过期而不是配置被破坏。这个工具链的价值在于“接口是标准的模型可以随便换”只要把这个思路理解透未来不管出什么新国产模型你都能在 5 分钟内接上去。
返回列表