跳转到内容

Claude Code 接入 DeepSeek:ANTHROPIC_BASE_URL 怎么配,以及区域限制报错怎么绕开

约 10 分钟 难度:进阶 动手章

三个环境变量就能把 Claude Code 切到 DeepSeek:ANTHROPIC_BASE_URL 指向 DeepSeek 的 Anthropic 兼容端点,ANTHROPIC_API_KEY 放 DeepSeek 的密钥。不用改任何代码,模型名会在 DeepSeek 服务端自动映射到对应的 DeepSeek 模型。写进 settings.jsonenv 字段比每次开终端手动 export 更持久,也更容易在多台机器之间同步。

变量角色是否本文需要
ANTHROPIC_BASE_URL请求发到哪个服务端,默认是官方 Anthropic API需要,改成 DeepSeek 的端点
ANTHROPIC_API_KEY官方认证方式下使用的密钥需要,放 DeepSeek 的 Key
ANTHROPIC_AUTH_TOKEN自定义授权时,会作为 Authorization 头的 Bearer token 发出,用于对接第三方网关的鉴权方式和官方不一致的场景DeepSeek 的兼容端点直接用 ANTHROPIC_API_KEY 即可,不需要这个

这三个变量都属于 Claude Code 官方文档列出的环境变量,ANTHROPIC_BASE_URLANTHROPIC_AUTH_TOKEN 明确是为「自定义 Anthropic API 部署」场景准备的。

配置方式一:shell 里 export(临时,验证用)

Section titled “配置方式一:shell 里 export(临时,验证用)”
Terminal window
export ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
export ANTHROPIC_API_KEY="sk-你的DeepSeekKey"
claude

关掉终端就失效,适合先跑一次确认能不能用,不适合长期依赖。

配置方式二:写进 settings.json(推荐,持久生效)

Section titled “配置方式二:写进 settings.json(推荐,持久生效)”

在用户级配置(~/.claude/settings.json,Windows 下是 C:\Users\<用户名>\.claude\settings.json)或项目级配置(项目目录下的 .claude/settings.json)里写:

{
"env": {
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
"ANTHROPIC_API_KEY": "sk-你的DeepSeekKey"
}
}

settings.jsonenv 字段的值会在 Claude Code 启动时被设置为对应的环境变量。配置来源有优先级:企业管理策略 > 命令行参数 > 本地项目设置(.claude/settings.local.json)> 共享项目设置(.claude/settings.json)> 用户设置(~/.claude/settings.json)。想让整个团队共用同一份,放共享项目设置里提交进仓库;只想自己用,放用户设置或者本地项目设置(后者默认在 .gitignore 里)。

不要只看「能跑起来」就当作生效,因为报错和正常响应看起来都可能是别的原因导致的。跑一次会话后执行:

/status

看输出里配置来源那一行,确认当前生效的 ANTHROPIC_BASE_URL 确实来自你改的那份配置文件,而不是被更高优先级的配置覆盖了。这比直接问 Claude「你现在用的是什么模型」更可靠,因为模型本身不知道自己被路由到了哪里,问出来的答案是训练数据里的自我认知,不是运行时的真实状态。

区域限制报错:unsupported_country_region_territory

Section titled “区域限制报错:unsupported_country_region_territory”

走官方 Anthropic API 或 AWS Bedrock 直连时,可能会遇到这个报错:

API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"Access to Anthropic models is not allowed from unsupported countries, regions, or territories. Please refer to https://www.anthropic.com/supported-countries for more information."}}

这是基于请求来源地域的合规限制,不是网络代理配置错了,也不是 CLI 的 bug。社区排查记录里有个反直觉的证据:同一份配置,请求经过 AWS 宁夏区域(cn-northwest-1)时报错,换成首尔区域(ap-northeast-2)后完全正常跑通,说明拦截点是在服务端识别请求来源地域时触发的,不是本机网络层面的问题。Anthropic 官方在对应的 GitHub issue 里把这个问题标记为「按预期设计」(not planned)关闭,即这是既定的地域策略,不算需要修复的 bug。

走 DeepSeek 这类第三方 Anthropic 兼容端点时,请求根本不经过官方 Anthropic 的地域检测,从目前验证的情况看不会触发这个报错。这不是「换后端修复了限制」,只是换了一条不经过该检测点的路径,官方的地域策略本身没有变化。

settings.json 与 .claude.json 的分工(简述)

Section titled “settings.json 与 .claude.json 的分工(简述)”

settings.json 是行为配置文件,本文用到的 env 字段,以及权限、hooks、model 等设置都写在这里。.claude.json 是 CLI 自身维护的状态文件,记录登录态、项目信任记录之类的运行时信息,通常不需要手动改。这条分工来自社区资料的归纳,没有找到官方文档逐字确认 .claude.json 的字段结构,标注为待核实。

  • .claude.json 的具体字段结构,没有找到官方文档逐条列出,本文的描述只是社区总结的角色分工。
  • DeepSeek 的模型名映射规则细节,属于 DeepSeek 服务端行为,是否会随版本调整没有做长期跟踪。
  • 是否所有 OpenAI/Anthropic 兼容后端都能规避地域限制,只验证了 DeepSeek 这一条。
这一节有错或讲不清? 提个 Issue 直接改文档 请作者催更