Claude Code 接入第三方模型指南
绍完整的配置流程。
原理
Claude Code 启动时会读取~/.claude/settings.json中的env字段,将其作为环境变量注入运行时。我们只需修改ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN,就能把请求指向第三方 API。
核心是Anthropic Messages API 兼容协议——DeepSeek、阿里云百炼等平台都提供了兼容该协议的端点,Claude Code 无需修改即可直接对接。
关键环境变量
| 变量 | 说明 |
|---|---|
ANTHROPIC_BASE_URL | API 端点地址,改为第三方服务地址 |
ANTHROPIC_AUTH_TOKEN | API Key / Token |
ANTHROPIC_MODEL | 默认使用的模型名称 |
ANTHROPIC_DEFAULT_OPUS_MODEL | Opus 级别模型 |
ANTHROPIC_DEFAULT_SONNET_MODEL | Sonnet 级别模型 |
ANTHROPIC_DEFAULT_HAIKU_MODEL | Haiku 级别模型 |
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC | 设为1禁用非必要网络请求(建议开启) |
Claude Code 区分三个模型级别(Opus > Sonnet > Haiku),Fast/Think 模式走 Opus,普通模式走 Sonnet,轻量任务走 Haiku。如果第三方只提供一个模型,把三个值设成同一个即可。
绕过登录验证(必须)
Claude Code 启动时会检查你是否完成了 Anthropic 官方的登录引导,未完成则强制进入登录流程。使用第三方 API 时,需要手动跳过此检查。
编辑~/.claude.json(Windows 路径:C:\Users\<用户名>\.claude.json),添加或修改:
{ "hasCompletedOnboarding": true }如果该文件已有其他内容,只需确保hasCompletedOnboarding字段存在且为true,不要覆盖其他字段。
做完这一步,Claude Code 就不会再要求登录 Anthropic 账号了。
接入 DeepSeek
DeepSeek 提供了原生的 Anthropic 兼容端点。
在~/.claude/settings.json中配置:
{ "env": { "ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic", "ANTHROPIC_AUTH_TOKEN": "sk-你的DeepSeek-API-Key", "ANTHROPIC_MODEL": "deepseek-v4-pro[1m]", "ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-pro[1m]", "ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro[1m]", "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-flash[1m]", "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1" } }获取 API Key:platform.deepseek.com
接入千问(阿里云百炼)
通过阿里云百炼平台的模型服务接入千问模型。
{ "env": { "ANTHROPIC_BASE_URL": "https://token-plan.cn-beijing.maas.aliyuncs.com/apps/anthropic", "ANTHROPIC_AUTH_TOKEN": "sk-你的千问Token", "ANTHROPIC_MODEL": "qwen3.6-plus", "ANTHROPIC_DEFAULT_HAIKU_MODEL": "qwen3.6-plus", "ANTHROPIC_DEFAULT_SONNET_MODEL": "qwen3.6-plus", "ANTHROPIC_DEFAULT_OPUS_MODEL": "qwen3.6-plus" } }获取 Token:阿里云百炼控制台 → 模型服务 → Anthropic 兼容接口。
多环境管理:cenv
如果你和我一样同时用多个模型,手动改 JSON 很烦。我写了一个小脚本cenv,两步切换环境。
安装
第一步:创建脚本文件
touch ~/.claude/cenv chmod +x ~/.claude/cenv第二步:复制以下代码到~/.claude/cenv
#!/usr/bin/env bash set -euo pipefail CLAUDE_DIR="$HOME/.claude" SETTINGS_FILE="$CLAUDE_DIR/settings.json" list_envs() { local current="" if [[ -L "$SETTINGS_FILE" ]]; then current=$(basename "$(readlink "$SETTINGS_FILE")") fi echo "可用环境:" for f in "$CLAUDE_DIR"/claude-settings-*.json; do [[ -f "$f" ]] || continue local filename=$(basename "$f") local name="${filename#claude-settings-}" name="${name%.json}" local marker=" " [[ "$filename" == "$current" ]] && marker="* " echo "${marker}${name}" done echo "" echo "当前: ${current:-未设置}" } switch_env() { local name="$1" local target="$CLAUDE_DIR/claude-settings-${name}.json" if [[ ! -f "$target" ]]; then echo "错误: 环境 '$name' 不存在" exit 1 fi rm -f "$SETTINGS_FILE" ln -s "$target" "$SETTINGS_FILE" echo "已切换到: $name" } case "${1:-}" in ls|list) list_envs ;; use) switch_env "${2:?请指定环境名称}" ;; *) echo "用法: cenv <ls|use <name>>" ;; esac第三步:将~/.claude加入 PATH
在~/.zshrc末尾添加(bash 用户改~/.bashrc):
export PATH="$HOME/.claude:$PATH"**第四步:让zshrc生效
source ~/.zshrc`目录结构示意
以上步骤完成后,你的~/.claude目录应类似:
~/.claude/ ├── cenv # 切换脚本 ├── settings.json # 软链接 → 指向当前激活的配置 ├── claude-settings-ds.json # DeepSeek 配置 ├── claude-settings-qw.json # 千问配置 └── claude-settings-xxx.json # 未来新增的任何配置 # 还有一些别的自动生成的配置,不重要使用
只有两条命令:
cenv ls # 列出所有环境,* 标注当前激活 cenv use qw # 切换到千问切换后直接claude启动即可,不需要重启终端。
原理
cenv 做的事情非常简单:cenv use qw执行时,它删除settings.json,然后创建一个同名的软链接指向claude-settings-qw.json。Claude Code 启动时无感读取,始终只认settings.json,实际内容由软链接决定。
命名约定:cenv use xx中的xx必须对应claude-settings-xx.json的文件名。例如:
cenv use ds → claude-settings-ds.json cenv use qw → claude-settings-qw.json cenv use qianfan → claude-settings-qianfan.jsoncenv ls会自动扫描~/.claude/下所有claude-settings-*.json文件并提取名称,所以新增模型配置时只需按claude-settings-<名称>.json命名放进去,脚本不用改。
注意事项
第三方 API 支持程度不一
不同厂商的 Anthropic 兼容实现深度不同,实际体验可能有差异。建议所有模型级别(Opus/Sonnet/Haiku)都指向同一个模型,避免行为不一致。
Token 消耗
Claude Code 是对话密集型工具,token 消耗较大。使用第三方模型前,确认账户额度充足。
