Codex接入自定义API:保姆级配置避坑

前言

对开发者来说,在终端里配一个顺手的 AI 编程助手几乎是刚需。OpenAI 的 Codex 就是一款功能强大的命令行 AI 编程工具,不过它默认只能调用 OpenAI 官方 API。问题随之而来:如果我们手里已经有自己的 API 服务——比如部署了国产大模型、使用了代理服务,或者接入了公司内部的 AI 平台——该怎样让 Codex 调用这些自定义 API 呢?

本文基于一个真实的配置案例,详细讲解在 macOS(尤其是 Mac Mini)环境下如何配置 Codex、让它调用自定义的 AI API。内容覆盖配置文件编写、环境变量设置、版本兼容性问题排查等环节,希望能帮遇到类似问题的开发者少走弯路。

一、理解 Codex 的架构

动手配置之前,先弄清楚 Codex 的基本架构。Codex 采用了灵活的 Provider 机制,用户可以定义多个 AI 服务提供商,并在它们之间自由切换。

核心概念:

  • Provider(提供商):一个 AI 服务的具体实现,包含 API 地址、认证方式等
  • Model(模型):Provider 提供的具体模型名称
  • Wire API:Codex 与 Provider 之间的通信协议类型

得益于这种设计,Codex 并不局限于 OpenAI 自家的服务,理论上任何兼容 OpenAI API 格式的服务都能接入。

二、配置前的准备工作

2.1 确认 Codex 版本

这一步最关键!不同版本的 Codex 对 API 协议的支持完全不同:

codex --version
版本 支持的 API 类型 wire_api 参数
0.81.0 及以上 Responses API “responses”
0.80.0 及以下 Chat Completions API “chat”

重要提示:如果你的 API 服务只支持标准的 Chat Completions 格式(大多数国产模型和代理服务都是这种),建议安装 0.80.0 版本:

npm install -g @openai/

2.2 确认 API 服务状态

配置 Codex 之前,先用 curl 测试一下你的 API 服务是否正常工作:

curl -X POST  \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "your-model-name",
    "messages": [{"role": "user", "content": "Hello"}],
    "max_tokens": 50
  }'

请求能正常返回,就说明你的 API 服务是可用的。

三、配置文件详解

3.1 配置文件位置

Codex 的配置文件采用 TOML 格式,默认位置在:

  • 用户级配置:~/.codex/config.toml
  • 项目级配置:项目根目录/.codex/config.toml

项目级配置会覆盖用户级配置,这样一来,不同项目就能分别使用不同的 AI 服务。

3.2 基础配置结构

一个完整的配置文件包含三个部分:

  1. 全局设置(默认模型和 Provider)
  2. Provider 定义
  3. 项目特定设置(可选)
# 全局设置
service_tier = "fast"
model = "your-model-name"
model_provider = "your-provider-name"

# Provider 定义
[model_providers.your-provider-name]
name = "显示名称"
base_url = "
wire_api = "chat"  # 或 "responses"
env_key = "YOUR_API_KEY_ENV_NAME"

# 项目特定设置(可选)
[projects."/path/to/your/project"]
trust_level = "trusted"

3.3 配置项详细说明

配置项 说明 示例
model 默认使用的模型名称 qwen3.6-plus
model_provider 默认使用的 Provider 名称 my-custom-provider
base_url API 服务地址
wire_api API 协议类型 chat 或 responses
env_key 存放 API Key 的环境变量名 MY_API_KEY

3.4 常见配置错误及修正

错误 1:将 API Key 直接写在 env_key 字段

# ❌ 错误
env_key = "sk-your-actual-api-key"

# ✅ 正确
env_key = "MY_API_KEY"

错误 2:协议类型不匹配

# 如果 API 只支持 Chat Completions
wire_api = "chat"  # 而不是 "responses"

错误 3:base_url 格式问题

# 本地服务通常用 http 而不是 https
base_url = "  # 正确
base_url = " # 可能导致 SSL 错误

四、Mac Mini 环境变量配置

4.1 临时设置(仅当前终端会话)

export YOUR_API_KEY="sk-your-actual-api-key"

4.2 永久设置(推荐)

Mac Mini 默认使用 Zsh,因此需要把环境变量写进 ~/.zshrc:

echo 'export YOUR_API_KEY="sk-your-actual-api-key"' >> ~/.zshrc
source ~/.zshrc

4.3 验证环境变量

echo $YOUR_API_KEY

五、实战案例:配置本地 Qwen API

假设有一个运行在本地 8080 端口的 Qwen 模型服务,完整配置步骤如下:

5.1 创建配置文件

mkdir -p ~/.codex
nano ~/.codex/config.toml

5.2 写入配置内容

service_tier = "fast"

# 设置默认使用 Qwen 模型
model = "qwen3.6-plus"
model_provider = "red_claw"

# 定义 Provider
[model_providers.red_claw]
name = "RedClaw Qwen Service"
base_url = "
wire_api = "chat"
env_key = "REDCLAW_API_KEY"

# 项目信任配置(可选)
[projects."/Users/macmini/workspace/my-project"]
trust_level = "trusted"

5.3 设置环境变量

echo 'export REDCLAW_API_KEY="sk-yien-1620bbcc7f4349c1bcf5b82f6e3756c1"' >> ~/.zshrc
source ~/.zshrc

5.4 测试配置

codex "你好,请介绍一下自己"

六、常见问题及解决方案

6.1 问题:自定义模型不显示在选择器中

现象:运行 codex 时,模型选择器只显示官方模型,看不到自己配置的模型。

原因:配置文件没有被正确加载,或者配置格式有误。

解决方案:

ls -la ~/.codex/config.toml
codex config show
codex --config-check

6.2 问题:--model-provider 参数不存在

现象:

error: unexpected argument '--model-provider' found

原因:Codex 没有这个命令行参数。

解决方案:通过配置文件设置默认 Provider,而不是通过命令行参数。或者使用正确的参数名:

codex -m model-name --provider provider-name "prompt"

6.3 问题:wire_api 版本不匹配

现象:

wire_api = chat is no longer supported

原因:新版 Codex 不再支持 chat 协议。

解决方案:

  • 方案一:把配置中的 wire_api 换成 "responses"
  • 方案二:降级 Codex 到 0.80.0 版本
npm uninstall -g @openai/codex
npm install -g @openai/

6.4 问题:SSL 证书错误(本地服务)

现象:

SSL certificate problem: self signed certificate

原因:本地服务使用 HTTPS 但没有有效的 SSL 证书。

解决方案:

[model_providers.your-provider]
# ... 其他配置
allow_insecure = true  # 仅用于本地开发

6.5 问题:环境变量不生效

现象:配置了环境变量,但 Codex 仍然提示找不到 API Key。

解决方案:

echo $YOUR_API_KEY
source ~/.zshrc

七、调试技巧

7.1 开启调试模式

DEBUG=true codex "你的问题"
RUST_LOG=debug codex "你的问题"

7.2 查看配置加载情况

codex config show
codex config list-providers
codex config test

7.3 网络抓包

如果还是无法定位问题,可以用 Wireshark 或 tcpdump 抓包分析:

sudo tcpdump -i lo0 port 8080 -A

八、最佳实践建议

8.1 安全性建议

  1. 永远不要将 API Key 写在配置文件中,始终使用环境变量
  2. 定期轮换 API Key
  3. 对不同项目使用不同的 API Key,便于审计和权限管理
  4. 将 .codex/ 目录加入 .gitignore,避免意外提交敏感信息

8.2 多 Provider 管理

如果你有多个 AI 服务,可以在配置文件中定义多个 Provider:

# 默认使用本地 Qwen
model = "qwen3.6-plus"
model_provider = "local_qwen"

# 定义本地 Qwen
[model_providers.local_qwen]
name = "Local Qwen"
base_url = "
wire_api = "chat"
env_key = "QWEN_API_KEY"

# 定义云端 GPT
[model_providers.cloud_gpt]
name = "Cloud GPT"
base_url = "
wire_api = "responses"
env_key = "OPENAI_API_KEY"

# 定义代理服务
[model_providers.proxy_service]
name = "API Proxy"
base_url = "
wire_api = "chat"
env_key = "PROXY_API_KEY"

8.3 项目级配置示例

为不同项目创建独立的配置文件:

mkdir -p /path/to/projectA/.codex
cat > /path/to/projectA/.codex/config.toml << 'EOF'
model = "qwen-max"
model_provider = "local_qwen"

[model_providers.local_qwen]
base_url = "
wire_api = "chat"
env_key = "QWEN_API_KEY"
EOF
mkdir -p /path/to/projectB/.codex
cat > /path/to/projectB/.codex/config.toml << 'EOF'
model = "gpt-4"
model_provider = "cloud_gpt"

[model_providers.cloud_gpt]
base_url = "
wire_api = "responses"
env_key = "OPENAI_API_KEY"
EOF

九、完整配置清单

再附上一份完整的配置检查清单,帮你逐项核对、确保没有遗漏:

  • Codex 版本已确认(0.80.0 推荐)
  • API 服务已启动并可访问
  • ~/.codex/config.toml 文件已创建
  • model 和 model_provider 已正确设置
  • Provider 配置块已添加
  • base_url 使用正确的协议(本地用 http)
  • wire_api 类型与 API 服务匹配
  • env_key 填的是环境变量名,不是 API Key
  • 环境变量已在 ~/.zshrc 中设置
  • 已执行 source ~/.zshrc 使配置生效
  • echo $YOUR_ENV_KEY 能正确显示 API Key
  • codex config show 显示正确的配置
  • codex "test" 能正常响应

十、总结

配置 Codex 调用自定义 AI API 的核心要点可以归纳为:

  1. 版本先行:确认 Codex 版本,选择合适的 wire_api 类型
  2. 配置分离:API Key 用环境变量,其他配置用 TOML 文件
  3. 协议匹配:确保 wire_api 与你的 API 服务类型一致
  4. 路径正确:base_url 格式要正确,本地服务注意 http vs https
  5. 调试有方:善用 DEBUG=true 和 codex config show 排查问题

配置过程中难免遇到各种问题(版本不匹配、参数名错误、环境变量不生效等),但只要按照文中步骤逐一排查,最终都能顺利解决。

愿这份指南能帮你顺利配好 Codex,尽情享受在终端里使用自定义 AI 模型的便利。


附录:快速配置模板

cat > ~/.codex/config.toml << 'EOF'
model = "your-model"
model_provider = "custom"

[model_providers.custom]
base_url = "
wire_api = "chat"
env_key = "CUSTOM_API_KEY"
EOF

echo 'export CUSTOM_API_KEY="your-actual-api-key"' >> ~/.zshrc
source ~/.zshrc

codex "Hello, world!"
0

评论0

请先
显示验证码
没有账号?注册  忘记密码?