坑库
分段审过了,还要整分支终审
每个阶段单独审过,不代表合在一起没问题。防止跨阶段、跨文件的交互 bug 混进主干
亲历产品组织阶段 · 发布更新于 2026-10-16
一句话规则
多阶段的功能合并前,必须对整个分支做一次终审
发生了什么
一个多阶段的功能,每个阶段完成时,我都让另一个模型家族单独审一轮,发现的问题也都修了。
合并前,我对整个分支相对 main 的全部改动又做了一次终审,结果又抓出 5 个深层 bug。它们不在任何一个阶段的 diff 里,而是出在跨文件的交互上。
为什么会这样
分阶段审查,每次看的都是局部 diff。每一段在自己的上下文里都是对的,bug 藏在段与段之间:
- 后面的阶段改了前面阶段依赖的函数签名、默认值或数据形状
- 一个约束横跨好几个文件,没有哪一次 diff 能同时看到它的全部
- 早期阶段的审查结论,在后续改动之后已经过期,却没人重审
这和单元测试与集成测试的关系一样:每个零件都合格,装起来不一定能用。
怎么做
合并前看整个分支。三个点表示“从分叉点算起”的全部改动:
git diff --stat main...HEAD # 先看范围
codex review --base main # 整个分支交给另一个模型家族审codex review --base 不能再附加自定义提示词,它会按自带的审查标准看整个分支。内置的 /code-review 后面跟 PR 号,也能审整个 PR。
换一个新会话来审。做阶段审查的会话装满了各阶段的细节,也容易沿用之前“已经审过”的结论。
点名要看的交互:共享状态、调用约定、错误处理链路,以及阶段之间的假设有没有被后来的改动推翻。这些写进终审的提示词里(用 codex exec 或 gstack 的 /codex 发起;codex review --base 带不了自定义提示词)。
把终审写进 PR 模板,作为合并关卡:
- [ ] 整分支终审:已做,发现 N 个问题,已处理 N 个