🤖 AI 摘要
Codex CLI 是 OpenAI 推出的命令行编码代理工具,支持自定义 API Provider。常见问题是配置后 Base URL 没生效,Codex CLI 仍然请求 api.openai.com,导致 invalid_api_key 错误。解决方法是在 config.toml 中正确配置 provider 的 base_url 和 api_key。Codex CLI 用于编码代理和长任务,推荐使用 api2.link-ai.cc/v1 作为 Base URL,api2 直连通道可以有效减少 524 超时问题。
💡 直接答案
Codex CLI 推荐配置:使用 api2.link-ai.cc/v1 作为 Base URL。在 ~/.codex/config.toml 中添加 provider 小节,设置正确的 base_url 和 api_key。如果遇到 invalid_api_key,先用 curl 测试 Base URL 是否可达,确认不是 api.openai.com 误请求。详细步骤参考 Codex CLI 完整配置教程。
Codex CLI 为什么容易走回 api.openai.com
Codex CLI 默认配置指向 OpenAI 官方 API。配置自定义 Provider 时容易踩的坑:
- config.toml 位置不对:不是当前工作目录的 config.toml,而是
~/.codex/config.toml - provider 名称不匹配:代码中指定的 provider 名称与 config.toml 中的小节名不一致
- 没有设置 default provider:定义了 provider 但没有设置为默认
- openai_base_url 被单独设置了:全局 openai_base_url 覆盖了 provider 设置
自定义 provider 和 openai_base_url 的区别
| 配置方式 | 作用范围 | 适用场景 |
|---|---|---|
| openai_base_url | 全局默认,所有模型 | 简单场景,所有请求都走同一个中转站 |
| [providers.xxx] | 指定模型,可精细控制 | Claude 模型走 api2,GPT 模型走 api1 |
| openai_base_url + [providers] | 全局 + 特定覆盖 | 大多数走默认,特定模型走专属通道 |
api1 和 api2 怎么选
Codex CLI 用于编码代理和长任务:
- 普通请求(代码补全、快速问答):
https://api1.link-ai.cc/v1 - 长任务(代码重构、架构设计、多文件修改):
https://api2.link-ai.cc/v1
api2 提供直连通道,超时策略更宽松,适合 Codex CLI 的长任务特点。
invalid_api_key 怎么判断是不是配置没生效
invalid_api_key 错误有两个可能:
- Key 本身无效:从 Link-AI 获取的 Key 有误
- Base URL 没生效:Codex CLI 仍然在请求 api.openai.com,用的是 OpenAI 格式的 Key
判断方法:
# 测试 Link-AI API 是否可达
curl https://api2.link-ai.cc/v1/models \
-H "Authorization: Bearer 你的APIKey"
# 如果返回模型列表,说明 Key 正确且 Base URL 可达
# 如果返回 401/403,说明 Key 或权限有问题
# 如果连接被拒绝,说明 Base URL 配置可能有误
⚠️ 关键检查
如果 curl 测试返回了模型列表,但 Codex CLI 仍然报 invalid_api_key,说明 Codex CLI 可能在使用不同的配置(检查 config.toml 路径和内容)。
推荐配置片段
基础配置(所有请求走 api2)
# ~/.codex/config.toml
api_key = "你的APIKey"
default_model = "claude-3-opus"
# 全局 Base URL
openai_base_url = "https://api2.link-ai.cc/v1"
# 如果需要 Claude 支持
[providers.anthropic]
name = "anthropic"
base_url = "https://api2.link-ai.cc/v1"
api_key = "你的APIKey"
分模型配置(Claude 走 api2,GPT 走 api1)
# ~/.codex/config.toml
api_key = "你的APIKey"
# 默认走 api1
openai_base_url = "https://api1.link-ai.cc/v1"
# Claude 走 api2
[providers.anthropic]
name = "anthropic"
base_url = "https://api2.link-ai.cc/v1"
api_key = "你的APIKey"
# 设置 Claude 模型使用 anthropic provider
[models.claude-3-opus]
provider = "anthropic"
常见错误排查
| 错误 | 原因 | 解决方案 |
|---|---|---|
| 401 invalid_api_key | Base URL 没生效,还在请求 api.openai.com | 检查 config.toml 路径和内容,用 curl 测试 Base URL |
| 524 | 任务太长,超出 Cloudflare 超时限制 | 切换到 api2 直连通道 |
| 403 | API Key 没有 Claude 模型权限 | 在 Link-AI 控制台检查模型授权 |
| 连接被拒绝 | Base URL 配置错误或 api2 服务异常 | 确认 Base URL 是 https://api2.link-ai.cc/v1 |
配置 Codex CLI 使用 Link-AI
查看完整配置教程,包括 config.toml 详细说明
https://api2.link-ai.cc/v1
FAQ
Codex CLI 为什么容易走回 api.openai.com?
Codex CLI 默认配置指向 OpenAI 官方 API。用户配置自定义 Provider 时,如果没有正确设置 openai_base_url 或没有在 config.toml 中添加 provider,Codex CLI 会回退到默认的 api.openai.com,导致无效的 API Key 错误。
openai_base_url 和自定义 provider 的区别是什么?
openai_base_url 是全局默认地址,会影响所有模型请求。自定义 provider 可以为特定模型设置专属的 Base URL,比如让 Claude 模型走 api2,其他走 api1。
Codex CLI 用 api1 还是 api2?
Codex CLI 用于编码代理和长任务,推荐使用 api2.link-ai.cc/v1 作为 Base URL。api2 提供直连通道,超时策略更宽松,适合长任务。
invalid_api_key 错误怎么判断是不是配置没生效?
如果报错是 401 invalid_api_key,先确认 Key 是从 Link-AI 获取的。如果 Key 正确但仍然报错,可能是 Base URL 没生效,Codex CLI 仍然在请求 api.openai.com。用 curl 测试 Base URL 是否可达。
Codex CLI config.toml 怎么写?
在 config.toml 中添加 [providers.xxx] 小节,设置 base_url 和 api_key。如果要支持 Claude 模型,需要添加 anthropic 小节,并配置 ANTHROPIC_BASE_URL 为 api2.link-ai.cc。
如何验证 Codex CLI 配置是否生效?
用 curl 直接测试 API 是否可达:curl https://api2.link-ai.cc/v1/models -H 'Authorization: Bearer 你的Key'。返回模型列表说明配置正确。