Thoughtworks杰出工程师比尔吉塔·伯克勒提出AI编码三维度风险评估法——可能性、影响与可检测性,教你科学判断何时可“Vibe Coding”,何时必须深度审查,平衡效率与安全。
比尔吉塔可不是纸上谈兵的理论派。她长期奋战在一线,既是代码的缔造者,也是复杂系统的守护者。如今,她专注于AI辅助交付,每天都在和各种大模型、智能编程助手打交道。
她发现,关于“AI生成的代码要不要看”这个问题,大家总爱走极端——要么全盘信任,要么彻底拒绝。但现实从来不是非黑即白。真正的高手,懂得在信任与警惕之间找到平衡点。而这个平衡,靠的不是运气,而是一套清晰的“微风险评估”框架。
这套框架,核心就三个维度:可能性(Probability)、影响(Impact)和可检测性(Detectability)。
别被术语吓到,其实它们就是你在日常开发中不断问自己的三个问题:AI出错的概率高不高?万一出错了后果严不严重?出了错我能不能及时发现?把这三个问题想清楚,你就知道该不该“Vibe”,该花多少精力去审查AI的产出。
先说第一个维度:可能性——AI到底有多可能搞砸?
很多人以为,AI出错纯看模型强不强。其实没那么简单。比尔吉塔指出,这背后至少有五个关键因素。第一,你得“懂你的工具”。市面上那些AI编程助手,有的基于开源模型,有的是闭源黑盒。你可能不知道它内部怎么运作,但你必须清楚它的“性格”——比如它擅长什么语言?在复杂逻辑面前会不会“胡说八道”?这些都得靠你一次次实战积累经验。
第二,要看你的“用例是不是AI友好”。如果你在用一个冷门框架,或者要实现一个极其复杂的业务逻辑,那AI大概率会翻车。相反,如果你只是照着UI设计稿搭个静态页面,或者写个临时脚本跑数据,那AI的表现往往又快又准。关键在于:这件事对“正确性”的要求有多高?是能容忍粗糙原型,还是必须零误差?
第三,也是最容易被忽视的——上下文是否充足。AI不是神,它只能基于你给的信息做判断。如果你的AI助手只能看到当前文件,看不到整个项目的结构、领域模型、接口规范,那它生成的代码很可能和现有系统格格不入。
更糟的是,如果你们的代码库本身就是一团“意大利面条”——模块混乱、命名随意、满是临时补丁,那AI很可能有样学样,把坏习惯复制一遍。所以,一个“AI友好”的代码库,应该是模块清晰、边界明确、风格统一的。这不仅是为人类开发者考虑,也是为AI铺路。
接下来是第二个维度:影响——万一AI错了,后果有多严重?
这个问题直接决定你的“容错空间”。如果你只是在做技术预研(spike),随便跑个Demo验证想法,那就算AI写错了,大不了删掉重来,毫无压力。但如果你正在修改一个核心支付服务,而今晚刚好轮到你on-call(值班),那每一个字符都可能关系到公司营收和用户信任。这时候还敢“Vibe”吗?
比尔吉塔给出了两个灵魂拷问,建议你每次提交前都默念一遍:“如果今晚我值班,敢不敢直接上线这段代码?” 以及 “这段代码一旦出问题,会影响多少下游系统或用户?” 如果答案让你心头一紧,那就别犹豫,必须深度审查,甚至手动重写。
第三个维度,也是最后一道防线:可检测性——你能不能及时发现AI犯的错?
这其实回归到了软件工程的老本行。你有没有完善的单元测试、集成测试?你用的是强类型语言(比如TypeScript、Java)还是弱类型(比如JavaScript)?你的监控告警系统是否灵敏?这些传统工程实践,在AI时代不仅没过时,反而变得更重要了。因为它们构成了你的“安全网”。
此外,你对代码库的熟悉程度也至关重要。如果你是这个模块的原作者,哪怕AI生成的代码逻辑绕了点弯,你也能一眼看出哪里不对劲。但如果你是刚接手一个陌生项目,那再“合理”的代码都可能暗藏陷阱。所以,别高估AI,也别低估自己的领域知识——它们是互补的。
把这三个维度结合起来,你就得到了一个“审查努力度”的滑动标尺。在最理想的情况下——AI出错概率低、影响小、又容易被测试发现——那你完全可以放心“Vibe Coding”,效率拉满。但在最危险的场景——AI很可能出错、后果严重、又难以察觉——那你必须像对待实习生的代码一样,逐行审查,甚至重构。
比尔吉塔还分享了一个真实案例:他们曾帮客户做遗留系统迁移,第一步是用AI反向工程,生成现有功能的详细描述。听起来很酷,但风险不小。他们用的模型不太听话,后端代码又拿不到,只能靠反编译。出错概率中等。而系统服务着成千上万的外部合作伙伴,一旦理解偏差,重建就会出错,影响声誉和收入——影响也是中等。更麻烦的是,老系统根本没有测试用例,错误很难自动暴露——可检测性还是中等。
面对这种“三中”局面,他们没有一刀切地全信或全不信,而是设计了一套组合拳:多次运行提示词,对比结果差异;引入领域专家人工审核;制定分阶段上线策略;还专门写了功能对齐测试。正是这种结构化的风险评估,让他们既利用了AI的速度,又守住了质量底线。
最后,比尔吉塔强调:这套评估方法,一开始可能需要你刻意练习,列清单、打分数。但用得多了,就会变成一种直觉。你会自然地感知到:“这段代码AI能搞定”,“那个模块必须我亲手来”。
这种直觉,不是凭空而来,而是传统工程素养与AI使用经验深度融合的结果。
不过,谈到直觉就又回到了vibe coding氛围感觉上来了,编码又变成手艺活,如同厨师炒菜了。