开发者如今借助 AI 工具发布的代码量是过去的 10 倍。但我们理解这些代码实际在做什么的能力却丝毫没有提升。所以我在过去几周里深入研究了这个问题。

没有人愿意谈论的鸿沟

2026 年 1 月,Anthropic 的 Claude Code 负责人 Boris Cherny 宣布,他现在 100% 的代码都是由 AI 编写的。 他一天提交了 22 个 PR,第二天又提交了 27 个。每一个都是由 Claude 编写的。在 Anthropic 全公司范围内,这个比例是 70-90%。而 Claude Code 本身呢?大约 90% 的代码是由 Claude Code 自己编写的。

一位 OpenAI 研究员也表达了同样的观点:

“100%。我已经不再写代码了。”

在 Amazon,一位工程师本周透露,她 95% 的代码是由 AI 生成的——并因此获得了两次晋升。Microsoft 的 CEO 表示公司 30% 的代码是 AI 生成的。Google 的 Pichai 则表示他们的比例在 30% 以上。在全球范围内,41% 的代码现在是由 AI 生成的,并且这一趋势将在 2026 年底突破 50%。

Anthropic 的 CEO Dario Amodei 在今年 1 月的达沃斯论坛上表示,我们可能在6 到 12 个月内就会看到 AI 处理大部分甚至全部的软件工程工作。

代码生成正在指数级增长。人类理解代码的能力却停滞不前。

你的团队发布的 PR 数量是去年的 4 倍。但你的 QA 团队规模没有变化。你的测试套件覆盖的路径没有增加。而你的三位资深工程师——唯一真正理解当一位欧盟客户在按比例计费期间触发货币转换时,计费系统如何与订阅系统交互的人——他们并没有被克隆。

与此同时:

  • 每天 4,484 个警报击中普通企业团队
  • 其中 67% 因疲劳被忽略
  • 尽管我们做了这么多努力,仍有 27% 的缺陷进入生产环境
  • 60-80% 的 IT 预算仅用于维持现状
  • 其中 40% 用于技术债务

这就是盲点。我们可以生成代码,但我们无法理解代码。而这个鸿沟每天都在扩大。

“我们有测试覆盖。”

不,你没有。

我理解这种本能:往里面堆更多测试。更多 CI 检查。更多评审关卡。

这行不通。

不是因为测试不好——而是因为问题的结构决定了测试在结构上是不充分的。

你的单元测试验证的是孤立的组件。它们无法告诉你,当一个客户使用带连字符的电子邮件地址时,会触发一个来自 2019 年某个模块的遗留正则表达式,而那个模块已经没有人记得存在时会发生什么。

你的集成测试脆弱、昂贵,并且只是线性增长,而交互路径却在组合爆炸式增长

你始终落后。

而且每一个迭代周期都会更落后。

至于代码评审?

我就直说了:代码评审是一场表演。

评审者看到的是 diff。他们看不到系统。
他们看到的是变化。他们看不到这个变化对跨越十二个微服务的所有下游依赖意味着什么。

他们做不到。

没有人类能在工作记忆中容纳如此多的上下文。

在投入了数十年的努力之后,仍然有 27% 的缺陷逃逸率。

问题不在于努力

问题在于,我们的验证工具是为确定性机器设计的,而我们的软件却已经变成了一个生物体——相互连接、不断涌现、持续变异。AI 代理在编写代码,而人类从未直接审查。架构在漂移。依赖关系在我们脚下不断变化。我们正在用死的仪器检查一个活的系统

双时钟问题

这是一个彻底重塑我思维的概念。我认为这是当下软件工程中最重要的想法之一,但几乎没有人谈论它。

每一个软件系统都运行在两个时钟之上:

  • 状态时钟(State clock)——当前什么是“真实的”。当前代码。配置值。未关闭的工单。实时指标。
  • 事件时钟(Event clock)——为什么它会变成现在这样。推理过程。决策。上下文。

我们已经为状态时钟构建了万亿美元级别的基础设施:数据库、数据仓库、仪表盘、监控系统、版本控制。精美绝伦。

事件时钟呢?几乎一无所有。

让我把这个问题讲得更直观一些。

你的配置文件写着 timeout=30s。它曾经是 timeout=5s。有人把它调高到了三倍。

为什么?

Git blame 可以告诉你是谁改的。但背后的推理已经消失了。

也许是第三季度的一次延迟峰值。
也许某个特定客户的 API 一直很慢。
也许某人在凌晨 2 点调试时把它调高了,然后忘记改回来。

而这些上下文——对于未来任何接触这个系统的人来说最有价值的信息——我们却把它丢掉了。

它曾经存在于一个 Slack 线程里,现在已经被 10,000 条消息淹没。

再看另一个例子。

一个 P1 级别的 bug 在凌晨 3 点被修复。工单上写着“已解决”。

但它没有说明这是一个权宜之计
它没有说明真正的根因在一个被另外三个服务依赖的共享库中。
它没有说明修复它的工程师曾在一次没人做记录的站会上对经理说:

“这个问题两个月后还会再次出现。”

两个月后,它又坏了。换了一个不同的工程师。从零开始。这个模式无处不在。

PR 已经被合并了——但审阅者很匆忙,只看了前 40 行,错过了辅助函数里的边界情况。

架构已经选定了——但曾被认真讨论的两个替代方案,以及促成最终决策的权衡,只存在于某个已经离开公司的人的记忆中。

我们为“现在是什么是真的”构建了复杂的基础设施,却几乎没有为“为什么它会变成这样”留下任何东西。

这就是为什么 AI 编码工具会生成看起来令人印象深刻、却在生产环境中崩溃的代码。

它们只根据状态时钟(state clock)生成代码。而事件时钟(event clock)——那种积累下来的、解释系统为何以当前方式运行的推理——并不存在于它们可以访问的任何形式中。

而每个组织都为此付出我称之为碎片化税(fragmentation tax)的代价。

即手动拼接分散在各个工具中的上下文所带来的成本,而这些工具各自只看到现实的一小部分。

  • 支持团队看到的是工单
  • 工程团队看到的是代码
  • QA看到的是测试结果
  • SRE 看到的是仪表盘

没有人拥有完整的全局视图。

碎片化税的后果

碎片化税才是真正的原因,导致:

  • 调试需要数周时间
  • 升级问题在团队之间来回传递
  • 相同的 bug 一再出现

如果软件可以构建自己的世界模型呢?

如果软件能够为自身构建一个世界模型,会怎样?

现在事情开始从“这是个问题”转变为“等等,已经有人在解决这个问题了。”

老实说,我一开始是持怀疑态度的。

有一个来自 AI 研究的概念,正在悄然改变机器人技术、自动驾驶汽车以及视频生成领域:

世界模型(world models)

@drfeifei 的 World Labs 正在为 3D 空间智能构建世界模型。

OpenAI 构建 Sora 的一部分,也是作为一种世界模型——学习视觉对象如何运动和相互作用的物理规律。

机器人学中,世界模型让你可以在执行之前模拟机器人的动作。在想象中训练。安全地探索危险场景。其核心思想是:世界模型是对环境实际如何运作的一种学习得到的压缩表示

它编码动力学——当你在特定状态下采取行动时会发生什么。它捕捉结构——存在哪些实体以及它们如何相互关联。并且关键在于,它能够进行模拟——在给定当前状态和一个提议的动作时,预测接下来会发生什么。

现在,有一个让我当场停住思考的想法:同样的逻辑也适用于软件

但“物理规律”是不同的。

软件的“物理”不是质量和动量,而是数据流的动力学

  • 一个请求如何在微服务之间传播?
  • 当某个功能开关开启时更改这个配置会发生什么?
  • 在当前所有依赖状态下,这次部署的影响范围(blast radius)有多大?

如果你能为一个代码库构建一个世界模型——不仅理解代码“写了什么”,还理解它作为一个系统在所有交互中的行为方式——你就可以做到一件此前从未可能的事情:

在代码运行之前模拟其对生产环境的影响

不是单元测试。
不是静态扫描。

而是一次真正的模拟——

  • 将一个用户场景贯穿整个分布式系统进行追踪
  • 预测数十个服务之间的状态变化
  • 告诉你这次提交是否会破坏某些东西
  • 具体破坏了什么
  • 为什么会被破坏
  • 以及哪些客户会受到影响

代码模拟:缺失的基础能力

当我第一次听到“在不运行代码的情况下模拟代码”时,我以为这只是营销噱头。

然后我去看了实际的实现和数据。

老实说——这改变了我的看法。

一个名为 @playerzero_ai 的团队,多年来一直在构建这种方法。

他们发布了一项名为 Sim-1 的东西——一个推理引擎,可以直接从自然语言场景出发,模拟复杂代码库的行为,而无需编译、执行或部署。

这种工作方式值得仔细解释,因为我认为它代表了一个全新的类别

场景是记忆,而不是测试脚本

这是我首先领悟到的一点。

系统不再编写与实现细节紧密耦合、容易破碎的测试代码,而是捕获场景(scenarios)——用纯英文描述软件应该如何行为。

这些场景会从以下来源自动生成:

  • 支持工单(support tickets)
  • 缺陷报告(bug reports)
  • 客户反馈(customer feedback)
  • 产品需求文档(PRDs)
  • 甚至是过往的事故记录(past incidents)

示例:

“当一个拥有欧盟账单地址的客户在更改套餐期间生成发票时,按比例分摊(proration)的计算应正确处理外汇(FX)舍入,并在发票运行时完成对账。”

这不是测试代码。

这是机构知识(institutional knowledge)——那种通常存在于资深工程师脑海中,并在他们离开时随之消失的知识。

每一个场景,都是系统应如何运行的一段记忆(memory)

而系统会基于真实的运营数据,持续构建这些记忆。

每次提交时,系统都会进行模拟

当开发者推送变更时,引擎会:

  • 分析代码差异(diff)
  • 识别最相关的场景
  • 并运行模拟(simulations)

每一次模拟都会追踪整个代码库中的完整执行路径:

  • 跟踪跨微服务的数据流(data flow)
  • 模拟 API 调用
  • 预测数据库状态变化
  • 推理算法逻辑

这并不是在执行代码。

而是在模拟代码将会如何执行

无需编译。
无需测试基础设施。
无需初始化数据库。
无需启动服务。

这些模拟会在每一次提交时并行运行、规模化执行

系统在一次运行中跨越 100+ 个状态转换50+ 个服务边界 保持一致性。当出现问题时,你不会只得到一个模糊的“测试失败”。你会得到:

  • 根本原因 —— 精确到文件和行号
  • 影响范围(blast radius) —— 涉及哪些客户、哪些工作流、哪些业务指标
  • 建议修复方案 —— 附带可供审查的代码更改

在来自生产代码库的 2,770 个真实场景 中,他们的 Sim-1 模型 实现了 92.6% 的模拟准确率,而领先的通用模型仅为 73.8%

这是一种为代码理解而专门构建的能力,而不是将通用大语言模型推理简单应用到代码上。

更具体地说:这是一种 AI,它可以读取你的代码库,根据自然语言描述的预期行为,在整个分布式系统中模拟该行为,并预测你最新的提交是否会破坏它。

在 15 分钟内完成。
无需运行一行代码。

上下文图(Context Graph):具有万亿美元意义的部分

到目前为止,我描述的是一个非常强大的模拟引擎。令人印象深刻,但你可能会想:这只是更高级的测试吗?

不是。

而这正是它真正变得有趣的地方。

每一次运行的模拟、每一个被分诊的 bug、每一张被解决的客户工单 —— 它们不仅仅是事件。它们是:

  • 决策轨迹(decision traces)

这些轨迹记录了系统在现实中实际如何运作的证据,是在决策发生的当下被捕获,而不是事后重建。

这些轨迹不断积累,形成了 PlayerZero 所称的:

  • 上下文图(context graph)

当我真正理解这是什么时,我意识到这才是关键的突破。

上下文图并不是一个知识库。
它也不是一个把文档切分后存入的向量数据库。

它是一个为你的生产软件构建的、持续演化的“世界模型”

它是一个此前从未存在过的事件时钟(event clock) —— 如今终于被构建出来了。

它捕捉了现有系统无法做到的事情:

  • 哪些代码路径是脆弱的,以及它们如何危险地相互作用
  • 哪些配置导致了事故,以及在什么条件下发生的
  • 哪些客户工作流会触及系统中最危险的部分
  • 过去决策、修复和架构选择背后的推理 —— 我们几十年来一直失去的“为什么”

关键洞察:

这个系统通过使用它变得更聪明,而不是通过重新训练,而是通过积累证据。

想一想,你公司中最优秀的资深工程师拥有的东西,而新员工没有的东西。并不是不同的认知能力,而是更好的内部世界模型。 他们经历过足够多的生产事故,足够多的边缘案例,足够多的“我们在2022年尝试过这个,它把账单搞坏了”那种时刻,可以在脑海中模拟出结果。“如果我们周五推这个,值班工程师将度过一个糟糕的周末。”那不是从数据库中提取的内容,而是在基于多年积累的经验建立的系统行为内部模型上的推理。

上下文图谱:

上下文图谱就是那位资深工程师的直觉 —— 外部化、积累化,并且对团队中的每一个人都可用,包括上个月刚加入的初级开发人员。

经济学是优雅的:

这些代理人并不是为了上下文图谱本身而构建它——他们是在解决值得支付的实际问题。上下文图谱是副产物。更好的上下文使代理人更强大。更强大的代理人被部署得更多。更多的部署产生更多的追踪。更多的追踪加深了世界模型。飞轮开始旋转。

因为世界模型支持模拟,你将获得更强大的能力:

反事实推理。不是“上次发生了什么?”,而是“如果我采取这个行动,会发生什么?”系统想象未来,评估它们,揭示出危险的那些。在你合并之前。

这重新定义了人工智能中的持续学习辩论

常见的反对意见:人工智能无法转变组织,因为模型不能在工作中学习。
世界模型提供了一种替代方案——保持模型不变,改进它推理的世界模型。
引擎不需要新的权重,如果它正在导航的地图不断扩展。
更多的痕迹,更好的推理。
这不是因为模型更新了,而是因为世界模型增长了。

这已经在生产中生效

我希望以真实的结果为基础,因为没有证据的框架只是故事。
Cayuse - 一个服务于700多个全球机构的研究平台 - 部署了这一方法。
他们的工程团队陷入了经典的循环:发布功能,淹没在支持工单中,频繁地上下文切换。
调试一个单一的客户问题可能需要几周,因为没有人能重现问题的条件。
部署PlayerZero后:

  • 90%的问题在到达客户之前被发现并修复
  • 平均解决时间减少了80%
  • 初级工程师获得了解决复杂错误的自主权,无需等待高级指导——因为上下文图提供了他们缺失的机构知识
PlayerZero提高了我们在开发生命周期中早期主动检测和解决问题的能力。它帮助我们简化了工单解决流程,并增强了整体产品的稳定性。”
John Nord,Cayuse首席技术官

Zuora

Zuora - 世界上最大的订阅管理平台之一 - 将其部署到整个工程组织中,包括他们最复杂的账单和收入系统(我们谈论的是数十亿行代码,900多个代码仓库):

“我们现在可以更有信心地预测代码更改如何影响客户,在这些更改被部署之前。”

深入理解我们的代码架构

尤其是通过 Code Simulations(代码模拟) —— 这已经成为了改变游戏规则的工具。

"Its deep understanding of our code architecture - especially through its Code Simulations - has been a game-changer."
— Mu Yang, Zuora Cyrano 工程高级副总裁

Cyrano Video 将工程支持所花的工时减少了 80%

Key Data 将 bug 复现周期从几周缩短到几分钟

这些不是试点项目。这些是在运行复杂、关键软件的公司中,生产规模的转型

为什么这比大多数人意识到的更重要

让我拉远视角,因为我认为有一个更大的结构性变化正在发生,而大多数人没有注意到。

上一代开发者工具优化的焦点是 速度

  • 更快的 CI/CD
  • 更快的部署
  • 更快的代码生成

这确实有效 —— 我们可以比以往任何时候都更快地交付代码。

但是 没有理解的速度会导致脆弱性

  • 每一个没有被完全审查的 AI 生成函数都是潜在的定时炸弹。
  • 每一次代码速度提升 10 倍,而没有对应的代码 理解 增长,就是技术债务在以前从未见过的速率下积累。

我一直在想制造业的类比。当生产线的速度超过了人工质量检查的能力时,我们没有去雇更多的检查员。
我们建立了 可以预测缺陷的系统

  • 统计过程控制
  • 六西格玛

整个预测质量领域因此出现,因为 人类注意力无法随着生产速度扩展

软件现在正处于它的 预测质量时刻

而构建这类基础设施的公司 ——

  • 代码的世界模型
  • 积累机构化推理的上下文图
  • 预测生产行为的模拟引擎

他们正在构建一些 前所未有的东西
能理解自身的软件

不是写代码的 AI。
理解代码的 AI

不是在产品发布后找出错误的工具

是预测错误的系统,在合并前就发现它们。

不是在生产环境已经崩溃时才发出警告的仪表盘

而是那些在你点燃火柴之前告诉你它会燃烧的引擎。

背后支持者

这不仅仅是我个人的推测,PlayerZero获得了来自Foundation Capital2000万美元资金支持,天使投资人包括@rauchg(Vercel)、@zoink(Figma)、@matei_zaharia(Databricks)、@drewhouston(Dropbox)以及OpenTelemetry的联合创始人。
这些构建现代开发者生态系统的人们正在押注,这就是缺失的一层。

这对你的意义

如果你领导一个工程团队,以下是我会实际做的事情:

  1. 审视你的“理解差距”

团队中的任何一个成员能全面解释你整个系统的百分比是多少?如果答案小于30%——而大多数公司的答案是——你面临的是一个世界模型问题,而不是测试问题。再多的测试覆盖也无法解决理解上的缺陷。

  1. 将错误视为训练数据,而不仅仅是任务

每个你修复的错误都包含一个场景,你的系统应该永远记住。每次客户升级问题都会揭示一个行为路径,值得在每个未来的提交中模拟。如果这些知识仅存在于Slack对话和Jira评论中,你就失去了最有价值的数据集。

  1. 重新思考“质量”在AI时代的含义

质量不是“所有测试都通过”。质量是“我们能够预测系统在未显式测试的条件下的行为。”这是一种根本不同的标准,且它需要根本不同的基础设施。

  1. 关注构建代码模拟基础设施的团队

这是一个新兴的类别,也是我愿意下注的领域。

PlayerZero 是我目前发现的最先进实现——Sim-1、代码仿真、上下文图——而且它们已经在像 Zuora 这样的公司中投入生产环境运行,覆盖数十亿行代码。如果你正在处理复杂的分布式系统,那么值得看看他们构建了什么。

核心结论

我们正处于历史上最大规模的代码生成爆发之中。每一周,我们“生产的内容”和“我们理解的内容”之间的差距都在扩大。

如果你相信这些数据——我相信——那这个差距每年扩大 1 万亿美元

  • 更多的测试无法弥合它
  • 更多的工程师无法弥合它
  • 更多的代码审查更不可能弥合它

这个差距,只有当软件最终能够理解自身时,才会缩小。

  • 能够模拟行为的世界模型
  • 能够记住推理过程的上下文图
  • 能在发布前预测问题的仿真引擎

工具时代的转变

上一代开发者工具的核心是速度

  • 更快地发布(Ship faster)
  • 更快地部署(Deploy faster)
  • 更快地生成(Generate faster)

下一代的核心则是理解

而那些构建“理解层”的公司,将在未来十年掌控软件领域最重要的基础设施。

我们赋予了 AI 编写代码的能力,却忘了赋予它理解能力

这正是那个 1 万亿美元的盲点

而它,正在被填补。