Claude Code 接入 DeepSeek:ANTHROPIC_BASE_URL 怎么配,以及区域限制报错怎么绕开
三个环境变量就能把 Claude Code 切到 DeepSeek:ANTHROPIC_BASE_URL 指向 DeepSeek 的 Anthropic 兼容端点,ANTHROPIC_API_KEY 放 DeepSeek 的密钥。不用改任何代码,模型名会在 DeepSeek 服务端自动映射到对应的 DeepSeek 模型。写进 settings.json 的 env 字段比每次开终端手动 export 更持久,也更容易在多台机器之间同步。
三个环境变量,认清各自角色
Section titled “三个环境变量,认清各自角色”| 变量 | 角色 | 是否本文需要 |
|---|---|---|
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_URL 和 ANTHROPIC_AUTH_TOKEN 明确是为「自定义 Anthropic API 部署」场景准备的。
配置方式一:shell 里 export(临时,验证用)
Section titled “配置方式一:shell 里 export(临时,验证用)”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.json 里 env 字段的值会在 Claude Code 启动时被设置为对应的环境变量。配置来源有优先级:企业管理策略 > 命令行参数 > 本地项目设置(.claude/settings.local.json)> 共享项目设置(.claude/settings.json)> 用户设置(~/.claude/settings.json)。想让整个团队共用同一份,放共享项目设置里提交进仓库;只想自己用,放用户设置或者本地项目设置(后者默认在 .gitignore 里)。
怎么确认配置真的生效了
Section titled “怎么确认配置真的生效了”不要只看「能跑起来」就当作生效,因为报错和正常响应看起来都可能是别的原因导致的。跑一次会话后执行:
/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 的字段结构,标注为待核实。
还没确认的点
Section titled “还没确认的点”.claude.json的具体字段结构,没有找到官方文档逐条列出,本文的描述只是社区总结的角色分工。- DeepSeek 的模型名映射规则细节,属于 DeepSeek 服务端行为,是否会随版本调整没有做长期跟踪。
- 是否所有 OpenAI/Anthropic 兼容后端都能规避地域限制,只验证了 DeepSeek 这一条。