Codex CLI 默认使用 OpenAI 最新的旗舰模型,但在实际开发中,不同的编程任务对 AI 模型的要求差异很大——有些场景需要极致的代码生成质量,有些场景更看重响应速度和成本控制,还有些场景则需要特定模型的独特能力(如更强的推理能力或更大的上下文窗口)。
Codex 提供了一套灵活的模型切换机制,允许开发者在不同模型之间自由切换,实现场景 × 模型的最优匹配。本文将系统介绍 Codex 的模型体系、切换方式、配置方法,并通过实际案例展示如何在不同任务中选择最合适的模型。
截至当前版本,Codex 支持通过 ChatGPT 订阅计划 或 OpenAI API Key 两种方式接入模型。
使用 ChatGPT Plus / Pro / Business / Enterprise 账号登录 Codex 时,会根据订阅等级自动获得对应的模型配额:
| 订阅级别 | 典型可用模型 | 特点 |
|---------|-------------|------|
| Plus | GPT-4o, GPT-4o-mini | 日常开发主力,平衡质量与速度 |
| Pro | GPT-4o, o3-mini, o4-mini | 增加了推理模型,适合复杂逻辑 |
| Enterprise | 全部旗舰模型 | 无限制访问,适合团队使用 |
通过 codex --api-key 或设置 OPENAI_API_KEY 环境变量,可以使用 API 方式接入模型。这种方式下,可以访问所有 OpenAI API 公开的模型:
最直接的方式是在启动 Codex 时通过命令行参数指定模型:
# 使用 GPT-4o(默认) codex # 切换到 GPT-4o-mini(更快、更省资源) codex --model gpt-4o-mini # 使用推理模型处理复杂逻辑 codex --model o3-mini # 在非交互模式下指定模型 codex exec --model gpt-4o-mini "重构 src/utils.js 中的函数,提取公共逻辑"
使用命令行参数的优势是即时生效,不修改配置文件,适合临时的模型切换需求。
在项目根目录的 .codex/config.toml 中设置默认模型:
# .codex/config.toml [model] default = "gpt-4o"
或者在全局配置中设置(~/.codex/config.toml):
# ~/.codex/config.toml [model] default = "gpt-4o-mini"
项目级配置的优先级高于全局配置,命令行参数又高于项目级配置,实际解析顺序为:
命令行参数 > 项目级 .codex/config.toml > 全局 ~/.codex/config.toml > 系统默认值
在 Codex 交互式会话(TUI 模式)中,可以通过斜杠命令动态切换模型:
/model gpt-4o-mini /model o3-mini /model # 查看当前模型和可用模型列表
你也可以在会话中使用快捷键查看和切换模型。这种方式的优势是无需重启会话,适合在一个工作流中根据不同步骤灵活切换。
推荐模型:GPT-4o-mini
日常的 CRUD 开发、简单函数实现、注释编写等任务不需要最强的模型。使用 GPT-4o-mini 可以显著提升响应速度,同时降低 API 调用成本。
codex --model gpt-4o-mini
实测对比(以生成一个 REST API 接口为例):
| 模型 | 响应时间 | 代码质量 | 推荐场景 |
|------|---------|---------|---------|
| GPT-4o | ~3s | ★★★★★ | 复杂业务逻辑 |
| GPT-4o-mini | ~1s | ★★★★☆ | 日常开发 |
| o3-mini | ~5s | ★★★★★ | 算法与推理 |
推荐模型:o3-mini 或 o4-mini
当你需要实现复杂的数据结构、算法优化、或解决需要多步推理的问题时,推理增强模型的优势非常明显。
codex --model o3-mini
实际案例——实现一个并查集(Union-Find)数据结构:
用户:帮我实现一个带路径压缩和按秩合并的并查集,并写测试用例 o3-mini 输出:提供了完整的实现 + 边界测试 + 性能分析注释 GPT-4o-mini 输出:提供了基本实现,但路径压缩细节不够完善
推荐模型:GPT-4o
大规模重构需要模型对项目有全局理解,GPT-4o 拥有更大的上下文窗口和更强的代码理解能力,适合处理跨文件的复杂重构任务。
# 配合 exec 模式,批量重构 codex exec --model gpt-4o " 将 src/services/ 目录下所有文件中的 fetch 调用改为使用统一的 request 封装, 保持原有错误处理逻辑不变 "
推荐模型:GPT-4o-mini
在自动化流水线中,速度和稳定性优先于极致的生成质量。GPT-4o-mini 的低延迟特性使其非常适合 CI/CD 场景:
# .github/workflows/codex-review.yml
steps:
- name: AI Code Review
run: |
codex exec --model gpt-4o-mini \
"审查 PR #${{ github.event.pull_request.number }} 的代码变更,生成简洁的审查报告"
推荐模型:GPT-4o-mini
生成单元测试、API 文档、README 等辅助性任务对模型能力要求不高,使用轻量模型可以节省大量成本:
# 为指定文件生成测试 codex exec --model gpt-4o-mini \ "为 src/handlers/user.go 中的每个公开函数生成表驱动测试,覆盖正常和异常路径"
下面的流程图可以帮助你快速做出模型选择:
任务类型判断
├── 包含复杂算法 / 多步推理
│ └── → o3-mini 或 o4-mini
├── 大型重构 / 跨文件操作 / 需要深度理解项目
│ └── → GPT-4o
├── 日常开发 / 简单功能 / CRUD
│ └── → GPT-4o-mini
├── CI/CD 自动化 / 代码审查
│ └── → GPT-4o-mini
└── 探索性任务 / 不确定难度
└── → GPT-4o(先用好模型确认需求,再切换到轻量模型批量执行)
假设你正在开发一个电商系统的订单模块,典型的工作流可能是这样的:
# 第1步:分析需求,设计接口——需要强推理能力 codex --model o3-mini > 分析 order-service 的需求,设计 REST API 接口和数据库表结构 # 第2步:实现核心逻辑——中等难度,切换回默认模型 /model gpt-4o-mini > 根据上面的设计,实现 OrderService 的 createOrder 方法 # 第3步:处理复杂的库存扣减并发逻辑——需要推理 /model o3-mini > 用 Redis 分布式锁实现库存扣减的并发控制,防止超卖 # 第4步:生成 CRUD 接口和测试——轻量任务 /model gpt-4o-mini > 为 OrderController 生成完整的 CRUD 操作和单元测试
在 Codex 会话中使用:
/model
输出示例:
Current model: gpt-4o-mini Available models: - gpt-4o - gpt-4o-mini - o3-mini - o4-mini
如果你使用 API Key 方式接入,可以通过预算控制来限制不同模型的调用频率和成本:
# .codex/config.toml [budget] max_daily_spend_usd = 10.0 [model] default = "gpt-4o-mini" high_quality = "gpt-4o" reasoning = "o3-mini"
在 Agent 指令中可以引用这些配置:
# AGENTS.md ## 模型使用规则 - 对于标记为 `@complex` 的任务,使用 reasoning 模型(o3-mini) - 对于标记为 `@refactor` 的任务,使用 high_quality 模型(gpt-4o) - 其余任务统一使用 default 模型(gpt-4o-mini)
不要所有任务都用同一个模型。将任务分层,低成本任务用轻量模型,高价值任务用旗舰模型:
任务层级 模型选择 成本(相对) ───────────────────────────────────────────── L1: 文档/注释 gpt-4o-mini ★☆☆☆☆ L2: 日常开发 gpt-4o-mini ★☆☆☆☆ L3: 代码审查 gpt-4o-mini ★☆☆☆☆ L4: 重构/架构 gpt-4o ★★★☆☆ L5: 算法/推理 o3-mini ★★★★☆
在团队项目中,将模型配置提交到代码仓库可以确保所有成员使用一致的模型策略:
# .codex/config.toml——提交到 Git 仓库 [model] default = "gpt-4o-mini" [model.task_mapping] complex_algorithm = "o3-mini" large_refactor = "gpt-4o" routine = "gpt-4o-mini"
定期回顾模型使用情况和效果:
对于跨项目或临时场景,可以通过环境变量覆盖模型设置:
# 临时使用推理模型处理复杂任务 export CODEX_MODEL=o3-mini codex exec "实现一个 LRU 缓存,要求 O(1) 时间复杂度" # 全局默认使用轻量模型 echo 'export CODEX_MODEL=gpt-4o-mini' >> ~/.bashrc
| 维度 | gpt-4o-mini | gpt-4o | o3-mini |
|------|-----------|--------|---------|
| 代码生成质量 | ★★★★☆ | ★★★★★ | ★★★★★ |
| 推理能力 | ★★★☆☆ | ★★★★☆ | ★★★★★ |
| 响应速度 | ★★★★★ | ★★★★☆ | ★★★☆☆ |
| 上下文窗口 | 128K | 128K | 200K |
| API 成本 | $0.15/1M tokens | $2.50/1M tokens | $1.10/1M tokens |
| 最佳场景 | 日常开发、自动化 | 重构、架构设计 | 算法、数学推理 |
*注:价格为输入 token 的参考值,具体以 OpenAI 官方定价页为准。*
有。ChatGPT 订阅模型的可用范围由订阅等级决定,但不受 API 配额限制;而 API Key 可以访问所有公开模型,但按使用量计费。
Codex 当前每次会话绑定一个模型,但可以通过 codex exec 在多个终端会话中并行使用不同模型处理不同任务。
不会。在同一个 Codex 会话中使用 /model 切换模型时,历史对话上下文会保留完整。
Codex 的模型切换机制赋予了开发者精细化的 AI 工具选择能力。掌握模型切换,意味着你能在不同场景下实现成本、速度和质量的最优平衡:
在实际工作中,建议建立一个"模型分层使用策略",将不同难度的任务分配到合适的模型上。这不仅能显著提升开发效率和代码质量,还能有效控制 AI 使用成本,是每一位 Codex 高级用户都应当掌握的技能。