AI帮你写代码?先看看你付出的那些隐形代价
AI生成代码的隐形代价:Vibe Coding哪里出了问题
上周跟一个创业公司的创始人聊天,他跟我说了一件挺让人担心的事。
他说他们现在做功能的速度比以前的公司快三倍。"我们所有东西都用 vibe coding,"他说这话的时候满脸得意。
然后他提了一嘴:过去一个月,他们的认证系统被攻破了两次。
这两件事之间,不是巧合。
速度的陷阱
AI开发者大会上,大家都在吹AI写代码有多快。但有个事实没人愿意提:速度上来了,代码质量会打折扣。
研究表明,AI生成的代码里大概有45%存在安全漏洞。不是那种无关痛痒的小问题——是真实的、可被利用的漏洞,会导致用户数据泄露、认证被绕过,或者给攻击者开一道后门。
问题不在于AI写出来的代码本身质量差。问题在于 vibe coding 把那些本该拦住坏代码的关卡全撤掉了。
你给AI agent一个prompt,它输出代码,你直接发布——这个过程中,你跳过了整个开发流程。没有需求评审,没有安全审计,没有测试覆盖率检查,没有文档。你绕过的那些检查点,恰恰是为了保护用户和你的声誉而存在的。
AI会在哪些地方出错(有规律可循)
这里有个更危险的地方:AI犯的错不是随机分布的,而是集中在最不该出错的地方。
跨站脚本漏洞出现的概率是人类代码的2.74倍。逻辑错误是基准的1.75倍。这些不是审美问题或者边界情况没处理好——这些漏洞直接影响认证系统、支付流程和任何处理不可信用户输入的地方。
独立的安全监测数据也证实了这个规律。行业报告显示,现在漏洞数量的增加直接跟开发流程中越来越多使用生成式AI有关。而且这些漏洞的严重程度也在上升。
三个让问题恶化的特性
这不只是个人为失误的问题。问题之所以越来越严重,是因为AI agent的工作方式本身就存在结构性问题:
速度太快,review跟不上。 一个agent几秒钟能生成一千行代码。人类reviewer根本不可能以同样的速度认真检查这些代码。这就产生了跳过review的结构性压力。
非确定性导致无法复现。 同一个prompt可能产出不同的结果。你发现的那个bug?抱歉,你很难精确定位到底是哪个版本的代码导致的。这让调试变成了移动靶子,审计记录也变得不可靠。
成本压力让人走捷径。 AI token是要花钱的。跑完整的测试更费token。经济激励天然倾向于削减验证环节——这和安全开发的要求正好相反。
不是理论,是真实发生的事
你可能觉得这只是理论推演。不是的。
安全研究人员已经记录过AI生成的恶意软件,里面有严重的实现缺陷——本来想做危险的事,结果连基本的加密实现都搞砸了。更让人担心的是:有些开发者出于好意,用AI帮忙生成了代码,结果上线后发现认证绕过漏洞,两边都是同样的问题:把AI的输出当成可以直接上线的代码,跳过了常规的验证流程。
中间路线
我不是在劝你别用AI写代码。这就像2015年劝开发者别用GitHub一样不现实。生产力的提升是实打实的,这技术也不会消失。
但我们需要诚实面对一个变化:瓶颈转移了。
AI coding确实提升了吞吐量。但瓶颈从打字环节转移到了验证环节。如果你没意识到这个变化,你会欠下技术债务的速度会比发布功能的速度还快。
具体怎么做:
把AI当成高速写代码的初级工程师,而不是资深工程师。 初级开发者能快速产出代码。资深开发者能告诉你为什么那代码可以安全发布。AI擅长前者,后者需要人来做。
给PR加个合同。 每个pull request都应该说明白:意图是什么?怎么证明它能正常工作?风险等级是多少?有没有用AI生成代码?如果用了,生成的是哪部分?这能让 vibe coding 丢掉的责任重新回到桌面上。
把关键安全检查分散开。 别把认证中间件当成唯一的关卡。在路由处理函数里直接加上授权检查。把涉及安全的核心逻辑从AI工具可能悄悄配错的单点故障里拉出来。
让 vibe coding 待在该待的地方。 搭CLI工具的架子?原型化一个UI?探索优化方案、还没确定架构方向?这些场景很适合。直接发到生产环境、处理不可信输入?这种地方需要的是需求驱动的开发加上review关卡。
合入前做威胁建模。 任何处理不可信输入的代码路径,在进入生产环境之前必须有人做一遍威胁建模。这不是可选项,不是赶工期的时候可以跳过的。
真正的规则
"可以vibe"和"必须认真工程化"之间的界限不是一条清晰的线。随着模型能力变强、你的系统复杂度增加,这条线会移动。规则不应该是"永远不用AI写代码"。规则应该是:"知道自己现在在哪种模式,用风险等级来决定把关的力度。"
但有一点是所有人都同意的:一旦你的bug可能伤害到别人,prompt完直接发布就是在退步。一旦你的代码处理真实的钱、真实的个人信息、或者涉及真实的安全决策,vibe coding带来的速度优势就没理由撤掉保护用户的验证基础设施。
那些负责任地使用AI生成代码的开发者和团队,其实并没有更慢。他们只是清楚验证的瓶颈现在在哪里,然后诚实地为它分配了资源。
你的用户在指望你catch住AI漏掉的东西。
我们相信强大的工具值得被认真对待。无论你是为下一个项目注册域名,还是部署AI辅助开发的代码,负责工程的基本原则都是一样的。快速建,但建对。