AI 生成的代码
由 LLM 编程工具写出、而非工程师敲出的代码。它本身并不更差,但它每次都跳过同样的东西,所以在真实金钱或用户接触它之前,需要一遍结构化的生产就绪检查。
AI 生成的代码,是由 LLM 编程工具(Copilot、Cursor、Claude Code、Lovable 等等)产出、而不是手敲出来的代码。需要先说清楚的是:它本身并不比人类代码差。在 happy path 上,它往往比一个赶工的工程师在周五傍晚六点写出来的东西更干净、更地道、注释更好。把所有 AI 生成的代码当垃圾,和把它们全当成可上生产,是同样错误的。
真正值得了解的特性是:AI 生成的代码每次以同样的方式失败。LLM 没有糟糕的一天,没有截止日期,也没有怨气。它有的是一个训练分布和一个提示词。所以缺口是系统性的,而非随机的:它会漏掉提示词没提到的授权检查,会信任提示词没标记为恶意的输入,会因为提示词描述的是成功路径而把错误处理写得很单薄。系统性的缺口是好消息,因为系统性的缺口可以用一份结构化的清单来堵上,而不必指望评审者碰巧注意到。
举个与人类 bug 的区别。一个疲惫的工程师可能会随机地在二十个端点里漏掉某一个的校验,而评审者也恰好略过了它。而你让 LLM 去构建二十个端点,它倾向于在这二十个上以同样方式处理校验,所以如果错,它就一致地错,懂这个模式的评审者一次就能抓住全部二十个。工作不是"找出那个随机错误"。工作是"确认模型做出的系统性决定,并在生产需要更多的地方推翻它"。这比追着人类那种一次性的疏忽要更快、更可靠。
诚实的取舍:AI 生成的代码把精力从写转移到了评审上,而这只有在评审真的发生时才省时间。跳过评审,你得到的就是带着更漂亮提交历史的 vibe-coded 软件。工具让写代码几乎免费,这诱使团队跳过那唯一一个从来不是瓶颈的步骤,即抓系统性缺口的那遍 TDD 与安全检查。只有当你把省下的一部分投回到那个你以为不再需要的评审上时,省下的时间才是真实的。
Wavect 把 AI 生成的代码当作初稿,在上线前需要一遍已知的、可重复的生产就绪检查,这件事在 Software Quality Assurance 下完成。因为缺口是可预测的,这一遍很快:每个端点都做授权、每个输入都做校验、把密钥从客户端拿掉、处理错误,然后补上一套回归测试套件,以及一道 CI/CD 闸门,好让下一个提示词不会悄悄重新捅开一个窟窿。这样做出来,AI 生成的代码就是真实的生产力收益,而不是一堆沉默的技术债。