Vibe Coding 异步评审包:证据先行,决策不埋在聊天里
Reviewer 隔几个时区打开 PR 时,AI 摘要、截图和测试结果可能已对应不同版本。本文冻结评审代际,连接声明、Diff、回执和未决项,并保存明确决策。
本文要点
- 主题聚焦:AI、Vibe Coding、DevOps、开源
- 适合人群:独立开发者、全栈工程师、AI 应用开发者
- 核心价值:快速理解背景、实践路径、常见误区和工程建议
作者下班前贴出“测试全过”的 AI 总结,reviewer 八小时后打开 PR,此时又追加了两个 commit;截图来自旧 UI,测试来自新实现,评论线程引用的行已经移动。大家都在认真工作,却没有任何人能确认哪些证据支持当前代码。异步协作的首要问题不是回复速度,而是让工件跨时间仍属于同一代际。
本文不重复编程 Agent 的 PR 评审闭环。后者关注模型提出问题、作者修复和人工最终裁决;这里假定一个任务与 PR 垂直切片已经形成,只解决异步 reviewer 怎样独立获取证据,以及决定怎样在后续更新中保持有效。
冻结 review generation
每次请求正式评审时生成一个不可变 reviewGeneration,至少绑定 base commit、head commit、diff digest、规格或任务版本、证据清单摘要和创建时间。作者随后 push 新 commit,就创建下一代;旧评论可以保留为历史,但批准与测试回执默认降级为旧代证据,除非 reviewer 明确说明哪些声明不受影响。
GitHub pull request review 支持 comment、approve 和 request changes 等正式状态,团队应使用平台决定而不是只在聊天里发“LGTM”。平台状态仍需引用具体代际和责任范围;一个前端 reviewer 的批准不能自动覆盖数据库迁移风险。W3C PROV 的实体、活动与责任关系可帮助表达“哪项结果由哪次运行、基于哪个代码实体产生”,无需为此搭建复杂图数据库。
一个最小评审包包含:
generation: PR-418/G3
base: 70ab...
head: d193...
claims:
- id: AC-21
diff: [src/export/**]
evidence: [test:csv-42, manual:download-7]
- id: AUTH-7
evidence: [test:deny-18]
openDecisions: [D-4 filename collision policy]
knownLimits: [Safari download path not evaluated]
包中链接原始 diff、测试回执、fixture 摘要、必要截图或录屏、迁移说明和来源文档。AI 摘要标为派生视图,不能覆盖原证据;日志先按命令回执与脱敏处理,不把 token、用户数据和内部 URL 复制到 PR。
Reviewer 按声明取证,不按文件漫游
先读目标、non-goals 和 claim,再从每条 claim 跳到相关 diff 与证据。代码外的行为同样要看:配置默认值、迁移、生成源、权限和失败恢复。reviewer 可抽查命令,或用相同 fixture 独立重放;无法重现就标记证据缺口,不根据作者语气猜测通过。
评论格式保持可行动:claim / observation / evidence / impact / requested decision。例如“AUTH-7:拒绝测试只覆盖匿名用户;组织内无导出权限角色未覆盖,当前证据不能支持权限声明;请补反例或缩小 claim”。AI 可以帮助定位候选行,但引用和影响由 reviewer 核实。
当两名 reviewer 结论冲突,不让最后一条评论覆盖前一条。登记分歧针对哪个 claim、各自依据、需要谁仲裁和安全默认状态。涉及产品语义回到 task owner,涉及安全边界回到对应 owner;人类与 AI 角色边界使仲裁不是随机找一个在线的人。
把评论与决定分开
评论是观察,决定必须有状态和 owner。可采用:
ACCEPTED:当前 generation 的指定 claim 有足够证据;CHANGES_REQUIRED:列出阻断 claim 与重新提交条件;BLOCKED:等待外部事实、权限或环境,不能由作者改代码解决;DEFERRED:不阻断当前 non-goal,但有后续任务和责任人;SUPERSEDED:新 generation 已替代本次决定。
未回复的评论不自动视为接受,已解决线程也不等于风险消失。作者处理反馈后,列出“改了什么、哪项证据重跑、哪项决定需要重审”;禁止让 Agent 批量标记 resolved。高风险批准者要检查 head 与 generation 未变化,再作最终决定。
用冷接收和时效指标验收流程
抽取几份 PR,让未参加同步讨论的 reviewer 只凭评审包在限定时间内复述行为、重放关键证据并指出开放决定。若必须翻聊天或向作者询问运行前提,补的是工件,不是要求大家永远在线。统计证据过期率、无法复现率、从 request changes 到新代际的时间和合并后返工来源,不能用评论数衡量质量。
合并前把最终 generation、批准范围和已知限制接到Definition of Done。合并后发现旧批准误用于新 head,要保留代际链并修流程,不修改历史截图掩盖。Vibe Coding 的异步效率来自 reviewer 不必共享时钟,但所有人必须共享同一份可验证代码事实和明确决定。
Related