Claude Code 接入 GPT-6 Astra:LiteLLM 代理与 Codex 插件配置实测
GPT-6 Astra 进 Claude Code 有两种接法:LiteLLM 代理当主模型,Codex 插件委派任务。实测修一个 bug 按标价约 $0.23,界面只显示一半。
文章目录

Claude Code 本身没有切换到 GPT-6 Astra 的选项,内置的 /model 菜单里也没有它。要让 gpt-6-astra 在 Claude Code 里干活,有两种接法。第一种让 Astra 当主模型:在本机跑一个 LiteLLM 代理,把 Claude Code 发出的 Anthropic 格式请求翻译成 OpenAI 格式,再把 ANTHROPIC_BASE_URL 指向代理,把 ANTHROPIC_DEFAULT_OPUS_MODEL 等档位变量填成 gpt-6-astra。第二种保留 Claude 当主模型:装 OpenAI 官方的 Codex 插件,用 /codex:rescue --model gpt-6-astra 把具体任务交给 Astra。
2026 年 11 月 12 日,两种接法都用同一个任务试过:修好一个有两处 bug 的 Python 文件,让 4 个单元测试全部通过。代理接法在 Claude Code 2.1.316 里跑通,上游是 laozhang.ai 的 OpenAI 兼容接口,这次任务按 Astra 标价约 $0.23,而 Claude Code 自己显示的费用只有它的一半;插件接法是在 Claude Code 之外直接运行插件的运行时脚本,由 ChatGPT 账号登录的 Codex CLI 用 Astra 完成了同一个任务。最省事的那一步反而没走通:直接把 ANTHROPIC_BASE_URL 设成中转站地址,laozhang.ai 的 /v1/messages 对 gpt-6-astra 返回 503。
说明:laozhang.ai 是我们自己的服务,其价格是平台报价,不是独立比较的结论。
两种接法都不在 Anthropic 的支持范围内。Claude Code 的 LLM 网关文档写明,Anthropic 不支持经任何网关把 Claude Code 路由到非 Claude 模型。这意味着出了问题得不到官方帮助,新版本也可能让某些功能失效,但并不是禁止这样用。上面的结果来自一台机器、一个小任务、每种设置各跑一次,不能当作长会话也一定稳定的保证。
两种接法怎么选:Astra 当主模型,还是把任务交给 Astra
两者的根本区别是谁在主持 Claude Code 的工具循环。代理接法里,读文件、改代码、跑命令的每一步都由 Astra 决定,Claude 完全不参与,费用按 token 付给上游 API;插件接法里,Claude 仍是主模型,只有你下 /codex:rescue 或让 Claude 委派时,才由 Codex CLI 带着 Astra 在同一个目录里独立干完一段活,消耗的是 Codex 的额度。所以只有 API key、想全程用 Astra,选代理接法;已经有 Claude 订阅和 ChatGPT Plus 以上套餐,想让 Astra 接手某个难点或复查代码,选插件接法。
| 对比项 | LiteLLM 代理:Astra 当主模型 | Codex 插件:Claude 主模型,任务交给 Astra |
|---|---|---|
| 谁在跑工具循环 | Astra,每一步都由它决定 | Claude;Astra 在 Codex CLI 里独立完成被委派的任务 |
| 怎么计费 | 按 token 付给上游(OpenAI 官方 key 或中转站) | Claude 部分照旧;Astra 部分计入 ChatGPT 套餐的 Codex 额度,或 OpenAI API key |
| 需要准备 | LiteLLM、一个能调用 gpt-6-astra 的 API key | Codex CLI、Node.js 18.18 以上、能用到 Astra 的 ChatGPT 套餐或 API key |
| 官方立场 | Anthropic 不支持把 Claude Code 接到非 Claude 模型 | 插件由 OpenAI 发布和维护 |
| 最先碰到的坑 | 中转站的 Claude 协议端点可能没有 Astra;显示的费用约为标价的一半 | 不写 --model 时用 Codex 自己的默认模型,不一定是 Astra |

LiteLLM 代理接法:配置 config.yaml 和 Claude Code 环境变量
代理接法要做三件事:让 LiteLLM 在本机监听一个端口,告诉它 gpt-6-astra 去哪个上游调用,再让 Claude Code 把请求发到这个端口。下面是 2026 年 11 月 12 日跑通的配置,环境是 macOS、LiteLLM 1.109.1、Claude Code 2.1.316,上游是 laozhang.ai 的 OpenAI 兼容地址 https://api.laozhang.ai/v1,密钥部分换成你自己的。如果你的中转站文档写明它的 Claude 协议端点能直接调 gpt-6-astra,先按下文报错一节的方法用 curl 试一次,通了就不需要代理,像 Claude Code 连接 OpenRouter 和 DeepSeek:路线选择、配置与首错排查 里那样直接填地址即可。
说明:laozhang.ai 是我们自己的服务,其价格是平台报价,不是独立比较的结论。
-
安装带代理功能的 LiteLLM,LiteLLM 官方教程用的是 uv:
uv tool install 'litellm[proxy]' -
新建
config.yaml。gpt-6-luna留给 Haiku 档位,Claude Code 用它给会话起标题:model_list: - model_name: gpt-6-astra litellm_params: model: openai/gpt-6-astra api_base: https://api.laozhang.ai/v1 api_key: os.environ/LAOZHANG_API_KEY - model_name: gpt-6-luna litellm_params: model: openai/gpt-6-luna api_base: https://api.laozhang.ai/v1 api_key: os.environ/LAOZHANG_API_KEY litellm_settings: drop_params: true上游用 OpenAI 官方 key 时,删掉两处
api_base,把api_key改成os.environ/OPENAI_API_KEY,这是 LiteLLM 的 Claude Code 接非 Anthropic 模型教程里的写法,这条上游没有实测。选官方还是中转站,除了价格,还要看你的网络能否稳定连到api.openai.com,在自己机器上用 curl 试一下就知道。还没有能调用 Astra 的 key,先看 GPT-6 Astra API 怎么开通?访问条件、首次调用与报错排查。 -
启动代理。
LITELLM_MASTER_KEY是你自己编的一串随机字符,Claude Code 用它登录代理:export LAOZHANG_API_KEY="你的上游 API key" export LITELLM_MASTER_KEY="sk-换成一串足够长的随机字符" litellm --config config.yaml --host 127.0.0.1 --port 4011 --detailed_debug -
在另一个终端确认代理能按 Anthropic 格式应答,返回里出现
"model":"gpt-6-astra"和一段文字就说明通了:curl -X POST http://127.0.0.1:4011/v1/messages \ -H "Authorization: Bearer 你的 LITELLM_MASTER_KEY" \ -H "content-type: application/json" \ -d '{"model":"gpt-6-astra","max_tokens":64,"messages":[{"role":"user","content":"Reply with one word: connected"}]}' -
设好 Claude Code 的变量,再启动
claude:export ANTHROPIC_BASE_URL="http://127.0.0.1:4011" export ANTHROPIC_AUTH_TOKEN="和 LITELLM_MASTER_KEY 相同的值" export ANTHROPIC_MODEL="gpt-6-astra" export ANTHROPIC_DEFAULT_OPUS_MODEL="gpt-6-astra" export ANTHROPIC_DEFAULT_SONNET_MODEL="gpt-6-astra" export ANTHROPIC_DEFAULT_HAIKU_MODEL="gpt-6-luna" export CLAUDE_CODE_MAX_CONTEXT_TOKENS=272000 claude
四个模型变量都要设。Claude Code 不带 --model 启动时主会话走 Opus 档位,交互模式下用 Haiku 档位起会话标题,子代理沿用会话模型;哪个档位漏设,Claude Code 就会请求 Claude 自己的模型名,而代理里没有这个名字。Haiku 档位填 gpt-6-luna 是为了让起标题这种小请求便宜一些,填 gpt-6-astra 也能用。三个档位的分工在 Claude Code 接入 GLM-5.3-Flash:Opus 档位要填 Flash 里有逐项实测;想长期生效,把这些键写进 ~/.claude/settings.json 的 env,配置文件的位置和优先级见 Claude Code API 配置:先选路由,再设置 Key、模型和网关。
CLAUDE_CODE_MAX_CONTEXT_TOKENS 需要 Claude Code 2.1.259 以上。Claude Code 不认识 gpt-6-astra 这个 ID,默认按 200K 上下文处理,并在这个位置自动压缩对话;Astra 的实际窗口是 1,050,000 token,但单次请求输入超过 272K 时整单按高价计费。设成 272000,自动压缩就会在跨过这条线之前发生,2026 年 11 月 12 日实测设置后 Claude Code 记录的 contextWindow 变为 272000。这是按价格取的值,不是官方推荐;能接受高价、需要更长上下文的可以设得更大。
中间这层代理不能省,是因为 Claude Code 发给网关的请求带着 Anthropic 专用的字段。2026 年 11 月 12 日的代理日志里,每个请求都带 8 个 anthropic-beta 值和 output_config,LiteLLM 1.109.1 把它们翻译或丢掉,全程没有出现 400;它转发到上游的调用全部走 https://api.laozhang.ai/v1/responses。这一点有意义:在 OpenAI 官方接口上,Astra 的工具调用只支持 Responses API,不支持 Chat Completions,只会用 Chat Completions 转发的代理在 Claude Code 第一次调用工具时就会出问题。
确认回复来自 gpt-6-astra:标题行、/status 与代理日志
启动后看三处就能确认:界面顶部的标题行显示 Claude Code 请求的模型名和计费方式,/status 列出实际使用的网关地址和模型,LiteLLM 日志记录真正发到上游的请求。前两处只能说明 Claude Code 请求的是哪个名字,这个名字在代理里映射到哪个上游模型,只有日志说了算。2026 年 11 月 12 日的交互会话里,标题行和 /status 是这样的:
Claude Code v2.1.316
gpt-6-astra · API Usage Billing
⚠ Model "gpt-6-astra" isn't recognized · context assumed to be 200k tokens · update Claude Code, or see https://code.claude.com/docs/en/model-config
/status
Auth token: ANTHROPIC_AUTH_TOKEN
Anthropic base URL: http://127.0.0.1:4011
Model: gpt-6-astra同一个会话里发一条消息,代理收到 3 个请求:2 个请求 gpt-6-astra,1 个请求 gpt-6-luna,后者来自 Haiku 档位,会话随即被命名为 "slugify behavior"。启动代理时加了 --detailed_debug,日志里能看到每次转发的上游地址和模型名。让模型报出自己的名字只能当旁证:代理接法里它回答 "I am GPT-6 Astra (gpt-6-astra)",Codex 插件那次却回答 "I’m Codex, based on GPT-6",两次实际用的都是 Astra,所以要以日志和 Codex 会话文件里记录的模型名为准。
修一个 bug 花多少钱:Claude Code 显示的只有标价的一半
2026 年 11 月 12 日用同一个修 bug 任务跑了三次,只改 CLAUDE_CODE_EFFORT_LEVEL,三次都是 4 个测试全过。按 Astra 标价复算,每次在 $0.20 到 $0.29 之间,而 Claude Code 结束时打印的费用每次都只有约一半,因为它没有 gpt-6-astra 的价格表,输出里的 costBasis 是 "unknown"。要知道真实花了多少,看上游的账单,不看 Claude Code 的数字。
| effort 设置 | 发给 Astra 的 reasoning.effort | 用时 | 轮数 | 缓存写入 / 缓存读取 / 输出 token | 按 Astra 标价复算 | Claude Code 显示 |
|---|---|---|---|---|---|---|
| 不设(默认) | high | 19.2 秒 | 7 | 11,728 / 55,265 / 521 | $0.228 | $0.114 |
low | low | 17.5 秒 | 5 | 11,296 / 43,330 / 364 | $0.203 | $0.101 |
max | max | 34.4 秒 | 9 | 12,365 / 57,529 / 1,531 | $0.289 | $0.144 |
复算用的是 Astra 每百万 token 的标价:未缓存输入 $10,30 分钟缓存写入 $12.50,缓存读取 $1,输出 $50。用量取自上游返回的 usage,默认那次另有 12 个未缓存输入 token:
(12 × 10 + 11,728 × 12.5 + 55,265 × 1 + 521 × 50) ÷ 1,000,000 = 0.228 美元这笔钱的大头不在修 bug 本身。默认那次约 64% 的费用花在第一次缓存写入上,写进去的是 Claude Code 自带的约 1.17 万 token 系统提示和工具定义,所以每开一个新会话,还没干活就先付这一笔。effort 能原样传过去:不设时发的是 high,设成 low 时 Astra 没有产生推理 token,设成 max 时 1,531 个输出 token 里有 963 个是推理。这只说明映射有效,不说明哪一档更好,这么简单的任务三档都能完成。effort 的取值和各模型默认档见 Claude Code effort level 设置:各模型实测默认档与不生效排查,272K 以上的价格和两档缓存写入见 GPT-6 Astra API 定价与成本计算:价格表、272K 与两档缓存写入。

Codex 插件接法:保留 Claude,用 /codex:rescue 指定 Astra
插件接法不动 Claude Code 的模型配置。OpenAI 发布的 Codex plugin for Claude Code(GitHub 仓库 openai/codex-plugin-cc)在 Claude Code 里加了 /codex:review、/codex:rescue 等命令,背后调用本机的 Codex CLI,沿用 Codex 的登录状态和额度;要求是 ChatGPT 账号(含 Free)或 OpenAI API key,以及 Node.js 18.18 以上。不过不是每个套餐都能用到 Astra:截至 2026 年 10 月 26 日 OpenAI 的说明,Free 和 Go 在 Codex 里用的是 GPT-6 Luna;Plus 和标准 Business 每 5 小时大约有 5 到 45 条 Astra 本地消息;Pro 没有 5 小时限制。
在 Claude Code 里依次输入:
/plugin marketplace add openai/codex-plugin-cc/plugin install codex@openai-codex/reload-plugins/codex:setup,它会检查 Codex CLI 是否安装、是否登录;没登录就输入!codex login。- 把任务交给 Astra,模型名要写明:
/codex:rescue --model gpt-6-astra --effort medium 修好 textkit/slug.py,让单元测试全部通过
第 5 步的 --model 不能省。按插件 README 的说法,不传 --model 和 --effort 时由 Codex 自己选默认值;安装后的文件也显示,rescue 子代理只有在你点名模型时才会带上 --model。想每次都用 Astra,可以在启动 Claude Code 的项目根目录建 .codex/config.toml,或写进 ~/.codex/config.toml:
model = "gpt-6-astra"
model_reasoning_effort = "medium"项目里的 .codex/config.toml 只在 Codex 信任该项目后才加载。另外两点也来自安装后的文件:rescue 子代理默认带 --write,Codex 会直接改你的文件;子代理本身跑在 sonnet 档位,转交任务这一步仍要用一点 Claude 的额度。
2026 年 11 月 12 日在一个全新的 Claude Code 配置里装了插件 1.0.6,Codex CLI 0.166.0 用 ChatGPT 账号登录。在 Claude Code 之外,按 rescue 子代理的调用方式直接运行插件的运行时脚本 codex-companion.mjs(task --write --model gpt-6-astra --effort medium),同一个修 bug 任务 28 秒完成,4 个测试全过;Codex 的会话文件记录了 "model":"gpt-6-astra" 和 "reasoning_effort":"medium",输入 130,507 token,其中 112,128 来自缓存,输出 369 token。在交互式 Claude 会话里直接输入 /codex:rescue 这一步没有跑,上面关于斜杠命令的说明来自 README。这组 token 不能和代理接法的直接比较,因为 effort 一个是 medium、一个是 high,Codex 和 Claude Code 的工具外壳也不同。两个工具各自的月费和 API 成本对比见 Codex vs Claude Code 费用对比:月费、额度与 API 实际成本。
首先会遇到的报错:503 无可用通道、200k 警告与 400
下面三条里,前两条是 2026 年 11 月 12 日实际看到的,第三条是 Claude Code 网关协议文档描述、当天没有出现的情况。按报错原文找对应的一条。
503:has no available channels for model gpt-6-astra
API Error: 503 Current group default has no available channels for model gpt-6-astra under billing mode [pay-as-you-go, pay-per-request] (request id: …). This is a server-side issue, usually temporary — try again in a moment. If it persists, check your inference gateway (api.laozhang.ai).这是把 ANTHROPIC_BASE_URL 直接设成 https://api.laozhang.ai、四个模型变量都填 gpt-6-astra 时,Claude Code 2.1.316 给出的报错;用 curl 直接请求 /v1/messages,不带工具和带一个工具,都是同样的 503,没有扣费。原因是 laozhang.ai 的 default 分组在 Claude 协议端点上没有 Astra 的通道,它在 OpenAI 兼容的 /v1/chat/completions 和 /v1/responses 上提供 gpt-6-astra;它专给 Claude Code 用的令牌分组,文档里列的是 Claude、DeepSeek、GLM、Kimi,没有 GPT 模型。报错后半句的 "usually temporary" 是 Claude Code 对所有 5xx 的通用说法,这种情况重试没有用,在中间加上 LiteLLM 代理才行。换别的中转站时,也先用 curl 请求它的 /v1/messages、把 model 设为 gpt-6-astra 试一次,通了再改 Claude Code 的配置。
说明:laozhang.ai 是我们自己的服务,其价格是平台报价,不是独立比较的结论。
200k 提示:Model "gpt-6-astra" isn't recognized
这是提示,不是错误,请求照常发出。交互界面显示的是上一节里带 ⚠ 的那一行,后半句是 "context assumed to be 200k tokens";claude -p 非交互模式下则是 "Claude Code doesn't recognize the model "gpt-6-astra", so it assumes a context window of 200k tokens"。它提醒的是 Claude Code 会按 200K 上下文管理对话、在 200K 附近自动压缩。按上面第 5 步设置 CLAUDE_CODE_MAX_CONTEXT_TOKENS 后,2026 年 11 月 12 日实测这行提示不再出现。
400:Extra inputs are not permitted
Claude Code 的网关协议文档说明,Claude Code 发给网关的请求和发给 Anthropic 官方的一样,带着 anthropic-beta 请求头、output_config.effort、context_management、cache_control 等字段;网关如果把这样的请求原样转给格式不同的上游,就会得到 Extra inputs are not permitted 这类 400。Claude Code 遇到 effort 或 context_management 被拒,会去掉这两个字段自动重试一次。还报 400 时,确认代理配置里有 drop_params: true,或者给 Claude Code 加上 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1,减少它发出的 beta 字段。
尚未验证的功能:WebSearch、子代理、MCP 与长会话
2026 年 11 月 12 日跑通的,只是在一个很小的仓库里读文件、找文件、改文件、跑测试命令这一组基础工具。Claude Code 的 WebSearch 和 WebFetch、图片输入、子代理、MCP 服务器、长会话和自动压缩,都还没有在 Astra 上用过;子代理默认沿用会话模型,在代理接法里同样会落到 Astra 上。需要网页搜索时,LiteLLM 文档目录里另有一页「Claude Code - WebSearch Across All Providers」专讲这件事,先读它再动手。
还有两处差别容易忽略。用了自定义 ANTHROPIC_BASE_URL 之后,/status 显示远程托管设置和组织策略都是 "not fetched",企业管理员通过远程下发的设置在这条线路上拿不到。另一个常被提到的工具 Claude Code Router,3.1.3 版是桌面应用,在 http://127.0.0.1:3456 起一个本地网关,支持的上游协议里列了 OpenAI Chat 和 Responses,原理和 LiteLLM 一样,但没有实测,用它时同样先按上面的方法确认上游走的是 Responses。
Claude Code 接入 GPT-6 Astra 的其他问题
能用 ChatGPT 订阅代替 API key 吗?
能,但只在 Codex 插件这条线上:插件用的是本机 Codex CLI 的 ChatGPT 登录,而截至 2026 年 10 月 26 日,Free 和 Go 套餐在 Codex 里拿到的是 GPT-6 Luna 而不是 Astra。代理接法需要 API key。有人用 CLIProxyAPI 这类反代把 ChatGPT 登录接进 Claude Code 当主模型,这是在 Codex 之外使用 ChatGPT 账号,这种做法没有测试过,OpenAI 是否允许也没有得到确认,用之前要自己掂量。
能在 Claude Code 里切换 GPT 模型吗?
能。2026 年 11 月 12 日实测用的办法是在启动前设好 ANTHROPIC_MODEL 和三个档位变量,要换成代理里的另一个 model_name,改变量后重开 claude 即可。想在 /model 菜单里直接选,Claude Code 的模型配置文档给了两个办法:设置 ANTHROPIC_CUSTOM_MODEL_OPTION="gpt-6-astra",往菜单里加一个自定义条目;或者设置 CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1,让 Claude Code 从网关的 /v1/models 读取模型列表。这两个变量都要在启动 claude 之前设好,都没有在 Astra 上实测;LiteLLM 的教程另外提到,自动发现只保留 ID 里含 claude 或 anthropic 的条目。
GPT-6 Astra 和 Claude 的模型比,写代码该选哪个?
能接进 Claude Code 只解决了怎么用,选哪个模型要看同题对比的结果和你的预算,具体数字见 Fable 5.2 和 GPT-6 Astra 对比:单价低 20%,同题输出却是 2.5 倍。
参考来源5
本文引用的外部页面,按正文出现顺序排列。最后更新于 2026年11月12日。
参考来源5
本文引用的外部页面,按正文出现顺序排列。最后更新于 2026年11月12日。
- 1.Claude Code 的 LLM 网关文档code.claude.com/docs/en/llm-gateway
- 2.LiteLLM 的 Claude Code 接非 Anthropic 模型教程docs.litellm.ai/docs/tutorials/claude_non_anthropic_models
- 3.Codex plugin for Claude Code(GitHub 仓库 openai/codex-plugin-cc)github.com/openai/codex-plugin-cc
- 4.Claude Code 的网关协议文档code.claude.com/docs/en/llm-gateway-protocol
- 5.Claude Code 的模型配置文档code.claude.com/docs/en/model-config





