Codex 实战问答
原创 · 约 26 分钟阅读 · 阅读 --
Last updated on

Codex 实战问答

作者: Alex Xiang


我第一次认真用 Codex 的时候,也会下意识把它当成一个更会写代码的聊天窗口。用了一段时间之后,这个理解就不太够了。

Codex 更像一个能进入工程目录工作的协作者。它可以读代码、改文件、跑命令、查 CI、写文档、开 PR,也可以通过 AGENTS.md、skills 和配置文件把一些固定流程沉淀下来。真正的变化不是“回答更聪明”,而是它开始接近一个能把工程任务推进到可验证状态的执行界面。

这篇文章用问答方式整理几个最近经常被问到的问题:collaboration mode 到底是什么,GPT-5.3-Codex-Spark 和 GPT-5.5 怎么选,限流怎么理解,statusline 怎么配,常用 slash command、codex exec 和 Codex SDK 适合什么场景。

Codex CLI 实践工作流

古董级程序员,大厂出来后一直在创业公司,现在仍在一线做 AI 相关的工程。更完整的技术记录写在微信公众号「字与码」:工作经历、对新工具的看法,以及这些年踩过的坑,会不定期发在那里。若这篇对你有用,欢迎顺手关注。

Codex 和普通 ChatGPT 有什么区别?

普通 ChatGPT 更像回答问题的人;Codex 更像能进入项目目录工作的工程协作者。

这个差别在真实任务里会非常明显。CI 失败时,普通问答通常只能根据日志猜原因;Codex 可以拉代码、复现测试、定位失败、修复,再跑一遍测试。PR review 时,普通问答容易停在“这段代码看起来可以优化”;Codex 更适合按文件和行号指出行为风险、兼容性问题和缺失测试。

我现在更愿意把 Codex 看成一个“带工具和执行权限的工程代理”。问它问题当然可以,但更有价值的是把任务描述清楚,让它自己走完读代码、改文件、验证、总结这条链路。

collaboration mode 是什么?

collaboration mode 可以理解成 Codex 的协作方式:它决定 Codex 更偏主动执行,还是更偏先规划、先确认。

模式适合场景行为特点
Default日常工程任务、修 bug、补测试、排查 CI、开 PR用户给出目标后,Codex 会优先自己推进;只有信息不足且贸然决定有风险时才停下来问
Plan需求不清晰、存在多种方案、需要先选择路线的任务更偏拆方案、列计划、等待确认;适合重构设计、复杂方案评审

我的习惯是:目标明确就用 Default,让 Codex 直接做到可验证状态;问题还没想清楚时,就直接说“先不要改代码,只给方案”。即使当前不是 Plan mode,也可以通过自然语言约束它。

先不要改代码,只分析这个接口是否有兼容性风险。
直接修复测试失败,跑完测试后总结改动。
只验证线上行为,不要写数据库,不要打印敏感信息。

GPT-5.3-Codex-Spark 和 GPT-5.5 怎么选?

我不太建议只把 Spark 和同代 Codex 模型放在一起比。更实用的比较,是直接拿它和最强的 GPT-5.5 做取舍。

核心结论很简单:GPT-5.5 适合复杂和长链路任务,GPT-5.3-Codex-Spark 适合实时、低延迟、小范围迭代。Spark 的一个重要价值,是 research preview 期间拥有单独限流,不消耗标准 Codex rate limits。

维度GPT-5.5GPT-5.3-Codex-Spark
定位最强通用与专业工作模型,适合复杂推理、跨仓库、长任务面向实时编码的超快模型,适合小范围快速协作
速度更重,通常更慢但更稳官方定位为超低延迟,适合近实时交互
任务类型系统性重构、复杂排障、跨服务设计、深度 review改一个函数、补一个测试、调 UI、解释局部代码、快速试错
限流走标准 Codex / ChatGPT 使用限制或账户额度preview 期间单独限流,不计入标准 rate limits

所以选择规则也很直接:需要“稳、深、长”,用 GPT-5.5;需要“快、短、马上看结果”,用 GPT-5.3-Codex-Spark。Spark 不应该被理解成最强模型,而应该被理解成实时协作模型和额外限流池。

套餐和限流应该怎么理解?

Codex 的限流不是简单按“消息条数”计算。任务大小、代码库规模、上下文长度、工具调用、长时间运行、执行位置,都会影响消耗。小脚本可能只消耗很少额度,大仓库长任务会明显重很多。

套餐口径Codex 使用Spark 相关差异实践建议
Free 免费通常适合体验,额度较低Spark 是否可用以账户实际模型列表为准适合小任务,不适合连续工程工作
Plus,约 20 美金/月适合个人日常使用,但长任务仍可能碰到额度如果账户可用 Spark,它的 preview 限流独立于标准 Codex 限流适合日常开发和中小任务
Pro,常见高阶套餐口径约 100/200 美金/月更适合高频和长时间 Codex 使用Spark 单独限流的价值在 Pro 场景更明显适合把 Codex 当作日常工程协作者
Business / Enterprise / Edu适合团队使用,有更明确的数据控制和管理能力模型可用性和限流通常由 workspace 与管理员配置决定适合纳入 CI、review、发布和文档流程

什么时候会被限流?连续高频对话、大仓库长上下文、多个长任务并行、频繁自动化调用、模型处于高峰期或 preview 容量紧张时,都可能触发限流、排队或模型暂不可用。Spark 的单独限流不等于无限使用,它只是和标准 Codex 限流分开。

statusline 为什么重要?

statusline 是 Codex CLI 底部状态栏。它的价值不是装饰,而是让你随时知道当前模型、推理强度、目录、Git 分支、上下文剩余量、限流窗口、Codex 版本和任务进度。

我推荐至少放这些字段:

[tui]
status_line = [
  "model-with-reasoning",
  "current-dir",
  "git-branch",
  "run-state",
  "permissions",
  "approval-mode",
  "context-remaining",
  "five-hour-limit",
  "weekly-limit",
  "codex-version",
  "thread-title",
  "task-progress"
]

里面最关键的几项,是 model-with-reasoningcurrent-dirgit-branchpermissionsapproval-modecontext-remaining

很多误操作并不是模型不知道怎么做,而是用户和 Codex 对当前状态的认知不一致。你以为它在只读模式,它其实有写权限;你以为在目标仓库,它其实在另一个目录;你以为当前是强模型,它实际跑在轻量模型。statusline 的作用就是把这些隐性状态摆在眼前。

skill 应该沉淀什么?

skill 是把反复出现的流程固化下来的一种方式。凡是连续出现三次以上、步骤固定、容易遗漏细节的流程,都值得做成 skill。

我现在会把这些内容做成 skill:

能力类型适合沉淀的内容
官网测试API、搜索、执行、计费、用户 API key 查询等固定流程
产品发布release tag、测试环境 PR、线上发布 PR 的分支规则
工作总结按时间窗口汇总 commit、issue、PR、文档、会议和会话
文档处理创建、读取、更新飞书文档,固定 XML / Markdown 规范
博客写作文章 frontmatter、文风、头图路径、构建命令
图片生成需要生成位图素材时的风格、尺寸和禁忌

skill 里最重要的不是写一堆背景知识,而是写清楚何时触发、怎么做、哪些文件要读、哪些风险不能踩。它应该像一个给未来自己的操作手册,而不是一篇解释性长文。

常用 slash command 怎么用?

Codex 的 slash command 很多,但日常最常用的是下面这些。

命令作用最佳实践
/ide把 IDE 当前打开文件、选区和编辑器上下文加入下一轮 prompt正在看某段代码,希望 Codex 不用重新搜索就理解当前上下文时使用
/memories配置 memory 注入和生成适合长期偏好,不要存密钥、密码、客户隐私或临时事实
/goal设置、查看、暂停、恢复或清理长期目标大任务、跨多轮排查、需要持续跟踪完成度时使用
/fork从当前会话分叉一个新线程探索另一个方案,但不想污染主线会话时使用
/side开启临时侧边对话问一个小问题或验证一个概念,不影响主会话上下文
/raw切换原始 scrollback 模式长日志、命令输出、需要复制终端内容时使用
/personality调整 Codex 的沟通风格让回复更简洁或更解释型,不改变工程规则
/status查看当前 session 配置和 token 使用确认模型、审批策略、可写目录、上下文剩余量
/compact压缩长会话上下文上下文剩余量低、任务还没完成时使用
/diff查看当前 Git diff提交前确认 Codex 改了什么,包括未跟踪文件

这里面我最常用的是 /goal/side/diff。大任务先设 goal,旁路问题用 side,提交前一定看 diff。

/goal 指定和不指定有什么区别?

不指定 goal 时,Codex 主要围绕当前用户消息工作。短任务、一次性问题、边界清楚的修改,不指定 goal 完全没问题。

指定 goal 后,Codex 会有一个持久目标,可以在多轮对话中围绕它推进,并跟踪预算、进度和完成状态。它更适合“今天要完成一整条工作链路”的场景,例如排查问题、修复、测试、提交、开 PR、写说明。

目标:把搜索服务的索引增量更新问题修复到可上线状态。
完成标准:代码已提交,测试通过,PR 已创建,线上验证方案已写清楚。

经验规则是:如果任务可以在十分钟内完成,不一定需要 goal;如果任务需要跨多个仓库、多轮验证,或者中途可能被打断,应该设置 goal。

什么时候需要 /fork?

/fork 的核心价值是保留主线,同时探索分支。它不是普通的新会话,而是从当前上下文复制出一个新线程。

我会在这些情况用它:

  • 同一个问题存在两个修复方案,需要分别试验。
  • 主线正在做稳定修复,临时想探索一个激进重构。
  • 需要把当前上下文交给另一个方向,但不想让主线混入无关讨论。

如果只是问一个小问题,用 /side 更轻。

怎么让 Codex 记住一些事情?

“记住”有几种层次,应该按稳定性选择载体。

要记住的内容推荐载体原因
仓库规则、测试命令、分支规范AGENTS.md和代码仓库绑定,团队成员和 Codex 都能读到
个人默认模型、statusline、sandbox、MCP~/.codex/config.toml属于个人工作环境配置
固定流程,例如发布、官网测试、日报skill流程化、可复用,能包含步骤和风险提示
长期个人偏好/memories适合偏好类信息,但要避免敏感数据
一次任务中的临时约束当前 prompt 或 /goal只在当前任务有效,不污染长期记忆

不要让 Codex 记住密钥、密码、生产数据库凭据、客户隐私、一次性 token、内部未公开商业信息。需要用时放在环境变量或权限受控的配置里,并要求 Codex 不打印。

codex exec 适合什么?

codex exec 是非交互模式,适合把 Codex 放进命令行、CI、定时任务和流水线里。它不是进入 TUI 对话,而是给 Codex 一个明确任务,让它运行后输出结果。

几个典型例子:

# 只读分析当前仓库测试失败原因
codex exec --sandbox read-only --ask-for-approval never \
  "分析最近一次 pytest 失败原因,只输出结论和涉及文件"

# 允许在工作区内改文件,用于自动修复小问题
codex exec --sandbox workspace-write --ask-for-approval never \
  "修复 lint 失败,保持改动最小,并说明改了哪些文件"

# 根据 git log 生成发布说明草稿
git log --oneline v1.2.0..HEAD | codex exec --sandbox read-only --ask-for-approval never \
  "根据输入生成中文 release notes"

非交互模式的 prompt 要更窄,权限要更保守。能只读就只读;必须改文件时再给 workspace-write;不要在无人值守任务里默认使用危险全权限。

0.131.0 里的 /pets 有什么用?

/pets 是 Codex CLI 0.131.0 引入的终端宠物选择入口。它会在 Codex TUI 里展示一个 ambient pet,也就是一个不影响主聊天流的陪伴式状态元素。

这个功能主要服务于体验和状态感知,不改变模型能力,也不会让任务执行更快。宠物 sprite 会随任务状态变化,比如运行中、等待输入、review ready、失败等。它可以通过 /pets 关闭;终端能力不支持时也可能自动禁用。

我对它的看法比较简单:如果你经常长时间开着 Codex TUI,它能让状态反馈更轻松;如果你用 tmux、终端不支持图片,或者喜欢极简界面,关掉就好。

0.131.0 里还有哪些值得注意的变化?

0.131.0 的核心变化不是单一功能,而是 TUI 更像一个可长期工作的工程控制台。

第一,状态栏显示 blended token usage。它更接近用户真正关心的消耗口径,避免把 cached input tokens 也直接算进状态栏数字里,造成“为什么 token 看起来突然暴涨”的误解。

第二,session 控制和状态展示更丰富。状态栏和 /status 可以更清楚地展示权限模式、approval mode、run-state、task-progress、effective workspace roots 等信息。

第三,service-tier slash commands 数据驱动化。以前 /fast 更像硬编码命令,现在由模型 catalog 暴露的 service_tiers 决定。当前模型支持哪些 tier,TUI 就显示哪些对应命令;不支持就不显示。

第四,effective workspace roots 展示更准确。它表示最终生效的工作区目录集合,而不是配置里某一层的原始值。这个变化对安全很重要:当你以为 Codex 只能改当前仓库,但 effective workspace roots 里还有额外目录时,实际权限边界比你以为的大。

Codex SDK 能干什么?

Codex SDK 的价值,是把“人手动打开 Codex 做任务”进一步变成“程序可编排的工程工作流”。它适合构建可重复、可审计、可观察的单 agent 或多 agent 软件交付流程,而不是只在终端里临时对话。

可以从两个方向理解:

方向它解决什么问题适合场景
Codex Python SDK用代码控制 Codex 运行、turn 路由、approval mode 等把 Codex 集成进内部脚本、服务端流程、自动化工具
OpenAI Agents SDK + Codex MCP Server把 Codex CLI 暴露为 MCP server,再由 Agents SDK 编排一个或多个 agent多角色研发流水线、自动化改代码、评审、测试、交付

codex exec 相比,SDK 更适合有状态、多角色、可观察、可复用的流程。比如 CI 失败后,Planner 负责判断问题范围,Developer 负责最小修复,Reviewer 负责审查风险,Tester 负责跑验证,最后把 traces、artifacts 和人工审批点留存下来。

如果只是单次任务,codex exec 就够了;如果你要把 Codex 接进长期运行的研发系统,才需要 SDK 或 Agents SDK 这一层。

我的使用原则

最后总结一下我自己的规则:

  • 把 Codex 当成工程协作者,而不是只会回答问题的聊天框。
  • 小任务用 Spark 提速,大任务用 GPT-5.5 保质量。
  • Spark 的核心价值之一是单独限流池,但它不是无限额度。
  • 用 statusline 随时确认模型、目录、分支、上下文和权限。
  • 把高频流程沉淀成 skill,把仓库规则写进 AGENTS.md
  • 长任务设置 /goal,分支探索用 /fork,旁路问题用 /side
  • 自动化场景用 codex exec,但要收窄 prompt 和权限。
  • 任何涉及生产、资金、隐私、删除、发布的操作,都要保留人工确认点。

Codex 的真正价值,不是让你少打一段代码,而是把很多“读上下文、试方案、跑验证、写说明”的工程循环压缩成一个更稳定的协作流程。它仍然需要人定目标、把风险关住、审最终结果;但只要边界设好,它已经足够进入日常开发工作流了。

参考资料