BUZZ AI Gateway
首页 · 博客 · ANTHROPIC_BASE_URL 完整指南

ANTHROPIC_BASE_URL 完整指南:Claude Code 切换自定义端点

你打开 Claude Code 准备干活,但默认端点延迟高、想接 AI 网关用 Prompt Cache、或者团队要求所有 API 流量过自家代理 —— 这时候你需要的就是一个环境变量:ANTHROPIC_BASE_URL。这是 Claude Code 配置里最被低估的一项,设对了 5 秒切完所有流量,设错了能调一晚上。本文把 ANTHROPIC_BASE_URLANTHROPIC_AUTH_TOKEN 的来龙去脉、两种配置方式的取舍、全平台步骤、验证手段、5 个常见错误一次讲清楚。

2026-05-26 · 阅读约 10 分钟 · 适合 Claude Code / Anthropic SDK 用户
2配置方式
3支持平台
5常见错误
1 行即可生效

ANTHROPIC_BASE_URL 是什么

ANTHROPIC_BASE_URL 是 Anthropic 官方 SDK 和 Claude Code 都识别的一个环境变量,作用很简单:覆盖默认的 https://api.anthropic.com,把所有 API 请求路由到你指定的自定义端点。

SDK 拿到 base URL 之后,会在它后面拼接路径(比如 /v1/messages/v1/models),然后照常发请求。除了请求地址变了,其他行为完全一致 —— SDK 不知道、也不关心后面接的是 Anthropic 官方还是 AI 网关、本地 mock、企业代理。

什么时候需要设置 ANTHROPIC_BASE_URL?

不需要设置的场景:你用 Anthropic 官方账户、官方 API key、官方端点,这是默认值,什么都不用改。

两种配置方式

Claude Code 接受两种配置 ANTHROPIC_BASE_URL 的方式,各有取舍:

维度shell exportsettings.json
作用范围整台机器(或当前 shell)单个项目 / 全局任选
多项目切换手动 unset / 改每个项目独立
团队协作每个人自己配可 commit 到仓库
临时调试一行 export 即可改文件、重启 Claude Code
对其他 SDK 的影响所有 Anthropic SDK 都受影响只影响 Claude Code
secret 管理shell rc / direnv / 1PasswordJSON 文件,小心提交

取舍逻辑:

优先级:命令行环境变量 > shell 环境变量 > 项目级 settings.json > 用户级 settings.json > SDK 默认值。同时设了多个,前面的覆盖后面的。

macOS / Linux 配置

主流场景就是写到 shell rc 文件里,常驻生效。先确认你用的是 bash 还是 zsh:

echo $SHELL
# /bin/zsh   → 改 ~/.zshrc
# /bin/bash  → 改 ~/.bashrc(Linux)或 ~/.bash_profile(macOS)

zsh(macOS 默认)

# 追加到 ~/.zshrc
cat >> ~/.zshrc <<'EOF'

# Claude Code 自定义端点
export ANTHROPIC_BASE_URL=https://buzzai.cc
export ANTHROPIC_AUTH_TOKEN=sk-buzz-xxxxxxxxxxxxxxxx
EOF

# 重新加载
source ~/.zshrc

# 验证环境变量已设置
echo $ANTHROPIC_BASE_URL
# https://buzzai.cc

echo $ANTHROPIC_AUTH_TOKEN
# sk-buzz-xxxxxxxxxxxxxxxx

# 启动 Claude Code
claude

bash(大多数 Linux 发行版默认)

# 追加到 ~/.bashrc
cat >> ~/.bashrc <<'EOF'

# Claude Code 自定义端点
export ANTHROPIC_BASE_URL=https://buzzai.cc
export ANTHROPIC_AUTH_TOKEN=sk-buzz-xxxxxxxxxxxxxxxx
EOF

source ~/.bashrc

# 验证
env | grep ANTHROPIC_
# ANTHROPIC_BASE_URL=https://buzzai.cc
# ANTHROPIC_AUTH_TOKEN=sk-buzz-xxxxxxxxxxxxxxxx

claude

fish

# fish 用 set -Ux 持久化全局环境变量
set -Ux ANTHROPIC_BASE_URL https://buzzai.cc
set -Ux ANTHROPIC_AUTH_TOKEN sk-buzz-xxxxxxxxxxxxxxxx

# 验证
echo $ANTHROPIC_BASE_URL
claude

临时单次调用

# 不写进 rc 文件,只对这一次 claude 进程生效
ANTHROPIC_BASE_URL=https://buzzai.cc ANTHROPIC_AUTH_TOKEN=sk-buzz-xxx claude

这种写法适合做对比测试 —— 同一个项目,一次走官方,一次走自定义端点,看结果差异。

Windows 配置

Windows 上 Claude Code 在 PowerShell、cmd、WSL 都能跑,环境变量配置三种环境写法不一样。

PowerShell(推荐)

# 当前会话临时设置(关闭 PowerShell 后失效)
$env:ANTHROPIC_BASE_URL = "https://buzzai.cc"
$env:ANTHROPIC_AUTH_TOKEN = "sk-buzz-xxxxxxxxxxxxxxxx"

# 验证
echo $env:ANTHROPIC_BASE_URL
claude

# 持久化到当前用户(重启 PowerShell 后仍然生效)
[Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "https://buzzai.cc", "User")
[Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", "sk-buzz-xxxxxxxxxxxxxxxx", "User")

# 持久化到机器级别(所有用户共享,需要管理员权限)
[Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "https://buzzai.cc", "Machine")

cmd.exe

:: 当前会话临时设置
set ANTHROPIC_BASE_URL=https://buzzai.cc
set ANTHROPIC_AUTH_TOKEN=sk-buzz-xxxxxxxxxxxxxxxx

:: 验证
echo %ANTHROPIC_BASE_URL%
claude

:: 持久化(用户级,需要重启 cmd 生效)
setx ANTHROPIC_BASE_URL "https://buzzai.cc"
setx ANTHROPIC_AUTH_TOKEN "sk-buzz-xxxxxxxxxxxxxxxx"

WSL(Ubuntu / Debian)

WSL 里就当 Linux 处理,改 ~/.bashrc~/.zshrc。注意 WSL 的环境变量和 Windows 主机的环境变量是隔离的,Windows 那边设的不会自动传到 WSL。

settings.json 配置

Claude Code 的 settings.json 走分层结构:

层级路径用途
用户级~/.claude/settings.json(macOS / Linux)
%USERPROFILE%\.claude\settings.json(Windows)
整台机器默认配置
项目级<项目根>/.claude/settings.json覆盖用户级,仅对当前项目生效
本地级<项目根>/.claude/settings.local.json个人覆盖,通常加到 .gitignore

settings.json 模板:

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://buzzai.cc",
    "ANTHROPIC_AUTH_TOKEN": "sk-buzz-xxxxxxxxxxxxxxxx"
  }
}

关键点:

典型的"团队共享 + 个人 secret"模式:

// .claude/settings.json    ← 提交到仓库
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://buzzai.cc"
  },
  "model": "claude-sonnet-4-6"
}

// .claude/settings.local.json    ← .gitignore
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "sk-buzz-xxxxxxxxxxxxxxxx"
  }
}

这样新同事 clone 仓库后,只需要补一份 settings.local.json 填自己的 token 就能跑,base URL 已经统一在仓库里了。

ANTHROPIC_AUTH_TOKEN vs ANTHROPIC_API_KEY

这是踩坑率最高的一项。两个变量名长得像,但是不通用,搞混直接 401。

变量HTTP Header典型场景
ANTHROPIC_API_KEYx-api-key: <key>Anthropic 官方 API、Anthropic 控制台直发的 key
ANTHROPIC_AUTH_TOKENAuthorization: Bearer <token>大部分 AI 网关、企业代理、第三方端点

怎么判断你拿到的 key 应该用哪个?

Claude Code 1.x 版本起两个环境变量都识别。如果同时设置两个,优先级是 ANTHROPIC_AUTH_TOKEN > ANTHROPIC_API_KEY。建议只设一个,避免混淆。

Anthropic 官方 SDK 的对应规则一致:

// TypeScript SDK
import { Anthropic } from "@anthropic-ai/sdk";

// 官方端点 → 用 apiKey 走 x-api-key
const official = new Anthropic({
  apiKey: process.env.ANTHROPIC_API_KEY,
});

// 自定义端点 → 用 authToken 走 Bearer
const custom = new Anthropic({
  baseURL: "https://buzzai.cc",
  authToken: process.env.ANTHROPIC_AUTH_TOKEN,
});
# Python SDK
from anthropic import Anthropic
import os

# 官方
official = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])

# 自定义端点
custom = Anthropic(
    base_url="https://buzzai.cc",
    auth_token=os.environ["ANTHROPIC_AUTH_TOKEN"],
)

切换后怎么验证生效

设完别急着干活,先做三步验证。

第一步:确认环境变量真的进了进程

# macOS / Linux
echo $ANTHROPIC_BASE_URL
echo $ANTHROPIC_AUTH_TOKEN | head -c 12   # 只看前 12 位,避免泄露

# Windows PowerShell
echo $env:ANTHROPIC_BASE_URL
$env:ANTHROPIC_AUTH_TOKEN.Substring(0, 12)

如果 echo 出来是空,说明你写的 rc 文件不是当前 shell 加载的那个,或者 source 没生效。

第二步:curl 直接打你的端点

# 列出可用模型,大部分网关都实现了 /v1/models
curl -sS "$ANTHROPIC_BASE_URL/v1/models" \
  -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
  -H "anthropic-version: 2023-06-01" | head -40

# 发一条最小的 messages 请求,确认能走通
curl -sS "$ANTHROPIC_BASE_URL/v1/messages" \
  -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-haiku-4-5",
    "max_tokens": 32,
    "messages": [{"role": "user", "content": "ping"}]
  }'

如果 curl 拿到 200 + 正常 JSON 响应 → 端点通、token 对、header 写法对。如果 401 → token 类型搞反了或者 token 失效。如果 404 → base URL 拼错了,通常多了 /v1 后缀。

第三步:Claude Code 实跑 + 看流量去向

# 开 debug 日志启动 Claude Code
ANTHROPIC_LOG=debug claude

# 或者 export 一次
export ANTHROPIC_LOG=debug
claude

debug 日志会打印实际请求的完整 URL,直接确认有没有走到自定义端点。然后到你端点的控制台(BUZZ 控制台 / 自家代理日志)看是否有这次调用的记录,token 计数对不对。

常见错误

过去半年我们看到 Claude Code 用户最常踩的 5 个坑,每个一行修。

错误 1:base URL 末尾带斜杠或多 /v1 后缀

# 错
export ANTHROPIC_BASE_URL=https://buzzai.cc/         # 多斜杠 → //v1/messages
export ANTHROPIC_BASE_URL=https://buzzai.cc/v1       # 多路径 → /v1/v1/messages

# 对
export ANTHROPIC_BASE_URL=https://buzzai.cc

SDK 内部会拼接 /v1/messages,base URL 写裸域名就行。

错误 2:把 token 类型搞反(401)

# 错:网关 token 设成 ANTHROPIC_API_KEY
export ANTHROPIC_API_KEY=sk-buzz-xxx     # 网关收不到 Bearer header

# 对
export ANTHROPIC_AUTH_TOKEN=sk-buzz-xxx

错误 3:rc 文件错配(zsh 用户写到 ~/.bashrc)

# 检查你用哪个 shell
echo $SHELL

# zsh → 写 ~/.zshrc
# bash → 写 ~/.bashrc 或 ~/.bash_profile

错误 4:settings.json env 字段语法错

// 错:env 写成数组
{ "env": ["ANTHROPIC_BASE_URL=https://buzzai.cc"] }

// 错:value 不是字符串
{ "env": { "ANTHROPIC_BASE_URL": https://buzzai.cc } }

// 对
{ "env": { "ANTHROPIC_BASE_URL": "https://buzzai.cc" } }

错误 5:用 GUI 启动 Claude Code 不读 shell 环境变量

macOS 在 Finder 双击启动的 GUI 进程,默认不会加载 ~/.zshrc~/.bashrc。从 Spotlight 启动的 Claude Code Desktop 也是同理。解决办法:

FAQ

Q1: ANTHROPIC_BASE_URL 是 Claude Code 独有的吗?

不是。Anthropic 官方 Python / TypeScript / Go SDK 都识别这个环境变量。Claude Code 只是其中之一。所以你设了之后,本机所有用 Anthropic SDK 的程序都会走自定义端点 —— 这有时候是想要的,有时候不是,记得隔离环境。

Q2: 我能不能在代码里覆盖环境变量的 ANTHROPIC_BASE_URL?

可以。SDK 构造参数优先级最高。new Anthropic({ baseURL: "https://other.example.com" }) 会覆盖环境变量。这适合一段代码要同时调多个端点的场景。

Q3: ANTHROPIC_AUTH_TOKEN 和 ANTHROPIC_API_KEY 哪个优先?

两个同时设,Claude Code 优先用 ANTHROPIC_AUTH_TOKEN(Bearer 模式)。Anthropic SDK 看具体语言实现,行为基本一致,但建议只设一个,避免歧义。

Q4: 切换 base URL 后 Claude Code 的所有功能(Tool Use / Vision / Streaming)还能用吗?

取决于你接的端点。如果是透明转发的 AI 网关(比如 BUZZ),Anthropic 的全部原生功能都保真。如果是某些"中转站"会剥掉 cache_control 或重写 tool_use,功能会受损。判断标准:同一个请求走自定义端点和官方端点,usage.input_tokens 数字应该完全一致。

Q5: 我已经登录 Claude Code 用 Anthropic 账号了,设了 ANTHROPIC_BASE_URL 还会走我账号吗?

不会。ANTHROPIC_BASE_URL + ANTHROPIC_AUTH_TOKEN 同时设置时,Claude Code 走的是环境变量这条路,你之前用 claude /login 登录的 OAuth 凭据被旁路。如果想切回官方账号,unset 这两个变量重启即可。

Q6: 怎么在不同项目间用不同的 base URL?

三种办法:1)每个项目根目录放一份 .claude/settings.json,Claude Code 启动时自动读;2)用 direnv,按目录注入环境变量;3)写 shell 别名,比如 alias claude-buzz='ANTHROPIC_BASE_URL=https://buzzai.cc claude'alias claude-internal='ANTHROPIC_BASE_URL=https://internal.example.com claude'

Q7: ANTHROPIC_BASE_URL 支持 http(非 https)吗?

支持,主要用于本地 mock。例如 export ANTHROPIC_BASE_URL=http://localhost:3000,接你自己写的测试 server。生产环境不要走 http,token 明文传输有风险。

Q8: 我设了 ANTHROPIC_BASE_URL,Anthropic Console 里的用量为什么没动?

因为请求没走 Anthropic 官方,自然 Console 里看不到。你的用量都在自定义端点的控制台。如果你想完全切回 Anthropic 官方,unset ANTHROPIC_BASE_URLANTHROPIC_AUTH_TOKEN,设置 ANTHROPIC_API_KEY,重启 Claude Code 即可。

用 BUZZ AI Gateway 试一下

BUZZ 是一个透明转发的 AI 网关,完全兼容 Anthropic /v1/messages,Prompt Cache / Tool Use / Streaming 全部保真。Claude Code 一行 ANTHROPIC_BASE_URL=https://buzzai.cc 即可切换。注册即送试用额度,按 Token 计费,无月费。

立即注册

本文最初发表于 2026-05-26,作者 BUZZ AI Gateway 团队。

如果文章有事实错误或代码示例不工作,请通过 工单系统反馈。