
做 AI 编程助手选型那阵子我最头疼的不是代码写不好而是工具链太碎。CLI 里跑着一个 Claude Code手上又有 DeepSeek、Qwen 好几个模型的 API Key想切换还得来回改环境变量烦得很。后来接触到 Antigravity 模型反代思路一下子打开了让 Claude Code 固定连一个网关网关后面想挂哪个模型就挂哪个。这篇就聊聊我实际配置 Antigravity 反代 Claude Code 的完整过程包括原理、踩坑和模型选型建议适合正在折腾 AI 编程工具、想让一个终端吃遍多家模型的开发者。1. 先把模型反代这件事讲明白1.1 Claude Code 的模型接入机制Claude Code 是 Anthropic 出的终端 AI 编程 Agent本身确实很好用能看代码、改文件、跑命令跟编辑器深度集成。它默认走 Anthropic 的 Messages API但设计上留了后门所有 API 地址、鉴权信息、模型名都是通过环境变量控制的。换句话说Claude Code 并不关心你请求的是不是 Anthropic 官方服务只要这个地址能返回符合 Anthropic 协议格式的响应它就能正常工作。这个“后门”就是后来各种第三方接入方案的基础。最常见的三个环境变量环境变量作用示例值ANTHROPIC_BASE_URL指定 API 端点前缀https://api.anthropic.comANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN鉴权凭证sk-ant-xxxANTHROPIC_MODEL指定模型claude-sonnet-4-20250514你只要把 BASE_URL 指到别处把 MODEL 改成别的模型名Claude Code 就会去请求那个地址。问题也随之而来不是所有模型服务都讲 Anthropic 的协议。1.2 为什么需要反代层如果你直接把 BASE_URL 指向 DeepSeek 的 OpenAI 风格接口Claude Code 发过去的请求格式人家根本不认返回的错误要么是一堆看不懂的字段要么直接 400、404。这时候就需要中间层来做协议翻译。Antigravity 在这里的角色就是个“协议翻译 流量调度”的网关。它在外面露出一个 Anthropic 兼容的 API 端点让 Claude Code 以为自己在跟 Anthropic 官方聊天收到请求后它再把这个请求转换成 OpenAI 风格或者其他模型 API 风格发给真正的后端模型拿到结果再翻译回来。这就是所谓“模型反代”的核心你访问的不是模型本身而是模型的“代理”。生活类比Claude Code 是个只会说英语的客人DeepSeek 是个只会说中文的服务员Antigravity 就是中间的翻译。客人只管用英语点菜翻译负责把需求转成中文告诉服务员再把菜端回来。1.3 为什么不用现成的其他方案在接触 Antigravity 之前我试过几种办法第一个是手改环境变量。简单直接但切一次模型就要重开终端或者 export 一遍容易出错。我在两个项目之间来回切换经常忘记当前用的是哪个模型排查问题很痛苦。第二个是 cc-switch。这是个 Claude Code 配置切换工具可以把多套 Provider 配置存成 Profile一键切换。它解决的是“切换”问题但本质上还是把 BASE_URL 从一个官方地址换成另一个模型服务地址如果那个服务不兼容 Anthropic 协议它也无能为力。第三个就是 Antigravity 这种网关方案。它把协议转换、Key 管理、多模型路由、用量统计这些都收口到一个服务里。前端只认一个地址后端随便接什么模型。方案解决的核心问题局限手改环境变量零依赖改一行就能用多模型切换麻烦Key 散落各处cc-switch多套配置管理、一键切换不做协议转换后端必须原生兼容Antigravity 网关协议转换、Key 收口、路由、统计需要多维护一个中间层我后来的选择是本地日常开发用 Antigravity 统一入口把 DeepSeek、Qwen、官方 Claude 都挂上去按任务类型选模型。体验下来确实省了很多事。2. Antigravity 网关的架构设计与核心原理2.1 一次请求进来网关到底干了什么把 Antigravity 想成一个带转发功能的路由器。Claude Code 发出一条消息里面带着 messages、system、max_tokens、temperature 这些参数网关拿到之后会做几件事第一步是鉴权。它检查请求头里的 Authorization 或 x-api-key确认这个 token 是不是自己发的。如果 token 有效就继续无效就直接返回 401。这一步的作用是把所有后端模型的 Key 全部收口到网关前端使用者永远接触不到真正的模型 Key对团队管理来说特别友好。第二步是解析路由规则。Antigravity 会根据请求里的模型名决定把请求转到哪个后端。比如 Claude Code 发来 ANTHROPIC_MODELdeepseek-chat网关看这个模型名对应的 Provider 配置是 DeepSeek就把目标地址定为 DeepSeek 的 API并把模型名映射成 DeepSeek 平台的真实模型 ID。第三步是协议转换。这是最核心的一步。Anthropic 的消息体长这样messages 数组里每个元素有 role 和 contentcontent 可以是字符串也可以是带 type 的块而 OpenAI 风格的接口用的是另一个结构工具调用的字段也不一样。网关必须把请求体完整转换过去同时也要把响应体转换回来。第四步是流式转发。Claude Code 和模型交互时用的是 SSE 流式响应网关不能等后端全部跑完再转发必须边收边转边推。这样才能保持终端里的“打字机”效果用户体验才不会卡顿。2.2 Key 管理一个容易被忽视的价值点很多人用反代网关是为了“用一个模型切多个模型”但我用下来发现Key 收口才是真正值钱的。假设一个 5 人小团队都用 Claude Code 写代码如果每人各自去申请模型 API KeyKey 散落在各个人的终端配置里离职、泄露、超预算都很难管。有了 Antigravity 网关五个人的 Claude Code 全部指向同一个网关端点网关配一个团队共享的后端 Key或者给每个人发独立 token后台可以看每个人的用量。谁跑了多少 token、花了多少钱一目了然。权限上还可以做限制有人只能用轻量模型写写注释有人可以用强模型做架构设计。这在网关里就是一条规则的事不需要去改每个人的本地配置。2.3 我为什么最终选了 Antigravity其实市面上的 AI 网关不少但 Antigravity 有几个点比较打动我第一它把“网关管理”做成了完整产品有官网、CLI、桌面端登录之后配置都是云同步的换台电脑不用重新配一遍。第二路由和模型映射的配置体验比较顺不需要手写复杂的 YAML 规则界面上点几下就能加一个 Provider。第三社区资料多聊 Claude Code 接入第三方模型的话题里Antigravity 出镜率很高遇到问题一搜就有解。当然它也有缺点比如登录偶尔抽风、CLI 下载容易超时这些我在后面问题排查里会详细说。3. 从零实操把 Claude Code 接到 Antigravity3.1 安装 Antigravity CLI 并登录先装 CLI。在官网下载页按自己系统选安装包即可macOS 也可以用 HomebrewWindows 下直接下载 exe 安装包或者用社区维护的包管理器。Linux 服务器上最方便的是官方安装脚本大概长这样curl -fsSL https://antigravity.ai/install | bash装完先验证一下版本号顺便确认安装成功antigravity --version然后登录账号。第一次使用需要认证命令行会打开浏览器或者让你粘贴 tokenantigravity auth login这里有个容易踩的坑公司内网环境可能访问不了登录页这时候要么用桌面端手动登录后同步登录态要么检查一下有没有网络代理干扰。我遇到过几次登录回调失败最后都是改用桌面端扫码登录解决的。3.2 创建网关端点并配置后端模型登录之后在控制台创建一个“项目”或者“端点”你会得到一个类似下面的 Base URLhttps://api.antigravity.ai/v1/messages同时在项目设置里可以生成一个 API Token。接着添加 Provider也就是你想挂到网关后面的真实模型服务。以 DeepSeek 为例把 DeepSeek 的 API Key 填进去配置好模型 ID 映射规则比如把deepseek-chat映射到 DeepSeek 平台的deepseek-chat或者你自己起的别名。配置完成后网关会给你一个 token前端所有请求都用这个 token 来鉴权。到此网关侧的准备就完成了。3.3 配置 Claude Code 的环境变量Claude Code 这边只需要三行环境变量。macOS 或 Linux 下在~/.bashrc或~/.zshrc里追加export ANTHROPIC_BASE_URLhttps://api.antigravity.ai export ANTHROPIC_AUTH_TOKEN你拿到的网关token export ANTHROPIC_MODELdeepseek-chatWindows PowerShell 用户则是$env:ANTHROPIC_BASE_URL https://api.antigravity.ai $env:ANTHROPIC_AUTH_TOKEN 你拿到的网关token $env:ANTHROPIC_MODEL deepseek-chat改完保存重新打开终端然后直接运行claude命令能看到 Claude Code 正常启动并开始对话说明请求已经通过网关转发到了 DeepSeek。这里有个细节ANTHROPIC_BASE_URL有的版本要求带/v1/messages有的只要求写到根域名网关会在后面自动拼接。遇到 404 或者路由错误时优先检查这个拼接规则不同网关的实现不太一样。3.4 VS Code 插件和桌面版的接入方式如果不用终端而是用 VS Code 里的 Claude Code 插件或者桌面版应用配置方式类似只是入口不同。VS Code 插件在项目根目录的.claude/settings.json里写环境变量效果跟 export 一样而且只对当前项目生效不污染全局配置{ env: { ANTHROPIC_BASE_URL: https://api.antigravity.ai, ANTHROPIC_AUTH_TOKEN: 你拿到的网关token, ANTHROPIC_MODEL: deepseek-chat } }桌面版则在应用的设置界面里找到环境变量配置项填同样的三行即可。我的习惯是终端和编辑器里的项目配置统一走.claude/settings.json这样团队协作时其他人 checkout 代码后能直接使用同一套网关配置不用再手动去改机子上的全局环境变量。3.5 参数映射和几个值得注意的细节网关做协议转换时有几个参数值得留意Claude Code 参数网关侧行为实操建议messages原样透传转成 OpenAI 格式不用管system原样透传转成 OpenAI messages 里的 system不用管max_tokens映射到后端模型的 max_tokens根据模型窗口大小设定DeepSeek 建议 4K-8Ktemperature透传代码任务保持 0 或低值更稳定stream带上 true网关做 SSE 转发保持默认否则终端不显示流式输出我踩过的坑是 max_tokens 设置太大导致后端直接报错。比如某些模型单次输出上限是 8K结果你在 Claude Code 里把 max_tokens 调成 16K请求到后端会被拒掉。建议先按模型上限的 80% 设置稳定后再往上调。4. 常见问题排查实录4.1 xxx is not a model this version of claude code recognizes这个报错基本是每个接第三方模型的人都会遇到的。Claude Code 较新版本加入了对模型名的校验它只认自己官方模型列表里的名字你把ANTHROPIC_MODEL设成deepseek-chat这种非官方模型名启动时就会报这个错后面那块deepseek-v4-pro / deepseek-v4-flash的报错也属于同一类问题。解决思路有三个第一直接固定ANTHROPIC_MODEL为网关认识的别名然后在网关侧把别名映射到真实模型 ID。这样 Claude Code 只看到它认识的模型名或者一个固定的别名但实际上后端跑的是别的模型。这也是我最推荐的方式。第二升级或降级 Claude Code 版本部分版本对模型名校验更宽松。但不是长久之计升级后校验可能又回来了。第三检查是否有绕过校验的环境变量开关。不同版本变量名不一样有的版本支持ANTHROPIC_SKIP_MODEL_CARD_VALIDATION1有的又改了名字我看过好几个版本都不太统一。最稳妥的办法还是看对应版本的官方更新日志或直接搜报错关键词。4.2 HTTP 529 错误529 在 Anthropic 语境里是过载/限流。但透过网关报 529 的时候问题可能出在两处一是后端模型服务真的过载了比如 DeepSeek 高峰期经常排队二是网关自身并发控制短时间内请求太多被限流。排查思路先直接拿后端的原始 API Key 在本地写个脚本发一条请求如果也返回 529说明后端限流需要降低并发、错峰使用或者换个模型如果后端正常那就是网关侧限流去控制台看有没有并发限制或配额设置适当调大。实际编码任务中我建议把 Claude Code 的自动执行拆成小块一次不要让它同时跑十几个文件修改既能降低 529 概率也能减少出错回滚成本。4.3 organization has disabled claude subscription access for claude code这种提示一般出现在你已经用 Claude 官方账号登录的情况下但又通过环境变量指向了网关账号体系发生了冲突。Claude Code 如果检测到你有官方订阅会优先走订阅鉴权逻辑这时组织管理员如果关闭了 Claude Code 的订阅访问就会报这个错。处理办法先登出 Claude Code 的官方账号或者干脆在干净环境里只用环境变量配置不登录官方订阅。我的经验是用第三方模型网关时最好完全绕开官方登录态只靠环境变量传递鉴权信息这样既不冲突也不消耗官方订阅额度。4.4 Antigravity 登录不上、CLI 下载失败登录不上是热词里的高频问题。我遇到过的场景有两种一种是浏览器回调时网络不通导致登录状态无法回写。解决办法是换用桌面端登录桌面端登录成功后 CLI 会同步登录态命令行工具就能直接用了。另一种是 token 过期但没有任何提示CLI 看起来像是登上了实际请求全被 401。这种情况先去antigravity auth status查一下登录状态不行就重新登录。CLI 下载失败则多数是网络问题解决方式一般是换镜像源下载、用包管理器装Homebrew、Scoop 等或者直接在官网手动下载对应平台的二进制包绕过命令行下载器。4.5 模型名映射表的排查思路在网关场景里90% 的“怎么不生效”问题最后都出在模型名映射上。我会做一个排查顺序先确认ANTHROPIC_MODEL实际传的是什么再确认网关端有没有把这个人认出来最后确认网关有没有把它映射到正确的后端模型。有一个很直观的验证方式在终端里用 curl 直接打网关端点带上 Claude Code 同样的请求体看返回结果。这一步能快速判断问题出在 Claude Code 侧还是网关侧。curl https://api.antigravity.ai/v1/messages \ -H x-api-key: 你的网关token \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: deepseek-chat, max_tokens: 1024, messages: [{role: user, content: hello}] }如果 curl 能正常返回结果说明网关没问题那就是 Claude Code 侧配置或者模型名校验的问题如果 curl 报错按错误码去网关控制台查日志比自己瞎猜快得多。5. 模型选型与工作流进阶5.1 不同后端模型在 Claude Code 里的实际表现网关搭好之后选择就多了。我实测下来几类模型各有取舍DeepSeek 系列价格低中文和代码能力都不错日常开发完全够用。问题是工具调用偶尔不稳定会让 Claude Code 漏传参数跑长任务时偶尔会“走神”。适合需求明确、改动不大的编码任务。Qwen 系列包括本地部署版本本地部署的最大好处是数据不出内网对代码保密要求高的项目很友好。但模型体积小的话复杂代码库的理解能力明显下降上下文一长就开始丢细节。适合中小项目或者先做预筛。官方 Claude 系列工具调用最稳、代码理解最深的还是官方模型。但贵而且有额度和频率限制。在网关后面我会把官方模型当作“关键任务专用”比如大规模重构、生成完整模块这种。模型编码能力工具调用稳定性成本推荐场景DeepSeek好中低日常功能开发、修改 BugQwen 本地版中中无 API 费用有硬件成本内网项目、敏感代码Claude 官方最强高高重架构、大重构5.2 给不同任务配不同模型的路由规则Antigravity 这类网关支持按模型名路由所以你可以把路由规则做成“任务分级”在 Claude Code 的默认配置里把模型设成轻量模型遇到大任务时用/model命令或者项目级 settings.json 临时切到强模型。我现在项目里的做法是日常问答、写注释、生成测试用例走 DeepSeek便宜不心疼单文件 Bug 修复走 DeepSeek跨文件重构、新模块设计切到官方 Claude涉及敏感业务代码走本地 Qwen这样一轮开发下来成本大概能省 60% 以上而最终交付质量几乎没差别。关键是你要清楚什么任务该用什么模型而不是一个模型打天下。不过要注意Claude Code 每次会话的上下文是累积的中途切换模型后之前的历史上下文在新模型里可能理解得没那么好。我的经验是切换模型时把会话拆开小任务一个小会话大任务专门开一个会话用强模型尽量别混用。5.3 用 skill 提升编码工具的实际产出最后聊聊 skill。Claude Code 支持通过.claude/skills目录定义技能每个技能是一个SKILL.md写清楚触发场景、步骤、输出格式。在网关接第三方模型的场景里skill 反而更重要了因为第三方模型的工具调用稳定性不如官方而 skill 可以把“怎么干活”的规则固化下来减少模型自由发挥的空间。我写过一个“代码审查”skill结构大概是.claude/skills/code-review/SKILL.md内容要求模型按顺序做几件事先读变更文件再按安全、性能、可读性三个维度输出问题清单最后给出修改建议。有了这个 skill 之后即便是走 DeepSeek 这种便宜模型审查报告的结构也很稳定不会东一榔头西一棒子。给新手一个建议不要一开始就写复杂的 skill。先手动调几轮把自己重复性的操作步骤记下来整理成固定的流程再固化成 skill。skill 是经验的沉淀不是越多越好能用一句话讲清楚的规则不要写三页。最后分享一点个人体会。工具链这个东西最怕的不是难学而是每个工具都有一点小脾气配了一次下次忘了还得重新搜。所以我现在会把每次排查出来的坑都记在项目根目录的 NOTES 里随手留一句“这个问题是模型名映射换别名解决”下次再遇到直接翻两三分钟就解决了。如果只让我给一条建议那就是先把网关的模型名映射表管理好。Claude Code 能不能稳定跑第三方模型八成交给模型名对不对、映射对不对剩下两成才是环境变量和网络的问题。把这张表维护明白了后面切模型、加模型都是十分钟内的事。还有个很实用的小技巧在网关控制台里把每个 Provider 的调用次数和 token 消耗开成每日报告发到团队群里。看起来不起眼但真到月底算成本、调配额的时候这份数据能省下大量扯皮时间。工具选得好不好最终要看它有没有帮你在看不见的地方省时间Antigravity 在这点上是值的。