Claude Code (官方 CLI) 通过两个环境变量指向我方网关, 直接使用全部 Claude / Bedrock 模型
POST /v1/messages
Claude Code 是 Anthropic 官方的命令行 AI 助手, 默认走 `api.anthropic.com`. 把它指向**我方网关** (`api.router.ai`) 后, 立即获得平台的全部 Claude 模型 + 统一计费 + 多模型混合路由能力, 0 代码改动. ## 一、两个核心环境变量 中转站配置 Claude Code **只要这两个变量**: | 变量 | 值 | 作用 | |---|---|---| | `ANTHROPIC_BASE_URL` | `https://api.router.ai` | 网关根地址. **填到根域名即可, 不要加 `/v1` 也不要加 `/v1/messages`** | | `ANTHROPIC_AUTH_TOKEN` | `sk-你的 token` | 平台代理 token, 作为 `Authorization: Bearer xxx` 发送 | > ⚠️ **不要用 `ANTHROPIC_API_KEY`** — 那个会发 `x-api-key` 头, 我方网关只认标准 `Authorization: Bearer`. > ⚠️ **`/v1` 不要加** — Claude Code HTTP client 内部自动 append `/v1/messages` 到 BASE_URL. 加了 `/v1` 会导致请求拼成 `/v1/v1/messages` 命中 404 (依据 Anthropic 官方 LLM Gateway 文档). --- ## 二、三种配置方式 (任选一种) ### 方式 1 · 临时环境变量 (测试推荐, 最快) ```bash export ANTHROPIC_BASE_URL=https://api.router.ai export ANTHROPIC_AUTH_TOKEN=sk-你的token claude ``` 只在当前终端会话生效, 关掉就没了, 适合**先验证能不能通**. --- ### 方式 2 · 写进 shell 配置 (永久, 最常用) **macOS** (默认 zsh): ```bash cat >> ~/.zshrc <<'EOF' export ANTHROPIC_BASE_URL=https://api.router.ai export ANTHROPIC_AUTH_TOKEN=sk-你的token EOF source ~/.zshrc ``` **Linux** (bash): ```bash cat >> ~/.bashrc <<'EOF' export ANTHROPIC_BASE_URL=https://api.router.ai export ANTHROPIC_AUTH_TOKEN=sk-你的token EOF source ~/.bashrc ``` **Windows PowerShell**: ```powershell $env:ANTHROPIC_BASE_URL = "https://api.router.ai" $env:ANTHROPIC_AUTH_TOKEN = "sk-你的token" ``` 要永久生效, 写进 `$PROFILE` 或在「系统环境变量」里加. --- ### 方式 3 · 写进 Claude Code 配置文件 (推荐, 不污染全局) 编辑 `~/.claude/settings.json` (没有就新建): ```json { "env": { "ANTHROPIC_BASE_URL": "https://api.router.ai", "ANTHROPIC_AUTH_TOKEN": "sk-你的token" } } ``` 这种方式**只对 Claude Code 生效**, 不会影响你其他工具的 ANTHROPIC_* 变量, 长期推荐. --- ## 三、模型名映射 (按需) 我方网关默认透传 Claude Code 发的 model 名 (例如 `claude-sonnet-4-5-20250929` / `claude-opus-4-7`). 如果你想**强制覆盖**默认模型 (例如全部默认调成 Haiku 省钱), 加这三个变量: ```bash export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-7 export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-5-20250929 export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5-20251001 ``` 平台支持的 Claude 模型完整列表见 **模型广场 → Claude 系列**. 模型名错会上游返 400, 客户端可见原始错误. --- ## 四、验证生效 启动后输入 `/status` 命令, 应看到: ``` Base URL: https://api.router.ai Auth: Bearer sk-...**** Model: claude-... ``` 如果 Base URL 仍是 `api.anthropic.com`, 说明环境变量没生效, 检查方式: 1. 重新打开终端 (shell 配置改了要 source) 2. `echo $ANTHROPIC_BASE_URL` 确认值是根域名 (**不带 /v1**) 3. 方式 3 的 settings.json 检查 JSON 语法是否正确 --- ## 五、常见坑速查 | 现象 | 原因 | 修法 | |---|---|---| | 404 / `Not Found` 含路径 `/v1/v1/messages` | `BASE_URL` 多加了 `/v1` 后缀 → SDK 再 append `/v1/messages` 拼成双 `/v1` | 去掉 `/v1`, 只保留根域名 | | 仍走官方 / 401 / `please log in` | `~/.claude/.credentials.json` 残留 OAuth token, 优先级高于环境变量 | 删掉该文件: `rm ~/.claude/.credentials.json` | | `model not found` 类错误 | 客户端发的 model 名不在我方支持列表 | 用上面的 `ANTHROPIC_DEFAULT_*_MODEL` 强制映射, 或检查模型广场 | | `401 Unauthorized` | token 配错或过期 | cloud admin 后台 → 令牌管理, 重新生成 | | `429 / 限流` | token RPM/TPM 超限 | 后台调整 token 限流配置 或 切到更高额度 token | | 流式响应不工作 | 中间代理 (Cloudflare 自建 / 公司防火墙) buffer SSE | 直接连 `api.router.ai` 不走中间代理 | | 所有请求 422 | curl 测试时 prompt 含裸换行 (Claude Code SDK 不会撞这个) | 用 SDK 而不是手撸 curl | --- ## 六、完整一键脚本 (复制粘贴版) ```bash # 1. 配置 (一次性) mkdir -p ~/.claude cat > ~/.claude/settings.json <<'EOF' { "env": { "ANTHROPIC_BASE_URL": "https://api.router.ai", "ANTHROPIC_AUTH_TOKEN": "sk-在这里贴你的token" } } EOF # 2. 清理可能残留的 OAuth (跳到 Step 3 如果是新机器) rm -f ~/.claude/.credentials.json # 3. 启动 + 验证 claude # 进入 Claude Code 后: # /status — 应看到 Base URL = https://api.router.ai # 你好 (随便一句中文测试) — 应正常返回 ``` --- ## 七、跟官方账号共存 希望**保留官方账号但临时切到我方**? 用方式 1 临时变量, 退出终端后自动回到官方. 或者维护两个 settings 文件: ```bash # 切到我方 ln -sf ~/.claude/settings.router.json ~/.claude/settings.json # 切回官方 ln -sf ~/.claude/settings.official.json ~/.claude/settings.json ``` --- ## 八、可观测性 平台后台为每次 Claude Code 调用记录: - 请求 + 响应 token 数, 耗时, 命中模型 - usage / cache_read_tokens / cache_creation_tokens (Claude prompt cache 透明跟随) - 流式 chunk 数, TTFB, 完整响应内容 (合规审计需要) 代理 portal 可在「**计费流水**」 / 「**聊天调用**」 看到全部历史. --- ## 九、技术细节 (按需了解) Claude Code 启动时会请求 `${ANTHROPIC_BASE_URL}/v1/models` 探测可用模型. 调用时请求 `${ANTHROPIC_BASE_URL}/v1/messages` (流式 / 非流式) 和可能的 `${ANTHROPIC_BASE_URL}/v1/messages/count_tokens` (token 估算). 我方网关三个端点都已实现, 兼容 Anthropic 官方协议.
200 — 成功