背景:为什么这个问题值得关注
传统 Git 开发模式:基于主分支创建 feature 分支 → 完成开发 → 提 PR → 审核者逐行审查 → 合并。
人工开发时代,这个流程是合理的——代码是稀缺资源,审查是保护性检查,每一行代码都承载着开发者的意图。
智能体时代,这个模式失效了。Claude Code、Copilot 等工具让代码产出速度提升 10 倍以上:
- 一次 prompt 可以生成数百行代码
- 一次任务可以产出数个文件
- PR diff 从几百行变成几千行,甚至上万行
结果是:代码生产速度 » 代码审核速度。 审核者成了瓶颈,PR 堆积,团队陷入"提 PR → 审核不了 → 阻塞 → 继续提"的恶性循环。
具体表现为:
- PR 大量堆积,无法及时审核
- 前序 PR 未合并,后续功能开发直接阻塞
- 审核者认知超载,审查质量下降
核心理念:探索阶段与提交阶段分离
传统模式的根本问题,是把"探索"和"提交"混在同一个流程里。
AI 编程的特点是:快速产出,不惧怕失败。让 AI 写 100 行探索性代码几乎是零成本的,但它不应该直接进入审核流程。
解决方案是物理分离两个阶段:
探索阶段 提交阶段
(AI 自由发挥) (规范输出)
↓
exp/feature-xxx → feature/xxx → PR → master
- 探索阶段:在长命
exp/分支上自由推进,不提 PR,不审核,可以随时丢弃重建。AI 可以尽情尝试,失败了就换方向。 - 提交阶段:把成熟的部分以规范的方式输出到
feature/分支,每个 commit 对应单一功能,做好代码拆分,再提 PR 走审核。
这样审核者只在"摘桃子"的阶段介入,看到的是经过整理的产出,而不是 AI 的全部思考过程。
Git 分支策略
分支命名规范
exp/{负责人}-{功能名} ← 个人探索分支,每人一个,平行推进
feature/{负责人}-{功能名} ← 准备交付的分支,通过 cherry-pick 从 exp 摘取
示例:
master
├── exp/zhangsan-payment
├── exp/wangsi-auth
├── feature/zhangsan-payment ← 从 exp/zhangsan-payment 摘取
└── feature/wangsi-auth ← 从 exp/wangsi-auth 摘取
完整开发流程
1. 拿到需求
└── 从 master 切出 exp/{功能名},开始探索
└── AI 在 exp/ 分支自由产出代码,不限制数量和规模
2. 确认交付
└── 从 exp/ 分支切出 feature/{功能名}
└── 指令 AI 在 feature/ 分支按"最小 commit 原则"整理代码
└── 单个 commit 对应单一功能或单一修改
3. 提 PR
└── feature/ → master
└── PR 描述模板化
4. 合入 master 后
└── exp/ 分支可保留作为备份,或清理删除
└── 继续下一个功能的探索
最小 commit 原则
AI 在 feature/ 分支整理代码时,应遵循:
- 一个 commit 对应一个逻辑改动(不是按文件数量,而是按"做了一件事")
- 不要把不相关的改动混在一个 commit 里
- 每个 commit 附带清晰的 commit message
这样后续 cherry-pick 和追溯时会清晰很多。
PR 审核优化
PR 大小限制
| 类型 | 行数限制 | 处理方式 |
|---|---|---|
| 小 PR | ≤300 行 | 简化审查,1 人通过即可合入 |
| 中 PR | 300-500 行 | 标准审查 |
| 大 PR | >500 行 | 拒绝原路合入,打回让 AI 拆分 |
AI 生成代码的 prompt 里可以直接写这个限制,让它自己知道不要一次生成太多。
PR 描述模板
## 这次改了什么(≤3 句话)
## 为什么要这样改
## 影响范围
- 改了哪些文件/模块
- 是否破坏性变更
## 自测情况
- [ ] 单元测试通过
- [ ] 集成测试通过(若有)
- [ ] 手动验证(若需)
审核者先读这段,脑子里有框架再去看 diff,认知负担大幅降低。
依赖关系声明
用 GitLab 的 ! 引用把 PR 串成链:
!42 依赖 !41
!43 依赖 !42
审核者可以清楚看到先审哪个,合并顺序也不会乱。
潜在风险与局限
公共基础模块问题
探索阶段如果多个功能依赖同一个基础模块,可能会出现:
- A 在 exp/a 里写了公共模块,B 在 exp/b 里也写了同一模块的另一种实现
- 两者都成熟后,合入 master 时产生冲突
解法:公共基础模块优先摘取。谁先摸到公共代码,谁负责尽快把这个模块做成 feature PR 合入 master。其他人基于 master 继续探索。
如果公共模块复杂,可以考虑共建一个 exp/shared 分支专门放公共代码,探索成熟后同样走 PR 流程。
代码一致性风险
探索阶段代码不经过审核直接产出,如果 AI 生成的代码有隐蔽问题,可能在后续使用中才发现。
解法:
- 合入 master 前必须通过 CI(单元测试、集成测试)
- 高风险模块(支付、认证、核心业务逻辑)强制要求人工审核
- 上线后有回滚能力,快速回退
过度探索的浪费
AI 高产能可能导致"探索了 10 个方向,最后只发了 2 个"的情况。探索阶段虽然没有审核成本,但代码维护本身有成本。
解法:定期盘点 exp/ 分支状态,明确哪些探索是确定要交付的,哪些是已放弃的,及时清理。
总结
AI 智能体让代码开发效率发生量变,但代码审核仍然是人力密集型工作。当生产速度提升 10 倍,审核模式必须跟着变,否则就会陷入堆积和阻塞。
「探索-提交」两阶段分离的核心思路是:
- 不让 AI 的全部产出直接冲击审核流程
- 用物理隔离代替流程压缩
- 让审核者只看"值得看"的部分
这不需要推翻现有的 Git 协作模式,只需要基于智能体的能力,优化分支管理与 PR 拆分流程,就能实现"高效开发"与"规范审核"的双赢。
下一步行动
对于想尝试这个方案的团队,最小化行动清单:
- 约定团队 Git 分支命名规范(exp/、feature/)
- 约定:exp/ 分支不提 PR、不审核,自由推进
- 约定 PR 大小限制(建议 ≤300 行)
- 配置 GitLab PR 描述模板
- 选定一个小的探索功能,走一遍完整流程
找到卡点后再迭代,不要一开始就设计完美流程。