只要给定清晰的上下文和隐藏测试,主流大模型写出可执行代码的能力已经毋庸置疑。但当开发者放手让各类编程智能体自主推进项目时,一个反常的工程灾难正在隐蔽发生:自动化测试一路绿灯,系统却在几轮迭代后彻底陷入瘫痪。AI咨询机构Earendil近日公开探讨的代码泥浆化现象,撕开了当下行业沉迷单次代码生成的滤镜。

核心判断在于,通过自动化测试只证明了逻辑在局部成立,丝毫不代表系统具备可维护性。大模型正在以惊人的速度生成充斥着重复模式、层层包裹和臃肿分支的工程垃圾,把原本精干的代码库变成人类和模型都无法接盘的死局。

单次测试全绿背后的工程塌方

在各类宣传口径中,代码生成被描绘成一个基本解决的课题。这种乐观情绪建立在孤立场景上:给模型一段规范的提示词,模型给出一段补丁,测试套件跑通,即宣告成功。但在真实的软件生命周期里,软件从来不是一次性交付物。

工程师在工位排查复杂多文件工程的代码退化问题
工程师在工位排查复杂多文件工程的代码退化问题

SlopCodeBench基准针对15款主流Coding Agent展开的最新评测戳破了这个气泡。该评测设定了36个多轮需求任务与196个连续检查点,并模拟真实场景在检查点之间清空模型的即时上下文。结果显示,没有任何一款Agent能够端到端完整搞定全部36个任务;即便表现最好的GPT 5.5,全流程严格解决率也仅仅只有14.8%,其余多数模型在漫长的需求演进中直接归零。

人类开源项目 vs 编程 Agent:代码劣化指标对比 代码冗长度(Verbosity) 无用分支与AST克隆行占比 2.3 倍 恶化扩散速度超人类 6.6 倍 结构侵蚀度(Erosion) 圈复杂度集中于臃肿函数的程度 2.0 倍 恶化扩散速度超人类 5.0 倍

对比473个成熟的人类Python开源项目,Agent编写的代码在冗长度上高出人类项目2.3倍,结构侵蚀度高出2.0倍。更致命的是恶化速度,每推进一个需求检查点,Agent代码冗余与结构侵蚀的加剧节奏,分别比人类项目历史记录快出6.6倍和5.0倍。

圈复杂度飙升至69的打补丁死局

代码泥浆不是偶然出现的笔误,而是模型在面对复杂约束时的路径依赖。面对新增需求,模型最本能的策略不是推演现有架构并进行合理抽象,而是在既有逻辑上打补丁。

数据直观地印证了这种结构性溃败:在连续迭代过程中,77%的Agent执行轨迹出现了结构侵蚀持续恶化,75.5%的轨迹伴随着冗长度直线上升。为了让特定条件下的测试通过,模型不断向既有函数中堆砌条件分支。圈复杂度大于等于10的臃肿函数从最初的平均3.6个暴增到23.7个,最大圈复杂度的均值更是从27.5一路飙升到69.0

架构的瓦解往往始于偷懒的补丁,而非彻底的逻辑停摆。

这种修补策略很快迎来了物理层面的反噬。在任务演进后期,Agent单次实际改动的代码比例虽然从初期的97.4%急剧萎缩至29.5%,但单检查点的Token开销却猛增了约2.2倍。在早前小规模测试中,最终阶段的代码变动率达到0.548,达到中间阶段的2.3倍。模型不得不反复通读被自己搞乱的文件,最终在庞杂的上下文消耗中耗尽预算。

代码泥浆化演进:局部通过如何演变为系统停摆 需求注入 单检查点测试 绿灯即视为完成 粗暴打补丁 复制克隆逻辑 最大圈复杂度 69 上下文膨胀 代码改动仅29.5% Token开销 2.2倍 严格解决率归零 人类无力维护 Agent自主报废

虚妄的解药与AI裁判的失效

面对这种肉眼可见的质量滑坡,工业界最直接的设想是依赖提示词工程。比如在System Prompt中严正告诫Agent:必须遵循高内聚低耦合,严禁重复代码,保持函数短小精悍。

开发者在终端前调试自动化Agent执行逻辑
开发者在终端前调试自动化Agent执行逻辑

这种做法被实证证明只是一剂安慰剂。实验表明,针对代码质量的提示词干预确实让初始侵蚀度降低了62.3%、初始冗长度降低了34.8%,但它完全无法阻止后续交互中的熵增。随着检查点推进,系统劣化速度丝毫不减,反而因为提示词拉长了上下文推理路径,导致每个检查点的Token成本平白上升12.1%,最终正确率甚至倒退了2.3个百分点

期望让大模型自己充当质量裁判更是无稽之谈。依靠AI给自己的代码打分几乎等同于随机数生成器。学术界在arXiv:2604.16790中揭露的现象同样令人尴尬:当要求模型在两个方案中选优时,仅仅将方案名称A和B对调,模型的评判倾向就会出现显著翻转。这种极度脆弱的评判机制,根本无法承担起守护代码架构的重任。

  • 风险.若依赖未经架构约束的Agent连续提交代码,技术债务的累积速度将呈指数级爆发,最终引发代码库完全不可维护的资产报废风险。

测量者的尴尬:精巧公式败给朴素行数

为了摆脱主观偏见,研究者们借助抽象语法树与圈复杂度公式,试图构建一套精准量化代码泥浆的数学标尺。但第三方审计数据却给学术界浇了一盆冷水。

相关性分析揭示出一个耐人寻味的事实:精巧设计的侵蚀度公式对下一个检查点的代码通过率,相关系数仅有-0.018,对成本的预测相关性也只有0.167。真正具有强悍预测能力的,反而是软件工程界最古老、最朴素的指标——代码行数(LOC)。

观测维度逻辑代码行数 (LOC)结构侵蚀度 (Erosion)实际工程含义
下一检查点通过率预测-0.212-0.018代码量每多一行,后序失败率即显著增加
单检查点推理成本关联0.5020.167代码体积直接统治了Token消耗基准
指标采集与治理成本极低,即时计算极高,依赖AST解析复杂理论指标尚未转化为稳定工程抓手

代码行数与后序通过率呈现明显的负相关(-0.212),与推理成本更是呈现极强的正相关(0.502)。这暴露出当前学术度量在预测扩展鲁棒性上的局限,也再次印证了古德哈特定律的阴影:当一个复杂的指标试图衡量品味时,它往往会在现实系统面前失去效度。

  • 建议.技术团队在引入AI编程工具时,不应盲目迷信各种自动化评测给出的漂亮分数,必须在CI流程中建立严格的代码膨胀率监控与人工重构熔断机制。

软件工程的核心矛盾永远不是把功能塞进机器,而是在不断变化的需求中抗击系统的自然腐蚀。只要Coding Agent还没有学会真正意义上的自主重构,只要它们依然依赖无休止的打补丁来应付测试,这种以分钟为单位喷涌而出的AI代码,就依然是技术管理者需要谨慎提防的工程毒药。