一些关于开发的杂谈话题 - 代码审核
内容提要
文章探讨AI时代代码审核的变革,认为逐行审核AI代码已无意义,人类应聚焦两端:源头严格审核spec,明确意图与验收标准;终点审核最终产物和证据,而非中间代码。中间代码交由不同模型的agent互相审核。作者以自研工具Prowl为例,介绍用docs-ai记录设计决策、用Review Loop工作流实现多agent自动审核的实践。
延伸解读
传统代码审核在AI时代为何失效
文章指出,传统代码审核依赖人类逐行检查来发现缺陷,但AI agent能持续工作数十小时,产出速度远超人类阅读能力。同时,agent能快速理解代码库,使得通过审核来保持团队理解的目的也过时。因此,人类逐行审核AI代码既主观不必要,客观也不可能,传统审核方式已不适应。
语义漂移:审核必须聚焦两端
从人的真实意图到最终代码,信息链变长,每次传递都可能失真,即语义漂移。越靠近源头,修正代价越小。因此人类应重点审核spec,确保意图和验收标准明确;同时审核最终产物和证据,而非中间代码。中间代码可交由不同模型的agent互相审核,以消除信息差。
实践方法:spec审核与证据验证
作者以Prowl为例,用docs-ai记录设计决策,其中000-plan.md是spec,需在编码前完成并逐字审核,占开发八成注意力。实现后agent写001-action.md记录偏差。审核最终产物时,只相信证据而非agent结论,对照spec验收标准检查。中间代码由Review Loop工作流让不同模型agent互审,人类只需看总结。
Q&A
AI写的代码还需要人工审核吗?
需要,但不应逐行审核。人类应聚焦源头(spec)和终点(最终产物与证据),中间代码交给不同模型的agent互相审核。
为什么逐行审核AI生成的代码没有意义?
因为AI产出代码的速度极快,人类无法逐行阅读大量diff;同时agent能自主理解代码库,传统审核中寻找缺陷和保持团队理解的目的已过时。
在AI时代,人类应该在代码审核的哪些环节投入精力?
人类应聚焦两端:源头严格审核spec,明确意图与验收标准;终点审核最终产物和证据,而非中间代码。
如何审核AI生成的代码?具体流程是什么?
让review上浮到spec,逐字审核;让review下沉到最终产物,审核证据而非代码;中间代码由不同模型的agent互相审核,直到无异议。
什么是语义漂移?它如何影响AI代码审核?
语义漂移指信息在传递中失真。从人的意图到代码经过多个环节,每个环节都可能引入偏差,因此需要审核来消除信息差。
Prowl的Review Loop工作流是如何实现多agent自动审核的?
Review Loop用YAML定义多agent协作:main写brief,reviewer审核,main评估并修复,循环直到verdict为clean且达到最小轮数,最后main总结。
在spec审核阶段,应该关注哪些问题?
关注背景、目标与非目标、设计方案、备选方案与决策,以及验收标准。验收标准应在spec阶段定下,作为后续实现和验收的依据。
如何确保AI生成的代码符合预期?
在spec中明确验收标准,要求agent提供证据(如测试结果、运行日志),人类对照验收标准检查证据,并亲自使用最终产物。