Codex Review 用于把 Codex 内置的代码审查作为收尾检查来运行。它是代码审查(codex review),不是 Guardian auto_review 的审批路由。
适用场景
- 用户要求 Codex review / autoreview / 第二模型审查
- 非平凡代码编辑之后,在最终提交或发布之前
- 修复后审查本地分支或 PR 分支
契约
- 将审查输出视为建议,绝不盲目应用。
- 通过阅读真实代码路径和相邻文件来核实每一条发现。
- 当发现依赖外部行为时,阅读依赖的文档、源码或类型定义。
- 拒绝不切实际的边界情况、推测性风险、大范围重写以及会让代码库过度复杂的修复。
- 优先在正确的归属边界做小修复;除非能明显改善该缺陷类别,否则不重构。
- 持续进行,直到 Codex review 返回没有可采纳/可操作的发现。
- 如果由审查触发的修复改动了代码,重跑聚焦测试并重跑 Codex review。
- 绝不切换或覆盖审查模型。如果审查遇到模型容量问题,用同一模型重试同一命令几次。辅助脚本默认以 yolo/full-access 模式运行嵌套审查;仅在有意测试沙箱行为时使用 --no-yolo。
- 一旦审查命令/辅助脚本以退出码 0 结束且没有可采纳/可操作的发现,立即停止。不要为了得到更好看的“clean”行、第二意见或更清晰的收尾措辞而额外运行一次直接的 codex review。
- 将辅助脚本成功退出且没有可操作发现视为干净的审查结果,即使底层 Codex CLI 输出很简短。
- 如果以“有意为之/不值得修复”为由拒绝某条发现,仅当它解释了未来审查者应知道的真实不变量或归属决策时,才添加简短的代码内联注释。
- 不要仅为审查而推送。仅在用户要求 push/ship/PR 更新时才推送。
- 对于罕见的 Gitcrawl 缓存失败或安全审计抑制收尾,使用 references/troubleshooting.md。
选择目标
脏的本地工作:
codex review --uncommitted
仅当补丁在当前检出中确实处于未暂存/已暂存/未跟踪状态时才使用此项。对于已提交、已推送或 PR 工作,应让 Codex 指向提交或分支差异;不要仅因为辅助脚本文档先提到脏工作就强行使用 --mode local / --uncommitted。干净的 --uncommitted 审查只能证明没有本地补丁。
分支/PR 工作:
git fetch origin codex review --base origin/main
不要在使用 --base 时传入任何提示词。某些 Codex CLI 版本会同时拒绝内联和 stdin 提示词形式,包括形如 codex review --base <ref> - 的辅助命令,报错为 --base <BRANCH> cannot be used with [PROMPT]。如果辅助脚本遇到此错误,运行普通的 codex review --base <ref> 并报告辅助脚本的提示词注入被跳过。
如果存在打开的 PR,使用其实际 base:
base=$(gh pr view --json baseRefName --jq .baseRefName) codex review --base "origin/$base"
已提交的单个改动:
codex review --commit HEAD
或使用辅助脚本:
skills/codex-review/scripts/codex-review --mode commit --commit HEAD
对已经落地或已经推送到 main 的工作使用提交审查。推送后,用 origin/main 审查干净的 main 通常是空差异。对于小型提交栈,显式审查每个提交,或在合并前用 --base 审查分支。
并行收尾
如果格式化会改变行位置,先格式化。之后可以并行运行测试和审查:
skills/codex-review/scripts/codex-review --parallel-tests "<focused test command>"
权衡:测试可能迫使代码改动,从而使审查结果过时。如果测试或审查导致代码编辑,重跑受影响的测试并重跑审查,直到没有可采纳/可操作的发现。一旦该重跑干净退出,就停止;不要再花一个漫长的审查周期做冗余确认。
上下文效率
Codex review 通常噪声较多。当有子代理可用时,默认使用子代理过滤。要求它运行审查并只返回:
- 它接受的可操作发现
- 它拒绝的发现,附一行原因
- 需要重跑的确切文件/测试
仅在改动很小或子代理不可用时才内联运行。
辅助脚本
捆绑的辅助脚本:
"$HOME/.agents/skills/codex-review/scripts/codex-review" --help
仓库检出路径:
skills/codex-review/scripts/codex-review --help
该辅助脚本:
- 优先选择脏的 --uncommitted
- 否则如果 gh pr view 可用,使用当前 PR base
- 否则对非 main 分支使用 origin/main
- 当仓库有 package.json、pnpm-lock.yaml、node_modules 和 check 脚本时,自动并行运行 PNPM_CONFIG_PM_ON_FAIL=ignore PNPM_CONFIG_VERIFY_DEPS_BEFORE_RUN=false PNPM_CONFIG_OFFLINE=true pnpm run check;用 CODEX_REVIEW_AUTO_TESTS=0 禁用
- 对已提交的工作使用 --mode commit --commit <ref>,尤其是落地后的干净 main
- 对 PR/分支工作应保持 --mode auto 或强制 --mode branch;提交后不要强制 --mode local
- 除非设置了 --output 或 CODEX_REVIEW_OUTPUT,否则只写入 stdout
- 支持 --dry-run、--parallel-tests 和提交引用
- 默认以 --dangerously-bypass-approvals-and-sandbox 运行嵌套审查
- 在拒绝 --base 加辅助脚本 stdin 提示词的 Codex CLI 版本上,分支模式可能失败;遇到该确切解析错误时,重跑普通的 codex review --base <ref>,而不是回退到非 Codex 审查器
- 继续接受 --full-access;使用 --no-yolo 或 CODEX_REVIEW_YOLO=0 选择退出
- 当所选审查命令以退出码 0 结束时,打印 codex-review clean: no accepted/actionable findings reported
最终报告
包含:
- 使用的审查命令
- 运行的测试/证明
- 接受/拒绝的发现,简要说明原因
- 最终辅助脚本/审查运行得到的干净审查结果,或为何某条剩余发现被有意拒绝
不要仅为改进最终报告措辞而再运行一次 Codex review。如果最终辅助脚本运行以退出码 0 结束且没有产生可采纳/可操作的发现,就将该次运行报告为干净。