LogoAnyDoor7
  • 博客
  • 关于我们
LogoAnyDoor7
博客关于我们
全部文章
2026/05/12

验证免费了:AI 时代的真正相变

从 YC CEO Garry Tan 的 Complexity Ratchet 看测试覆盖率如何从奢侈品变成默认配置

一句话版本:AI 最大的改变不是帮你写代码,而是帮你检查代码变得免费了。就像安全带拉紧了就退不回去一样,当每次编码都自动生成测试,软件质量就只能往上走,不能往下掉。这叫棘轮效应。

你写的代码,明天你自己就看不懂了

每个写过代码的人都有过这种经历:打开三个月前自己写的文件,完全不记得某段逻辑为什么那样写。更惨的版本是——改了登录按钮的颜色,结果购物车莫名其妙坏了,而且没有任何人能告诉你为什么。

这不是能力问题,是人类记忆的结构性缺陷。你记不住,你的同事也记不住,等你离职了,接手的人更记不住。

上周,YC CEO Garry Tan 发了一篇长文,从自己的两个开源项目(加起来近百万行代码)出发,提出了一个解法。他说:这个问题不是靠"写好文档"或"小心点"能解决的。解法是让 AI 帮你写测试,把每一条"为什么这样做"永久性地刻在代码里。

"It's not that AI lets you write code faster. It's that AI lets you verify at a level that was previously too expensive to sustain." — Garry Tan, "The AI Agent Complexity Ratchet"

注意他说的不是"AI 帮你写代码更快"。他说的是"AI 让你能做到以前贵到做不起的事情:彻底检查你的代码"。

安全带原理:为什么叫"棘轮"

棘轮是一种只能单方向转动的机械结构——扳手拧螺栓只能往前,不能往后。安全带是日常生活中最熟悉的棘轮:拉紧了就退不回去。

Garry 说,软件质量也可以变成一条安全带。方法是:每次 AI 帮你写代码的时候,让它同时做三件事:

安全带的三根锁扣
  • 1
    写测试 — 不是检查"函数返回值对不对",而是"在这个场景下系统应该怎么表现"。就像给每个行为签一份合同,违反了自动报警。
  • 2
    写文档 — 不是"这段代码做了什么",而是"为什么这样做"。三个月后打开文件,不用猜了。
  • 3
    记分数 — 每次跑完给输出打分,留下记录。下一个版本必须打平或超过这个分数,不能更差。

下次 AI 再来改代码的时候,它会自动读到之前写的测试、文档和分数。它没法偷工减料,因为测试会报红;它没法忽略文档,因为文档就在上下文里;它没法降低质量,因为历史分数摆在那里。

质量地板只能往上走,永远不会往下掉。安全带拉紧了,退不回去了。

Garry 用自己的项目验证了这件事:72 小时内合了 14 个代码提交,近三万行新代码,每一次发布都比上一次测试更多、质量更好。速度和质量同时做到了,前提是棘轮在。

93K
GitHub 收藏
70万
行代码
14
72h 内提交
3万
行新代码

为什么 AI 之前没人做到这件事

答案很简单:以前太贵了。

写测试是一件枯燥、重复、需要极大耐心的工作。想象一下:你的团队写了一个功能,测试覆盖了 70% 的场景。剩下 30% 是边角情况——某个用户在周二凌晨 3 点用 IE 浏览器提交了一个带 emoji 的表单。理论上应该测,但写那个测试要花两小时,而且开发者已经是周五下午五点了。

不是他不想写,是他累了。每个软件团队都在这个点停下来,管它叫"够好了"。

研究数据证实了这个直觉:超过 10,000 个软件项目的分析显示,测试覆盖率从 70% 提到 90% 时,bug 漏到用户手里的概率会从大约 30% 骤降到 3%。100 个 bug 里原来漏掉 35 个,现在只漏 3 个。这不是线性改善,是断崖式下降。

这不是新发现

航空业 50 年前就知道这条曲线。FAA 对飞行关键软件要求的测试标准能达到 99% 以上的缺陷捕获率。他们不是因为爱流程才这么做——是因为在飞机上,漏掉的 bug 会杀人。数据逼着他们走到了 90% 以上。

但问题是:航空业有钱。他们养得起一个团队,花几个月专门写测试。普通软件团队没有这个预算。所以整个行业在 70-80% 这个位置趴了五十年。

然后 AI 来了。

AI 不会在周五下午五点想回家。写第 14 个 edge case 测试的时候,它的心情和写第 1 个完全一样。让 90% 覆盖率在人类团队中不经济的那个"残忍的最后 20%"——恰好是 AI 最擅长、做得最开心、也最不知道什么叫"算了吧"的工作类型。

检查作业以前要花钱请人。现在 AI 免费帮你查。 这就是真正的相变。

Dave 离职了,但测试还在

每个软件公司都见过这一幕:打开一个关键文件,看到一行注释写着 // DO NOT CHANGE THIS -- ask Dave。

Dave 三年前就离开了。

在传统公司里,"为什么这段代码这样写"这种知识存在人的脑子里。Dave 知道那个缓存层为什么不能动,小李记得那次差点毁掉数据库的迁移,老王能解释计费系统里那个怪异的取整逻辑。但人会走——退休、跳槽、burnout。知识跟着走。

测试不会走。

当测试里编码了"取整必须用 0.05 的步长",旁边的文档解释了"因为实测发现更高精度会导致置信度评分不可信"——这条知识就刻在了代码里,永久性的。不管谁来维护这个项目,不管换了什么 AI 模型,它都能读到这个约束并且遵守。

测试是能活过员工离职的公司记忆。 对一个人的项目来说更关键——因为你的测试就是你唯一的队友。

一个真实的故事:谁说的算?

Garry 用自己的 GBrain 项目讲了一个具体的失败和修复。GBrain 是一个知识系统,它能从大量文本中提取"谁相信什么"。第一次跑的时候提取了十万多条观点。

问题出在一个叫"归属混淆"的 bug 上。系统遇到"AI 将在 2027 年取代 80% 的软件工程师"这种说法时,有 35% 的概率搞不清楚:这话到底是文章作者说的,还是文章作者引用别人说的,还是系统自己从播客录音里推理出来的?

如果你在建一个追踪"谁相信什么"的系统,搞混了"谁"就等于系统核心能力报废。

修复过程是棘轮的教科书案例:

  • 1
    让两个不同的 AI 模型(GPT-5.5 和 Claude)独立给输出打分,找出了六种具体的出错方式
  • 2
    针对这六种出错方式逐一改进,在数据库层面强制执行精度规则
  • 3
    写了 17 个测试锁住这些修复。以后任何版本更新,这 17 个测试不通过就不能发布

从此以后,没有人需要记住"归属混淆"是什么、取整精度为什么重要。测试替你记住了。 质量地板永久升了一格,退不回去。

不只是代码:能观测的都能上锁

这里有一个容易被忽略的点:棘轮不只适用于"这个函数的返回值对不对"。只要计算机能看到的东西,都能棘轮化。

Garry 给了一个让人印象深刻的例子。他的 GStack 工具有一个功能叫"架构审查"——你让 AI 审查你的技术方案,它应该逐节提问题、挑毛病、挑战你的假设,像一个真正读了你代码的工程经理。

问题是:AI 有时候会"偷懒"——它把所有发现一口气 dump 出来然后退出,根本不跟你互动。而审查的全部意义就在于那个来回对话。

怎么测试"AI 有没有好好跟人聊天"?这可不是传统的单元测试能覆盖的。

Garry 的做法是:造一个虚拟终端,把 AI 放进去,给它一个场景,然后字面意义上盯着它干活——看它有没有在结束前问你至少一个问题。没问?测试失败。

想象一下

这就像你雇了一个顾问来审查你的商业计划。如果他看了十分钟就说"挺好的没问题"然后走了,你会觉得他在敷衍。好的审查一定有来回、有追问、有挑战。AI 的行为也可以用同样的标准来检验——能观测就能断言,能断言就能锁住。

三层安全带

Garry 的文章主要讲代码层面的棘轮。但想一想:这个"只能往上走"的机制,适用范围远不止代码。

L1
代码层

你的软件有 bug,AI 帮你写测试锁住修复。

类比:考试答案写在答案册上,下次不用重新推导。

L2
流程层

AI 跳过了该问的问题,你加了一道门:不问就不许通过。

类比:飞行前检查清单,飞行员不能凭记忆跳步。

L3
认知层

你交过的学费变成了决策原则,下次遇到类似情况自动触发。

类比:被热炉子烫过的手,不需要每次都重新学一遍。

这三层有五个共同属性,让棘轮成立:

  • 1
    "刻"的成本接近零 — AI 写测试、写文档的边际成本几乎为零
  • 2
    刻上去就不会消失 — 存在磁盘上的测试不会忘记、不会辞职、不会 burnout
  • 3
    下次自动生效 — AI 每次开工自动读取所有历史测试和文档,不需要人提醒
  • 4
    检查是机器做的 — 跑测试是确定性操作,不依赖人的记忆或判断
  • 5
    擦掉比留着贵 — 删掉一个测试意味着放弃一个已经验证过的安全保障。没人会主动这么做

第 5 点是核心:保持现状比倒退成本更低,所以系统只会往前走。 这就是为什么叫棘轮——它的力量不来自任何单次决策的正确性,而来自"退不回去"这个结构本身。

那些不做的人怎么样了

Garry 在 YC 和开源社区观察到一个模式:用 AI 写代码但不写测试的项目,几乎都在中等规模时开始崩塌。几千行代码,几个功能交叉在一起,然后每改一处就有别的地方莫名其妙坏掉。

想象搭积木:前十块随便放都稳。第五十块开始,每放一块都会晃。第一百块的时候,你连碰都不敢碰。

这些项目的 AI 没问题,代码也没问题。它们缺的是安全带。 没有测试告诉你"你刚才放的那块积木让第 37 块松了",你就只能等塌了才知道。

但这不完美

公正地说,棘轮有边界:

  • 它保证地板上升,不保证天花板。 Garry 自己的知识系统提取准确率是 68%,还有很大改善空间。但关键是:它不会退回到 35% 了。
  • 有些东西测不了。 集成节点、基础设施管道、真正的边角 case。棘轮覆盖的是大多数行为,不是全部。但"大多数"已经足够维持高速前进了。
  • 测试本身可能是错的。 棘轮假设你锁住的是正确的行为。这是个递归问题——谁来测试测试?让两个不同的 AI 模型独立评分是一种部分解法。

你能做的一件事

不管你是不是程序员,Garry 的核心洞察适用于所有做复杂事情的人:

每次你交了一笔学费——搞砸了一次、发现了一个坑、弄明白了一个"为什么"——别只是修完就走。把它变成一条规则,一个检查项,一段记录,让它从此不可能被遗忘。

这就是棘轮:你的经验只能往上积累,不会因为记忆衰退、人员变动或者单纯的遗忘而倒退。

以前让人类做这件事太贵了。现在 AI 让它免费了。

这是 AI 时代真正的相变——不是干活更快,是犯过的错永远不会再犯。

来源:@garrytan, The AI Agent Complexity Ratchet: Why 90% Test Coverage Is Required

全部文章

更多文章

Opus 4.8 真正升级的是承认没做完的能力

Claude Opus 4.8 的官方 System Card 说明,frontier agent 的竞争正在从输出质量转向状态真实性。

2026/05/28
© 2026 AnyDoor7版权所有