那个周三下午,我把一连串改动塞进了一次提交里:重写落地页、适配移动端、新增六篇博客、刷新站点地图。PR提交得很痛快,但痛快之后,那种“谁都没仔细看就合并”的不安很快就浮了上来。
AI辅助写代码的速度一骑绝尘,可一个尖锐的问题随之浮现:代码在抵达真实用户之前,谁来为它做最后的检查?写代码的工具显然不会,因为它已经认为任务完成了——这不是工具的错,任谁写完东西,都还需要另一个人审一眼。
有人说,让人类同事做审查就够了。但在这个提交通常塞了多处改动的节奏里,人工逐行复查不仅费力,还容易漏过跨文件的一致性问题。于是我开始尝试另一种方案:用AI来审查AI生成的代码。Qodo就是那时被我找到的,它不像写代码的AI那样急于收工,而是专门找那些被遗漏的安全问题、跨文件逻辑冲突和持续集成失效点。
连上仓库之后,Qodo做的第一件事就是在PR #138下面贴出一行总结:3个缺陷,0条规则违规,1条合规规则已应用。没有额外配置,它已经索引过整个代码库,这为后面一个关键发现埋下了伏笔——那是只对比差异的工具根本看不到的暗坑。
第一个问题藏着一种AI生成界面里常被遗漏的隐患:在一个a标签上用了target="_blank",却没配上可靠的rel属性。没补上那个卫士,新打开的页面就能通过window.opener拿到原页面的控制权,悄无声息地把原标签页重定向到别的网站。这种攻击叫作反向标签劫持,人工审查偶尔会漏掉,而AI生成代码时几乎从不主动加上那层防护,仿佛它天然不觉得这是个事儿。
第二个问题是站点地图路由断裂:一个本该指向sitemap.xml的链接返回了404。单看这个PR的改动很难察觉,因为路由定义散落在别的文件里。Qodo没有只看差异,而是把改动放回整个代码库里验了一次连通性,才揪出这个跨文件的不一致。如果我用的是只看diff的审查工具,这个断点大概率会流到线上。
第三个是依赖冲突直接把构建打断了。PR里引入了一个库,版本号跟锁文件里另一个包的要求刚好顶住。CI日志里报了错,但直到Qodo把堆栈追溯和代码改动并排标出来,我才意识到那个冲突点就在这次提交里。
这三个发现串在一起,刚好把一场辩论的双方摆上了桌:正方说AI写代码效率极高,应该让人从琐碎审查里解脱出来;反方则担心没有可靠审查环节,就等于把生产环境的安全交给运气。从这次经验来看,双方都没错——错的是把写代码和审代码混为一谈。写代码的AI是油门,但一辆车不能只有油门,还要有刹车和仪表盘。
Qodo在这个PR里扮演的就是那套仪表盘:它不参与生成,而是专门检查安全把控、跨文件一致性和CI就绪状态。这跟现有的文档机器人、安全扫描机器人角色完全不同——那些工具各自为战,而一个理解代码库整体结构的审查工具,才能把碎片化的风险拼成完整的画面。好坏代码的评判,不只在提交的几行之间,更在那些改动的涟漪能扩散到的所有角落。
如果你也在把大量生成代码直接推向生产,不妨在代码审查环节划分出两个清晰的工种:生成工具负责“造出来”,审查工具负责“查明白”。这层分工一旦确立,AI辅助开发的节奏才能真正既快又稳。
热门跟贴