首页 › tutorials › 第三方模型跑通Claude Code

概述

本教程面向第一次接触 Claude Code、但不想被绑死在 Anthropic 官方计费上的开发者。你将学到:如何用原生安装器装好 Claude Code、用 ANTHROPIC_BASE_URL 把请求流量"换底座"指向第三方模型端点、绕开"协议不兼容"这个最大的坑,并最终让 GLM/DeepSeek 等第三方模型驱动 Claude Code 完成你的第一个真实可运行项目——一个命令行中文锦囊工具 fortune-zh。全程零基础友好,每一步都给到可直接复制的命令与排查手段。预计阅读 12 分钟、动手 40 分钟即可跑通。


前置条件

项 要求 说明
操作系统 macOS / Linux / Windows(WSL2) 三平台均可,本教程命令以 macOS/Linux 为例
终端 任一 POSIX Shell bash/zsh 均可
网络 能访问第三方模型供应商的 API 域名 国内网络访问 GLM/DeepSeek 直连即可
账号密钥 一个第三方模型 API Key 如智谱 GLM、DeepSeek、Kimi、OpenRouter 任选其一
Node.js(可选) 18 及以上 仅在选择 npm 安装方式或跑示例项目时需要

不需要 Claude Pro/Max 订阅,也不需要 Anthropic 官方 API Key。这正是"换底座"的最大价值——Claude Code 的协议层是开放的,驱动它的模型可替换。


一、为什么 Claude Code 能"换底座":先懂原理

很多人把 Claude Code 当成一个"只能用 Claude 模型"的封闭产品。这其实是个误解。Claude Code 本质是一个 Anthropic Messages API 协议的客户端:它把你的指令、文件、工具调用打包成 /v1/messages 格式的请求,发往某个后端地址,再把流式返回渲染成交互界面。

关键在于——这个"后端地址"是由环境变量决定的,而不是写死在程序里。官方文档对此的描述非常精准:

ANTHROPIC_BASE_URL 改变的是请求发送到哪里,而不是哪个模型来回答。要路由到不同模型,需要走 LLM 网关。

也就是说,设对了 ANTHROPIC_BASE_URL,Claude Code 就会把所有流量打到你指定的端点。设错了,你能调一晚上。

理解下面这张"请求路径"心智图,后面所有配置都不会迷路:

flowchart LR
    U([你敲下指令]) --> CC[Claude Code 客户端]
    CC -- "读取环境变量<br/>BASE_URL / AUTH_TOKEN / MODEL" --> DEC{后端协议?}

    DEC -- "原生 Anthropic 格式<br/>/v1/messages" --> NAT[Anthropic 兼容网关<br/>或自建代理]
    DEC -- "OpenAI 格式<br/>/v1/chat/completions" --> CCR[claude-code-router<br/>协议翻译层]

    NAT --> M1[(GLM / Claude<br/>兼容端点)]
    CCR --> M2[(DeepSeek / Kimi<br/>OpenAI 格式端点)]

    M1 -- SSE 流式返回 --> CC
    M2 -- SSE 流式返回 --> CC
    CC --> R([渲染输出])

这张图揭示了一个核心判断:你选的第三方供应商是"Anthropic 协议"还是"OpenAI 协议",决定了你要不要多加一个翻译层。这是本教程踩坑密度最高的一环,先记住它。

控制"换底座"的核心环境变量只有五个,记住这张表你就掌握了 80%:

环境变量 作用 取值示例
ANTHROPIC_BASE_URL 请求发往的后端基址(不带 /v1) http://localhost:3456
ANTHROPIC_AUTH_TOKEN 网关/代理常用的Bearer 鉴权(推荐) sk-xxxxxxxx
ANTHROPIC_API_KEY 官方 x-api-key 头鉴权 sk-ant-xxxx
ANTHROPIC_MODEL 主模型名(填到请求体 model 字段) glm-4.6
ANTHROPIC_SMALL_FAST_MODEL 背景小任务模型(标题、补全等) glm-4.5-air

鉴权小贴士:第三方网关几乎都用 ANTHROPIC_AUTH_TOKEN(走 Authorization: Bearer)。ANTHROPIC_API_KEY 是 Anthropic 原生的 x-api-key 头,少数网关也兼容。两者不要同时设,否则容易互相覆盖。


二、第一步:安装 Claude Code

推荐原生安装器(不依赖 Node 版本,自动管理升级)。打开终端,执行:

macOS / Linux:

curl -fsSL https://claude.ai/install.sh | bash

Windows(PowerShell):

irm https://claude.ai/install.ps1 | iex

如果你机器上已经有 Node.js 18+,也可以走 npm(适合需要全局锁版本的同学):

npm install -g @anthropic-ai/claude-code

装完验证:

claude --version

预期结果: 打印一串版本号(如 2.x.x),说明 CLI 已进入 PATH。

常见问题: - command not found: claude:原生安装器通常装到 ~/.local/bin 或 ~/.claude/local,把它加入 PATH:

bash echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc - npm 报权限错误(EACCES):改用原生安装器,或 npm 配合 --prefix 装到用户目录,避免 sudo。


三、第二步:理解两种配置方式

ANTHROPIC_BASE_URL 有两种生效方式,各有取舍(这是 buzzai 完整指南反复强调的点):

方式 A:Shell 临时/持久导出——适合"先试一把"或多供应商切换。

export ANTHROPIC_BASE_URL="http://localhost:3456"
export ANTHROPIC_AUTH_TOKEN="sk-your-gateway-key"
export ANTHROPIC_MODEL="glm-4.6"
export ANTHROPIC_SMALL_FAST_MODEL="glm-4.5-air"
claude

想持久化就把前四行写进 ~/.zshrc 或 ~/.bashrc。想一次性验证可以用内联:

ANTHROPIC_BASE_URL=http://localhost:3456 claude

方式 B:settings.json 的 env 字段——适合"固定下来,团队共享"。

Claude Code 启动时会读取 ~/.claude/settings.json 里的 env 字段并注入运行时。编辑它:

{
  "env": {
    "ANTHROPIC_BASE_URL": "http://localhost:3456",
    "ANTHROPIC_AUTH_TOKEN": "sk-your-gateway-key",
    "ANTHROPIC_MODEL": "glm-4.6",
    "ANTHROPIC_SMALL_FAST_MODEL": "glm-4.5-air"
  }
}

取舍: 方式 A 灵活、可隔离不同项目(项目级 .claude/settings.json 更精细);方式 B 一劳永逸、适合做成团队统一基线。两者会叠加,命令行变量优先级更高,调试时若改了 JSON 没生效,多半是 Shell 里残留了旧导出。


四、第三步:选定你的"底座"路径

这是决定成败的分岔口。先搞清你手上供应商说哪种协议:

供应商 原生协议 走 Claude Code 的方式
智谱 GLM(open.bigmodel.cn) OpenAI 格式 需路由器(CCR)或兼容网关
DeepSeek(api.deepseek.com) OpenAI 格式 需路由器
Kimi / 通义 / OpenAI 系 OpenAI 格式 需路由器
OpenRouter(/v1/messages 端点) Anthropic 格式 直连,无需路由器
自建 LiteLLM / Cloudflare AI Gateway 可配成 Anthropic 格式 直连
Anthropic 官方 Anthropic 格式 默认,无需配置

判断准则一句话:供应商文档里给的调用示例如果带 /v1/messages,多半能直连;如果是 /v1/chat/completions,就一定要加翻译层。


五、第四步:配置第三方端点(两条路径实操)

路径 A:供应商提供 Anthropic 兼容端点(最省事)

以某 Anthropic 兼容网关 https://gateway.example.com 为例(OpenRouter 的 Anthropic 端点、自建 LiteLLM 都属此类):

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://gateway.example.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-your-gateway-key",
    "ANTHROPIC_MODEL": "glm-4.6",
    "ANTHROPIC_SMALL_FAST_MODEL": "glm-4.5-air"
  }
}

注意:Anthropic 协议的 Base URL 通常不带 /v1 后缀,Claude Code 会自己拼 /v1/messages;而 OpenAI 协议通常带 /v1。以你所用端点的文档为准。

路径 B:OpenAI 格式供应商 + claude-code-router(最通用)

GLM、DeepSeek 等都是 OpenAI 格式,必须加一个翻译层。社区最成熟的是 claude-code-router(CCR):它在本地起一个小服务(如 :3456),把 Claude Code 发来的 Anthropic 请求翻译成目标供应商的 OpenAI 格式,再把响应翻回来。

安装 CCR:

npm install -g @musistudio/claude-code-router

编辑 CCR 配置 ~/.claude-code-router/config.json(以接 GLM 为例):

{
  "Providers": [
    {
      "name": "glm",
      "api_base_url": "https://open.bigmodel.cn/api/paas/v4/chat/completions",
      "api_key": "你的GLM-API-KEY",
      "models": ["glm-4.6", "glm-4.5-air", "glm-4.6-air"]
    }
  ],
  "Router": {
    "default": "glm,glm-4.6",
    "background": "glm,glm-4.5-air",
    "think": "glm,glm-4.6",
    "longContext": "glm,glm-4.6"
  }
}

Router 字段把 Claude Code 内部的"默认/后台/思考/长上下文"四种场景,分别映射到具体模型,这是 CCR 的灵魂。

启动 CCR,并让 Claude Code 指向它:

ccr start                                  # 本地监听 :3456
export ANTHROPIC_BASE_URL="http://localhost:3456"
export ANTHROPIC_AUTH_TOKEN="any-non-empty-string"   # CCR 不校验,但不能为空
claude

预期结果: Claude Code 启动后不再弹出 Anthropic OAuth 登录(因为 ANTHROPIC_AUTH_TOKEN 已就位),直接进入交互界面,背后已是 GLM 在回答。


六、第五步:验证连通(5 秒自检清单)

进入 Claude Code 交互界面后,按顺序做三件事:

  1. 看状态:输入 /status,确认 API endpoint 指向你的自定义地址、Model 是你设的名字。
  2. 看模型:输入 /model,确认当前模型与 ANTHROPIC_MODEL 一致。
  3. 发个炮仗:输入一句简单中文,如"用一句话解释什么是环境变量"。若几秒内流式返回正常中文,整条链路即通。

若卡住,对照这张"5 大常见错误"排查(buzzai 指南同款):

现象 根因 处方
一直转圈、最后超时 BASE_URL 写错或拼了 /v1 去掉多余 /v1,核对域名可达
401 / 鉴权失败 Token 变量名/头不匹配 网关用 AUTH_TOKEN;确认未同时设 API_KEY
工具调用全乱、不读文件 供应商不支持 Anthropic 工具协议 必须加 CCR 翻译层,别直连 OpenAI 端点
报"模型不存在" ANTHROPIC_MODEL 名字写错 用 /model 或供应商文档核准模型 ID
主对话正常、标题生成报错 ANTHROPIC_SMALL_FAST_MODEL 未设或非法 设成一个真实存在的便宜小模型

七、第六步:第一个项目——fortune-zh 中文锦囊 CLI

链路通了,现在用一个真实可运行的小项目验证第三方模型的编码能力。目标:让 GLM 驱动的 Claude Code 从零生成一个单文件 Node.js 工具 fortune-zh,运行后随机打印一条带边框的中式格言。

在 Claude Code 里直接输入(一句话即可,让它自己规划):

在当前目录新建一个 Node.js 单文件项目 fortune-zh:
1. 创建 fortune-zh/index.js,内嵌一个 8 条以上的中文格言数组(带作者)。
2. 每次运行 node index.js 随机输出一条,用 ASCII 边框包裹,自动对齐中英文宽度。
3. 支持 node index.js --all 列出全部。
4. 不要任何外部依赖。完成后自己 node index.js 跑一遍给我看。

预期结果: Claude Code 会自己 mkdir、写 index.js、运行验证。你随后执行:

node fortune-zh/index.js

将看到类似输出:

┌──────────────────────────────────────┐
│  千里之行,始于足下。                    │
│                          —— 《老子》   │
└──────────────────────────────────────┘

这一步成功,意味着第三方模型不仅能聊天,还能在你的项目里读写文件、执行命令、自我验证——Claude Code 的 Agent 能力已完整跑通。这就是"第一个项目"的真正含义:不是你写代码,而是你用自然语言指挥模型完成从创建到验证的闭环。


八、实战小结:可复用的四步心法

  1. 先判协议:Anthropic 直连,OpenAI 加 CCR。
  2. 最小配置:BASE_URL + AUTH_TOKEN + MODEL 三件套先跑通,再补 SMALL_FAST_MODEL。
  3. /status 当探针:改完配置先 /status 再 /model,别急着提问。
  4. Shell 优先级最高:JSON 没生效,先查 Shell 残留导出。

延伸阅读


训练营适用性评估

维度 评估
适合训练营类型 AI 编程入门营 / 成本敏感型团队内训 / 国产生态开发者日
学员基础 零编程经验可跟上安装与配置部分;示例项目建议有 Node.js 基础
预计教学时长 45 分钟讲解 + 30 分钟动手(含 CCR 接入与排障)
难点 协议判别(Anthropic vs OpenAI)、SMALL_FAST_MODEL 缺失引发的隐性报错
可量化验收 学员能在自己机器 /status 显示自定义端点,并跑通 node fortune-zh/index.js
衍生课题 第二轮可接"用 CCR 做按场景路由的多模型策略",第三轮可接"把这套配置固化成团队 Plugin"

参考来源

  1. 模型配置 - Claude Code 官方文档 — Anthropic 官方对 ANTHROPIC_BASE_URL 与 LLM 网关的权威定义,"改变请求发送位置而非回答模型"的原文出处。
  2. ANTHROPIC_BASE_URL 完整指南:Claude Code 切换自定义端点(BUZZ AI Gateway) — 两种配置方式取舍、全平台步骤与 5 大常见错误的系统梳理(2026-05)。
  3. Claude Code 第三方 API 设置:2026 年分步指南(AtlasCloud) — 标准 API 重度用户日均 $13 成本背景下的 GLM/Kimi/DeepSeek 替换实践。
  4. Claude Code 国内环境实战:安装、第三方 Provider 配置与多模型切换(ClaudeCN) — 从 Node 安装到 CLI 安装、兼容接口配置与 VS Code 联动的全流程教程。
  5. claude-code-router(GitHub · musistudio) — Anthropic↔OpenAI 协议翻译层的开源实现,Providers/Router 配置与 transformer 插件机制。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入