超越基准:衡量AI生成代码的真实成本
观点 发布日期:2025年11月21日 作者:Edgar Kussberg
软件开发的AI采用第一波浪潮是关于生产力的。过去几年,AI对软件开发人员来说就像魔术:我们提出问题,看似完美的代码就会出现。生产力的提升是毋庸置疑的,新一代开发人员正与AI助手作为他们的常伴一同成长。这是软件世界的一次巨大飞跃,并且它将继续存在。
下一波——也是更为关键的一波——将是关于风险管理。虽然开发人员欣然接受大型语言模型(LLMs)解决编码难题的卓越能力,但现在是时候讨论这些模型所产生的代码的质量、安全性和长期成本了。当前的挑战不再是让AI编写出能运行的代码,而是确保AI编写出能持久的代码。
到目前为止,根据METR的研究,软件开发人员处理LLMs引发的质量和风险问题所花费的时间,非但没有让他们更快,反而使他们整体工作速度降低了近20%。
质量债务 当前AI方法的首要也是最普遍的风险是创造了大量长期的技术债务,即质量债务。行业对性能基准的关注激励模型不惜任何代价寻找正确答案,而忽视了代码本身的质量。虽然模型可以在功能测试中获得高通过率,但这些分数并未说明代码的结构或可维护性。
事实上,在我们研究报告《领先LLMs的编码人格》中对其输出进行深入分析表明,对于每一个模型,超过90%发现的问题是“代码异味”——技术债务的原材料。这些并非功能错误,而是结构不良和高度复杂性的指标,将导致更高的总拥有成本。
对于某些模型,最常见的问题是遗留“死/未使用/冗余代码”,这可能占其质量问题的42%以上。对于其他模型,主要问题是未能遵循“设计/框架最佳实践”。这意味着,虽然AI正在加速新功能的创建,但它也正将未来的维护问题系统地嵌入我们今天的代码库中。
安全赤字 第二个风险是系统性的、严重的安全赤字。这不是偶然的错误,而是所有评估模型普遍存在的根本性安全意识缺失。这也并非偶然的幻觉,而是植根于其设计和训练的结构性失败。LLMs难以防止注入缺陷,因为做到这一点需要一种称为污点追踪的非局部数据流分析,这通常超出了其典型上下文窗口的范围。LLMs还会生成硬编码的秘密——如API密钥或访问令牌——因为这些缺陷存在于它们的训练数据中。
结果是严峻的:所有模型都产生“高得惊人的最高严重性等级漏洞比例”。对于Meta的Llama 3.2 90B模型,其引入的漏洞中超过70%属于最高的“阻塞性”严重等级。最普遍的缺陷是关键漏洞,如“路径遍历与注入”和“硬编码凭据”。这揭示了一个关键差距:使模型成为强大代码生成器的过程,也使它们能够高效地复制从公共数据中学到的不安全模式。
人格悖论 第三个也是最复杂的风险来自模型独特且可测量的“编码人格”。这些人格由可量化的特征定义,如冗长度(生成的代码总量)、复杂度(代码的逻辑复杂性)和沟通度(注释的密度)。
不同的模型引入不同种类的风险,而对“更好”人格的追求可能会矛盾地导致更危险的结果。例如,像Anthropic的Claude Sonnet 4这样的模型,这位“高级架构师”通过复杂性引入风险。它拥有最高的功能技能,通过率为77.04%。然而,它通过编写大量代码——370,816行代码(LOC)——并拥有所有模型中最高的认知复杂度得分(47,649)来实现这一点。
这种人格悖论在模型升级时最为明显。较新的Claude Sonnet 4相比其前身拥有更好的性能得分,其通过率提高了6.3%。然而,这种“更聪明”的人格也更为鲁莽:其漏洞中被评为“阻塞性”严重等级的百分比飙升了超过93%。对更好评分卡的追求可能创造出一个在实践中责任更大的工具。
与AI共成长 这不是呼吁放弃AI,而是呼吁与它共同成长。我们与AI关系的第一阶段是充满惊奇。下一阶段必须是清醒务实的。这些模型是强大的工具,而非熟练软件开发人员的替代品。它们的速度是惊人的资产,但必须与人类的智慧、判断和监督相结合。
或者,正如DORA研究计划最近一份报告所言:“AI在软件开发中的主要角色是一个放大器。它放大了高绩效组织的优势,也放大了挣扎组织的功能障碍。”
前进的道路需要对每一行AI生成的代码采取“信任但验证”的方法。我们必须将对模型的评估范围从性能基准扩展到包括安全性、可靠性和可维护性这些至关重要的非功能性属性。我们需要为正确的任务选择正确的AI人格——并建立管理其弱点的治理机制。
AI带来的生产力提升是真实的。但如果我们不够小心,它可能会被维护其留下的不安全、不可读且不稳定代码的长期成本所抵消。