DC娱乐网

威斯康星大学揭秘:AI代码写得越来越乱,竟然连自己都"不认识"

这项由威斯康星大学麦迪逊分校领导,联合华盛顿州立大学和MIT共同完成的研究发表于2026年3月,论文编号为arXiv:2

这项由威斯康星大学麦迪逊分校领导,联合华盛顿州立大学和MIT共同完成的研究发表于2026年3月,论文编号为arXiv:2603.24755v1。研究团队针对AI编程助手在长期迭代开发中的表现进行了深入分析,发现了一个令人意外的现象:AI写出的代码质量会随着项目的推进而持续恶化。

当我们谈论AI编程助手时,大多数人可能会联想到那些能够快速完成单个编程任务的智能工具。然而,现实中的软件开发更像是一个长期的建筑工程项目。建筑师不会一次性完成整栋大楼,而是需要在原有基础上不断添砖加瓦,扩建新的房间和功能。同样,程序员也需要在现有代码基础上反复修改、扩展和优化。

这种迭代式的开发过程对AI来说却是一个巨大的挑战。研究团队发现,当AI需要在自己之前写的代码基础上继续开发时,就像一个建筑师必须在别人设计的不完美基础上继续施工一样困难。每一次修改都可能让整个代码结构变得更加混乱,就像在摇摇欲坠的地基上继续盖楼一样危险。

研究团队为了验证这个现象,创建了一个名为SlopCodeBench的测试平台。这个平台就像一个专门的"建筑工地",让不同的AI在相同的条件下进行长期的编程项目。他们设计了20个不同的编程问题,每个问题都需要AI分步骤完成,总共包含93个检查点。这就像让AI建造20栋不同类型的建筑,每栋建筑都需要分阶段完成,从地基到装修,一步都不能少。

研究结果令人震惊。在测试的11个不同AI模型中,没有一个能够完整地完成任何一个项目。即使是表现最好的AI,成功率也只有17.2%。这就好比让20个建筑队去建造房子,结果发现每个队伍都无法完整地建完任何一栋房子,大部分房子都是半拉子工程。

更糟糕的是,研究团队发现AI写出的代码质量会随着项目进展而持续下降。他们用两个关键指标来衡量代码质量:一个叫做"冗余度",另一个叫做"结构侵蚀"。冗余度就像房屋建设中的废料比例,衡量代码中有多少重复或无用的部分。结构侵蚀则像建筑的承重结构集中度,衡量复杂逻辑是否过度集中在少数几个函数中。

在89.8%的开发轨迹中,代码的冗余度都在持续增加,而在80%的情况下,结构侵蚀也在恶化。这意味着AI写出的代码不仅包含越来越多的"垃圾",而且整体架构也越来越混乱。就像一个原本整齐的房间,随着时间推移变得越来越杂乱,最后连主人都找不到东西放在哪里。

为了更好地理解这个问题的严重性,研究团队还将AI编写的代码与人类程序员维护的48个真实开源项目进行了对比。结果发现,AI代码的冗余度是人类代码的2.2倍,结构侵蚀程度也明显更严重。更关键的是,人类维护的项目在长期发展过程中能够保持相对稳定的代码质量,而AI的代码质量却会随着每次迭代而持续恶化。

这种现象的根本原因在于AI缺乏长期的设计眼光。人类程序员在编写代码时会考虑未来可能的扩展需求,就像建筑师在设计房屋时会预留管道和线路的空间一样。而AI往往只关注当前任务的完成,忽视了代码的可维护性和扩展性。

以研究中的一个具体案例为例,AI在开发一个代码搜索工具时,最初只需要支持Python语言。AI采用了最简单直接的方法,将语言相关的逻辑硬编码在主要函数中。当后续需求要求支持JavaScript和C++时,AI不得不在原有基础上打补丁,导致代码变得越来越臃肿。到项目后期,一个原本只有几十行的核心函数膨胀到了上千行,包含了285个分支判断点,变成了一个难以维护的"怪物"。

研究团队还尝试了不同的提示策略来改善这种情况。他们测试了"反冗余提示"和"先规划后编码"等方法,这些方法能够在一定程度上改善初始代码质量,就像给建筑工人提供更好的施工指导一样。然而,这些干预措施只能延缓代码质量的恶化,无法从根本上解决问题。即使使用了这些优化策略,AI的代码依然会随着项目进展而逐渐劣化。

这项研究揭示了当前AI编程助手的一个重要局限性。在单次编程任务中,AI可能表现出色,就像一个熟练工人能够快速完成单个零件的制作。但在需要长期规划和迭代开发的复杂项目中,AI缺乏必要的架构思维和前瞻性设计能力。

这种发现对软件开发行业具有重要意义。当越来越多的开发团队开始依赖AI编程助手时,他们需要意识到这些工具在长期项目中的局限性。就像我们不会让一个只会砌砖的工人来设计整栋大楼一样,我们也不应该期望AI能够独立完成复杂的软件架构设计。

研究还暴露了现有编程评测标准的不足。传统的测试方法只关注代码是否能够通过功能测试,就像只检查房屋是否不漏雨,而忽视了建筑结构是否合理。这种评测方式无法发现代码质量的潜在问题,可能导致对AI能力的过度乐观估计。

此外,研究发现成本投入与代码质量改善之间存在脱节现象。随着项目的推进,AI需要消耗越来越多的计算资源,但代码质量却没有相应改善。这就像花费更多钱请更多工人,但建筑质量却没有提升一样不经济。

对于普通开发者而言,这项研究提供了重要的实践指导。在使用AI编程助手时,应该更多地将其视为一个强大的执行工具,而非架构设计师。人类开发者需要承担起项目的整体规划和质量把控责任,确保代码结构的合理性和可维护性。

研究团队认为,解决这个问题可能需要在AI训练阶段就引入结构化的设计约束,或者开发专门的工具来监控和维护代码质量。就像建筑行业有严格的质量监管体系一样,软件开发也需要相应的机制来防止AI生成的代码逐渐劣化。

这项研究的意义不仅限于技术层面,它还提醒我们在拥抱AI技术的同时,需要保持理性和谨慎。AI是一个强大的工具,但它并不能替代人类的创造力和判断力。在软件开发这个需要长期规划和精心设计的领域,人机协作可能是比纯粹依赖AI更加明智的选择。

Q&A

Q1:SlopCodeBench是什么?

A:SlopCodeBench是威斯康星大学团队专门创建的AI编程能力测试平台,包含20个编程问题和93个检查点,用来评估AI在长期迭代开发中的表现。它就像一个专门的"建筑工地",让不同AI在相同条件下进行长期编程项目,以观察代码质量如何随时间变化。

Q2:AI代码质量恶化具体表现在哪些方面?

A:主要表现在两个方面:冗余度和结构侵蚀。冗余度指代码中重复或无用部分的比例,在89.8%的AI开发过程中都在增加。结构侵蚀指复杂逻辑过度集中在少数函数中,在80%的情况下都在恶化。AI代码的冗余度是人类代码的2.2倍,整体架构也更加混乱。

Q3:为什么AI编程助手不能很好地处理长期项目?

A:因为AI缺乏长期的设计眼光和架构思维。它往往只关注当前任务的完成,采用最直接的解决方案,而忽视代码的可维护性和扩展性。就像一个只会砌砖的工人无法设计整栋大楼一样,AI无法进行复杂的软件架构规划,导致后续修改时只能在原有基础上打补丁。