这篇用一个模拟场景说明:AI 改完代码后,人类如何用 Git 把变更重新整理成可审查、可验证、可回滚的工程单元。
你让 AI 修复一个问题:
订单超时配置为空时,系统应该使用默认超时时间,不能直接抛异常。
AI 完成后,工作区变成这样:
git status --short
M src/order/timeout.ts
M src/order/validator.ts
M src/order/index.ts
M test/order/timeout.test.ts
M package-lock.json
M README.md
?? debug-output.log
这时不要直接 git add .。
git diff --stat
重点看三件事:
这个例子里,任务是修复订单超时配置,但出现了:
src/order/index.tspackage-lock.jsonREADME.mddebug-output.log这些都需要先确认是否相关。
先处理未跟踪日志:
rm debug-output.log
如果 package-lock.json 没有真实依赖变化,恢复它:
git restore package-lock.json
如果 README.md 只是 AI 顺手补的泛泛说明,先恢复:
git restore README.md
再看一次:
git status --short
git diff --stat
目标状态应该更聚焦:
M src/order/timeout.ts
M src/order/validator.ts
M test/order/timeout.test.ts
先看测试:
git diff -- test/order/timeout.test.ts
如果测试确实覆盖了“配置为空时使用默认超时时间”,先单独提交测试:
git add test/order/timeout.test.ts
git commit -m "test(order): cover empty timeout config"
再看实现:
git diff -- src/order/timeout.ts src/order/validator.ts
确认实现只改了默认值处理,没有顺手改错误码、接口签名、日志格式。
git add src/order/timeout.ts src/order/validator.ts
git commit -m "fix(order): fallback to default timeout config"
这样最后形成两个 commit:
test(order): cover empty timeout config
fix(order): fallback to default timeout config
可以把当前 diff 或 commit 范围交给 AI 审查:
请审查当前分支相对 main 的变更。
只列具体风险,不做泛泛总结。
重点检查:
1. 行为边界是否被扩大
2. 错误处理是否变弱
3. 默认值是否影响兼容性
4. 测试是否覆盖真实业务场景
5. 是否有无关变更混入
如果 AI 输出的问题没有文件路径、没有具体风险、只有“看起来不错”,这轮 Review 价值很低,需要继续追问。
人类 reviewer 至少要确认:
涉及线上配置时,静态代码只能说明默认行为。最终线上值仍要结合配置中心、环境变量或部署参数确认。
只跑和本次变更最相关的验证:
npm test -- test/order/timeout.test.ts
如果项目有 lint 或类型检查,也补上:
npm run lint
npm run typecheck
PR 里要写清实际执行过的命令和结果。
推荐 PR 描述:
## What changed
- Add test coverage for empty timeout config
- Fallback to default timeout config when config is empty
## Why
Empty timeout config should not break order validation.
## How tested
- npm test -- test/order/timeout.test.ts
- npm run lint
## Risk
Low. The change only affects empty timeout config fallback.
## Rollback plan
Revert this PR.
如果 AI 一次改了跨层能力,比如 model、service、API、UI、文档都变了,单个 PR 仍然很难审。
这时可以拆成 stacked PR:
PR 1: add tests for timeout fallback
PR 2: implement timeout fallback
PR 3: update API response note
PR 4: update docs
详细见 Stacked PR for AI-Generated Changes。
风险:无关文件、调试日志、依赖变化会混入。
建议:永远先看 git diff --stat。
风险:AI 可能写出只验证当前实现的测试。
建议:确认测试是否覆盖业务边界,并尽量确认修复前会失败。
风险:reviewer 无法判断风险来自哪里。
建议:先修行为,再单独做重构。