跳到主要内容

理解债:没人能看懂的凌晨两点系统

· 阅读需 10 分钟
Tian Pan
Software Engineer

传呼机在凌晨 2:14 响起。结账服务正抛出 500 错误,收入在流失,而你是值班工程师。你调出故障模块并开始阅读。代码很整洁——函数命名规范,结构合理,甚至还有几处有用的注释。然而你完全不知道它是干什么的。代码不是你写的。你团队里的任何人都没真正写过它。四个月前,一个智能体(agent)生成了这段代码,它通过了评审,测试通过了,并从此在生产环境中运行。现在它出故障了,而那个理应修复它的人却是第一次见到它。

这就是理解债(comprehension debt):你的组织运行的代码量与人类实际理解的代码量之间日益扩大的差距。它不会显示在仪表盘上。当一切看起来都健康时,它在默默累积,并在最糟糕的时刻——在事故期间,当你对自己系统的理解不足其代价是以停机时间来衡量时——到期偿还。

我们花了十年时间学习如何管理技术债(technical debt):那些为了快而在代码库中留下的捷径和妥协,使得未来的变更成本更高。理解债是另一种负债。代码可以写得很好——重构得当、地道、甚至优雅——但仍然代表着巨大的债务,因为对事故响应至关重要的结构不在源码中。它存在于构建者的头脑中:为什么要设置这个重试预算,为什么要设置那个缓存 TTL,预见了哪些故障模式,又忽略了哪些。当智能体编写代码而人类只是略读差异(diff)时,这种心理模型就从未形成。产物交付了,理解却没有。

为什么表面上的正确性掩盖了漏洞

AI 生成代码的危险之处在于,它恰恰消除了我们历来用来衡量自己理解程度的信号。多年来,编写代码的摩擦就是理解的过程。你无法在没有形成运行模型的情况下产出一个可运行的模块,因为打字、调试和使其通过编译的过程迫使那个模型进入你的脑海。阅读一份整洁的 diff 感觉像是在理解,但两者并不是一回事。

Anthropic 在 2026 年初发布的一项随机对照试验用数据证明了这一点。五十二名工程师学习了一个不熟悉的 Python 并发库;一半人拥有一个可以按需生成正确代码的 AI 助手,另一半人则手动编写代码。AI 组的完成速度仅快了大约两分钟——这在统计学上并无显著差异——但在随后的理解测试中得分低了 17%(50% 对 67%)。最大的差距体现在调试上:这正是你在凌晨 2 点所需的技能。研究还发现了其中的机制。针对概念性问题使用 AI 的工程师得分为 65% 或更高;而那些完全委托 AI 生成代码的工程师得分低于 40%。消极的“只要能跑通就行”的委托是掏空理解力的根源,而这正是每个编程智能体的默认模式。

现在,将这种模式从一名学习库的工程师扩展到整个交付功能的组织。代码看起来很健康。它通过了评审,因为它语法整洁且表面正确——而表面上的正确性正是历史上触发合并信心的信号。但表面上的正确性并不等同于系统性的正确性。系统可以运行通过每项测试,但仍然是一个没有任何活人在压力下能够驾驭的地方。

债务在事故中到期

事故响应是理解债从抽象转化为昂贵代价的地方,因为停机时间的大部分都花在理解上,而不是修复上。在整个行业中,诊断通常占据了平均修复时间(MTTR)的 40% 到 60%。一旦你知道问题出在哪里,补救措施——实际的代码更改——通常是微小且快速的。昂贵的部分在于定位:搞清楚系统本应做什么,它实际在做什么,以及两者在哪里产生了分歧。

这种定位成本正是 AI 生成代码所推高的。当警报发给一名从未内化受影响组件的工程师时,分类处理的每一分钟都花在了重建本该在编写代码时就建立好的心理模型上。数据反映了这种压力:组织恢复事故耗时超过一小时的比例从 2021 年的 47% 上升到 2024 年的 82%。代码量在增加——AI 让团队能更快速地交付更多内容——而每行代码的人类理解力却在下降,且运行这些系统的团队正变得更精简,而不是更庞大。

直觉反应是再次求助于 AI 来弥补差距:让智能体去诊断那个无法归咎于它的事故。这有助于检索和关联,但它并不能传递理解,并且会引入其自身的失效模式。对目前分析生产事故的模型的研究显示,在技术细节方面的幻觉率约为 23%。在凌晨 2 点,在匆忙浏览完 AI 生成的事故时间轴后,还有谁能真正仔细地验证提出的修复方案呢?“代码是 AI 写的,而我们没有充分评审”,当系统运行着医疗索赔、支付轨道或任何影响范围涉及真实人类的业务时,这句话在事后审查中是站不住脚的。

理解债不等于技术债

精确界定为什么这是一种截然不同的负债是很有意义的,因为两者很容易混淆,且解决方法也不同。

加载中…
References:Let's stay in touch and Follow me for more thoughts and updates