用 Codex 做 Code Review

把 Codex 当 pre-review——人类看之前先抓一遍。

这篇讲什么

PR 被人评审打回,多数情况栽在同三件事上:缺测试、违反约定、顺手带的副作用。Codex 抓这三类问题大约只需要你去倒咖啡的时间——前提是你给它的是”团队真实约定”,不是”互联网通用最佳实践”。这篇给你那份 brief 模板、能产出可执行 finding(不是吐槽情绪)的 review prompt、以及让 Codex 当”不知疲倦的预审员”而不是橡皮图章的人机交接模式。

这篇适合谁看

PR 协作的团队、没有 reviewer 的单干者、收到一堆”能编译但感觉不对”PR 的 tech lead。约定漂移但没人有空写下来的快速演进代码库尤其受益。

什么时候适合用

任何要交人类审的 PR 之前。先跑 Codex,剩余问题给人。极小 PR(20 行以内)跳过,开销大于价值;生产 hotfix 也跳过,速度优先。

开始前准备

  • 写 / 更新 AGENTS.mdCONTRIBUTING.md,列团队真实约定:命名、错误处理、测试规则、“绝不这么写”模式。不写 Codex 默认套互联网平均建议。
  • 仓库 CI 在 base 分支上是绿的。脏基线会污染 Codex 噪声。
  • 想清”必修” vs “建议” vs “可有可无”。Codex 不会给权重,你给。

具体步骤

  1. 在 Codex 里打开 PR 或分支。给一条带显式分类的 review prompt:
对照 AGENTS.md 的约定评审这个 diff。

按三类报告:
1. 必修 — bug、安全问题、违反约定、缺关键测试。
2. 重要 — 性能回退、漏边界情况、风格不一致。
3. 建议 — 可读性、命名、文档缺口。

每条 finding 都标"文件 + 行号"。指不到具体位置的不要列。
  1. 让 Codex 审。输出应是带引用的分类列表。给你一大段散文就是 prompt 太空——按分类重提一次。
  2. 自己 triage findings。和你的品味 / 上下文冲突的就反驳。Codex 有时是错的,分类让分歧显式。
  3. 接受的”必修”在交给人审前修掉。“重要”修或标注。“建议”批量留给后续。
  4. 需要补测试时让 Codex 提:“auth.ts 这个改动,提 3 个单测:无效 token、过期 token、缺 claims。” 合理的就实现。
  5. 提交给人 reviewer 时附一句:“Codex 已预审;遗留事项在 PR 评论里。“省时间也让对方知道你读过。

第一次实操怎么跑

  1. 找一个刚合的 PR,用上面的 prompt 让 Codex 审一遍。
  2. 对比它的 findings 和当时人审说的。重合处告诉你 Codex 稳定能抓什么。
  3. 两边的漏标下来。Codex 漏微妙业务逻辑 bug,人漏枯燥的约定漂移。两个组合才赢。
  4. 下一个真实 PR 先跑 Codex,调整你对每类 finding 的信任度。

完成后检查

  • 每条 finding 都标了文件和行号?“对错误处理的关注”没引用不算 finding。
  • 必修真的是必修?是品味或风格的要降级。
  • Codex 漏了明显问题吗?漏了就是约定文档缺这条,加进去。
  • 人 reviewer 时间真省了吗?还要花 1 小时就是 prompt 或约定文档要改。

怎么复用这套流程

  • review prompt 存成片段,每个 PR 同一条。
  • AGENTS.md 当文档维护:reviewer 任何时候说”我们不这么干”,就加规则。
  • 跟踪你最常忽略哪类 findings——那是”品味不是约定”,从 prompt 里删掉。
  • 季度跑一次刚合的 PR,验证 Codex 还在抓你想要的。

建议的操作流程

diff 就绪 → 带分类 prompt 的 Codex review → triage → 修必修、标重要、批量建议 → 带 Codex 笔记交人 reviewer。

容易踩的坑

  • 把 Codex 审当终审。它会漏只有”带上下文的人”才能抓的业务逻辑 bug。
  • 完全跳过人审。Codex 是预审,不是决策者。
  • 没约定文档。没有 Codex 套通用建议,可能和你团队的选择冲突。
  • 让 Codex 自己提 + 自己合修复,不经人审。findings 可以,自动合不行。
  • 不分类。40 条扁平 finding 会瘫痪人 reviewer。
  • 永远忽略”建议”项。季度批量做一次清理 PR,否则变成技术债。

FAQ

  • Codex 审一次多久?: 典型 PR 2-10 分钟,看 diff 大小和测试数。
  • 能审 draft PR 吗?: 能,而且通常应该。早反馈比晚反馈便宜。
  • 能取代 lint 和 type check 吗?: 不能。lint 和类型抓语法层问题,Codex 抓约定和逻辑。两个都跑。
  • 安全审查呢?: Codex 能抓常见安全模式,但敏感代码路径不能替代专门的安全 review。

相关阅读

标签: #AI 编程 #教程 #Codex