Skip to content
SuperToken 文档 下载 Codex 整本 PDF

Codex 项目实战

真正稳定的用法不是“给一句需求,等它写完”,而是让 Codex 按探索、计划、实现、验证、审查、交付的顺序闭环。

核对日期 2026-07-15 · CLI 示例实测于 codex-cli 0.144.3 · 配套阅读:入口与快速开始 · 桌面 App · CLI

入口说明

下面的提示词可以在 App、CLI 或 IDE 中使用。需要可视化 diff、集成终端和 Worktree 时优先用 App;需要脚本化输入输出时用 CLI;只围绕当前文件或选区时用 IDE。无论入口如何,验证命令和 Git diff 必须来自同一个实际工作区。

实战总流程

阶段Codex 要做什么你要确认什么
探索阅读代码、文档、Git 状态和测试它是否找对入口、没有凭空猜测
计划拆分步骤、风险和验证方式方案是否符合业务与边界
实现做范围明确的修改diff 是否集中、是否引入多余依赖
验证跑测试、lint、类型检查或构建命令是否真实执行、失败是否说明
审查检查回归、安全和遗漏结论是否按严重程度、有文件依据
交付汇报结果与剩余风险你能否快速复核并继续工作

复杂任务使用 /plan 先做前两步。计划得到确认后,再明确说“按刚才的计划实现并验证”。

实战一:快速读懂陌生项目

先用只读模式启动:

bash
codex -s read-only

输入:

text
先不要修改文件。请像接手项目的高级工程师一样阅读这个仓库。

请输出:
1. 项目目标、技术栈和启动入口;
2. 主要目录及职责;
3. 一次用户请求经过的关键调用链;
4. 安装、开发、测试、构建命令,注明依据文件;
5. 当前 Git 状态和明显风险;
6. 你无法从代码确认的问题。

不要只复述 README;所有结论尽量引用具体路径。

接着让它补一份项目规则草案:

text
根据刚才确认的信息,起草一份简短 AGENTS.md。
只写能从仓库验证的命令和约束;不确定的内容放到“待团队确认”,不要编造。

人工核对后再保存。项目说明一旦写错,会让后续每个任务都稳定地走错方向。

实战二:修复一个可复现的 Bug

一个可靠的修复请求需要“现象、复现、范围、验证”:

text
修复:用户连续点击两次“提交订单”时,偶尔会创建两条订单。

复现:
1. 启动测试环境;
2. 在订单确认页快速双击提交按钮;
3. 可以看到两次 POST /orders。

请按以下顺序工作:
1. 先阅读相关页面、请求封装和现有测试;
2. 复现并说明根因,不要先猜修复;
3. 添加能失败的回归测试;
4. 做最小修复,不修改后端接口;
5. 运行相关测试、类型检查和 lint;
6. 审查 diff,确认没有破坏键盘操作和错误重试;
7. 最后列出根因、修改文件、验证命令和结果。

如果它没能复现,不要让它“凭经验修”。改为要求:

text
停在诊断阶段。列出已经验证的事实、无法复现的原因,以及还需要哪一条日志或环境信息。
不要修改生产代码。

实战三:开发一个完整小功能

以“订单列表增加状态筛选”为例。

第一步:计划

输入 /plan,然后发送:

text
为订单列表增加状态筛选:全部、待支付、已支付、已取消。
筛选条件要同步到 URL,刷新和前进后退后保持一致。

请先调查:
- 当前列表的数据获取和路由参数方式;
- 是否已有可复用筛选组件;
- 相关测试如何组织;
- 移动端布局约束。

输出实施步骤、会修改的文件、测试方案和风险。
现在不要改代码。

你需要检查:它是否复用了现有模式、是否理解 URL 是状态来源、是否覆盖浏览器历史和空结果。

第二步:实现

text
按已确认的计划实现。

约束:
- 不新增状态管理依赖;
- 不修改服务端接口;
- 查询参数使用 status;
- 非法状态值回退到“全部”;
- 保持现有桌面和移动端布局。

完成前运行相关单元测试、类型检查、lint 和构建。
如果测试环境本身失败,保留原始错误并区分“本次引入”和“已有问题”。

第三步:验收

text
先不要继续改代码。请对照原始需求审查当前 diff:
- 是否遗漏刷新、前进后退、非法参数、空结果;
- 是否有无关修改;
- 测试是否真正覆盖行为而不是实现细节;
- 是否存在可访问性或移动端回归。

发现问题按严重程度列出;确认无问题后给出最终验收摘要。

实战四:安全地做重构

重构最容易变成“改了很多,但无法证明行为没变”。提示词要锁住外部行为:

text
重构 src/services/payment.ts,目标是拆分支付渠道选择和请求发送逻辑。

外部行为必须保持不变:
- 导出的函数名和参数不变;
- 错误类型和错误码不变;
- 重试次数、超时和日志字段不变;
- 不升级依赖,不修改调用方。

先列出现有可观察行为和测试缺口。
必要时先添加特征测试,再分小步重构。
每一步都运行相关测试,最后比较 diff 并说明为什么行为等价。

如果当前测试不足,先让 Codex 写“特征测试”,把已有行为固定下来,再动结构。

实战五:处理测试失败

把真实输出通过标准输入交给 Codex,比口述“测试挂了”更准确:

bash
npm test 2>&1 | codex exec --ephemeral \
  "分析失败测试,区分根因和连带失败。只给诊断和最小修复建议,不修改文件。"

交互会话中可以这样要求:

text
运行与当前改动最相关的测试。
如果失败:
1. 保留完整的首个根因错误;
2. 判断是实现、测试、环境还是依赖问题;
3. 不要通过删除断言、跳过测试或扩大超时来掩盖问题;
4. 修复后重新运行同一命令,再跑更广的检查。

实战六:代码审查

审查未提交内容:

bash
codex review --uncommitted

相对主分支审查:

bash
codex review --base main

审查某个提交:

bash
codex review --commit COMMIT_SHA

需要按基线审查:

bash
codex review --base main

需要自定义审查标准时单独使用 prompt:

bash
codex review "重点检查权限绕过、数据竞争和缺失测试;按严重程度输出,只报告可验证的问题"

--uncommitted--base--commit 与自定义 prompt 互斥,不能写在同一条命令中。

高质量审查结果应该包含具体文件位置、触发条件、影响和修复方向,而不是泛泛的“建议优化”。

实战七:前端页面验收

不要只让 Codex 看组件代码。要求它运行页面并检查真实状态:

text
完成页面修改后启动本地开发服务器,并验证:
- 1440×900 桌面视口;
- 390×844 移动视口;
- 加载、空数据、错误、长文本和禁用状态;
- 键盘可操作性与焦点状态;
- 控制台错误和失败请求。

对页面截图做视觉检查,确认没有文字溢出、遮挡、布局跳动或横向滚动。
发现问题后修复并重新验证。

如果当前环境没有浏览器能力,Codex 应明确说明缺少哪项验证,而不是声称“页面正常”。

入口要分清:

  • ChatGPT 桌面 App:安装或启用 bundled Browser plugin 后,在提示词中使用 @Browser。它使用独立浏览器环境;提交表单、发送信息等敏感动作仍应人工确认。
  • CLI / IDE:没有相同的内置 Browser 入口。项目应接入 Playwright 命令、测试脚本或经过审查的 browser MCP,再要求 Codex运行并保存证据。
  • Chrome extension / Computer Use:会接触登录态网站或桌面 App,权限和数据面更大。先确认 profile、站点范围、文件下载、外部写入和敏感操作确认,不要默认复用个人浏览器状态。

浏览器能看到真实页面,不等于自动证明后端数据、邮件、付款或第三方写入成功;关键外部状态必须用对应系统的只读查询再次验证。

实战八:非交互自动化

codex exec 适合脚本、CI 和批处理。它默认以只读沙箱运行,自动修改时要显式给出工作区写权限。

生成仓库风险摘要:

bash
codex exec --ephemeral \
  "阅读仓库并列出五个最高风险区域。引用文件路径,不修改文件。"

输出 JSONL 供脚本消费:

bash
codex exec --json "总结当前仓库结构,不修改文件" > codex-events.jsonl

只保存最终消息:

bash
codex exec -o review.md \
  "审查当前未提交改动,按严重程度输出可验证的问题,不修改文件"

允许在当前工作区修复:

bash
codex exec --sandbox workspace-write \
  "修复现有 lint 错误,只修改直接相关文件,并重新运行 lint"

自动化边界

不要在包含不可信仓库代码的同一进程环境中暴露长期 API Key。CI 中优先使用官方 Codex GitHub Action、短期凭据和最小仓库权限,并把“生成补丁”和“推送或开 PR”拆成不同权限阶段。

让结果更稳定的复盘法

任务完成后,可以追加一轮:

text
复盘这次任务:
1. 哪些信息最晚才发现,导致了返工;
2. 哪条项目约定应该写进 AGENTS.md;
3. 哪个验证步骤应该变成固定命令;
4. 有没有不应长期保留的临时配置。

只提出有本次证据支持的改进。

把反复出现的问题写入规则,把稳定的多步骤流程做成技能或脚本。不要把一次性的特殊要求永久化。

交付前检查清单

  • 目标与边界是否仍和最初一致。
  • git diff 中是否只有相关修改。
  • 新行为是否有回归测试或可重复验证步骤。
  • lint、类型检查、测试、构建是否真实执行。
  • 失败项是否保留原始错误并说明影响。
  • 是否意外记录了密钥、日志、缓存或构建产物。
  • 最终摘要能否让另一位工程师快速复核。

官方资料

SuperToken - 让全球顶级 AI 模型触手可达