默庵·超级个体
26-05-17 11:29 微博认证:微博新知博主 科技博主 头条文章作者 微博原创视频博主

Y Combinator 总裁 Garry Tan 最近发了一篇长文,分享他过去一年用 AI 写代码的核心心得。这篇文章信息密度极高,里面有一个非常重要的概念,他管它叫“复杂度棘轮”(Complexity Ratchet)。这个概念不仅对程序员有用,对任何想用 AI 做复杂工作的人都有启发。

1、一个人做出了什么

先说背景。Garry Tan 做了两个开源项目:GStack(让 AI 编程 agent 更好用的框架,93K GitHub stars)和 GBrain(把你读过和写过的所有东西变成 AI 可搜索的知识库,14K stars)。两个项目加起来大约 97 万行代码,665 个测试文件。基本全部由 Claude Code 和 Codex 在他的指挥下完成,他大部分时候同时开 15 个并行的 Conductor 会话。

这在传统认知里是不可能的。软件工程有一条古老的信条:速度和质量只能选一个。快就会出 bug,稳就得慢。但 Garry Tan 说,现在你不用选了。关键在于 90% 的测试覆盖率,而 AI agent 让达到这个覆盖率变得几乎零成本。

2、什么是“复杂度棘轮”

棘轮是一种机械装置,只能往一个方向转动。扳手拧螺丝的时候,螺丝只能往前拧不能往后退,就是这个原理。

Garry Tan 把这个概念搬到了 AI 编程里。他说,每次 AI agent 写代码的时候,同时会产出三样东西:

第一,测试。这些测试定义了什么叫“正确”。每次有人改代码,测试都会自动跑一遍,如果改坏了什么,测试会立刻报错。

第二,文档。记录的是“为什么这么做”,包括背后的推理和取舍。

第三,评估结果。建立一个质量基线,比如这次输出质量是 6.8 分,下次必须比这个高。

下一次 agent 再来改代码的时候,它会把这三样东西全部加载到上下文里。测试不过就不能提交,文档就在眼前不能忽略,质量低于基线就会被发现。于是质量底线每一轮都在上升,永远不会下降。这就是棘轮效应:只能往前,不能后退。

3、一个具体的例子

GBrain 有一个功能叫“认识论提取”,就是从大量文本里提取“谁相信什么,置信度多高”。比如“Garry 认为比特币会涨到 30 万美元(置信度 0.45)”,“Jared 认为这家创业公司留存率很强(置信度 0.80)”。它要从 28000 页文档里做这件事。

第一版跑出来,用 GPT-5.5 和 Claude 交叉打分,质量 6.8 分(满分 10)。最大的问题是“持有者混淆”:一个观点到底是谁说的?是写文章的人自己的观点,还是他引用别人的,还是系统从播客转录稿里推断出来的?第一版有 35% 的概率搞混这个区分。

于是评估结果被记录下来,6 个具体的失败模式被识别出来,第二版的 prompt 针对性地修复了所有 6 个问题,置信度分数的精度规则在数据库层面做了强制约束,17 个测试锁定了这些规则。

从此以后,任何未来版本的代码都必须通过这 17 个测试才能上线。没有人需要记住“持有者混淆”是什么,也没有人需要记住为什么置信度必须用 0.05 的步长。测试替你记住了一切。质量底线永久性地上升了一格。这就是棘轮转了一圈。

4、为什么是 90% 这个数字

Garry Tan 引用了 Capers Jones 对超过一万个软件项目的研究数据。这个研究测量的是“缺陷移除效率”(DRE),也就是 bug 在到达用户之前被抓住的比例。

数据显示,覆盖率在 70% 以下时,DRE 大概在 65%-75%,意味着每 4 个 bug 里有 1 个会漏到用户手里。但到了 85%-95% 的区间,DRE 跳到了 92%-97%。这个关系不是线性的,在 85% 附近有一个明显的拐点,过了这个点,漏网的 bug 数量会断崖式下降。

航空软件行业几十年前就发现了这一点。FAA 对飞行关键系统的标准 DO-178C 要求极高的覆盖率,原因很简单:数据表明,低于某个覆盖率阈值,关键缺陷的逃逸率高到“和不死人这个目标不兼容”。

他还用了制造业的六西格玛做类比。3 sigma 的流程每百万件产品有 67000 个缺陷,4 sigma 降到 6200 个,5 sigma 降到 233 个。从 4 到 5 sigma 的跳跃不是渐进式改善,是相变。测试覆盖率也一样,从 70% 到 90% 带来的不是 30% 的改善,是一个数量级的缺陷减少。

5、AI 为什么能打破“意志力墙”

这里有一个关键的历史背景。研究 Windows Vista 的学者发现,虽然高覆盖率确实能减少 bug,但达到 90% 以上的努力成本会急剧上升。最后那 20% 的覆盖率需要的工作量远超前面 70% 的总和。这就是为什么过去 50 年里,大多数团队到 70%-80% 就停了,觉得“够好了”。

但 AI agent 不会感到疲惫。它不会在写第 14 个边界条件测试的时候觉得无聊。它不会在周五下午 5 点偷工减料。它不会看到一个复杂的集成测试然后想“以后再说吧”。那堵挡住人类团队的“意志力墙”,对 AI 来说根本不存在。

所以真正的突破不在于 AI 让你写代码更快。很多人已经注意到了这一点。真正的突破在于,AI 让你能以一种过去成本高到不可持续的水平去验证代码质量。90% 覆盖率过去是奢侈品,现在是默认设置。过去需要英雄般的努力,现在只是一个普通的周二。

6、测试的范围远比你想象的大

大多数人想到测试,想到的是“我的函数返回的数字对不对”。但 Garry Tan 展示了一个更大的图景:任何计算机能观察到的东西,都可以被测试,都可以被棘轮化。

操作系统层面:数据库迁移有没有创建正确的表?定时任务有没有按时触发?进程还活着吗?

浏览器层面:页面渲染了吗?agent 有没有正确填写表单?

API 层面:模型返回的 JSON 格式对吗?schema 对吗?

行为层面:AI agent 有没有遵守协议?有没有在删除之前先问用户?被叫停的时候有没有停下来?

他举了一个特别有意思的例子。GStack 有一个功能叫“交互式计划评审”,你让 AI 审查你的架构方案,它应该一节一节地跟你讨论,提问题,挑战你的假设。但 Claude Code 有时候会跳过整个交互环节,直接把所有发现一口气倒出来就退出了。

怎么测试“AI 有没有跟你对话”这件事?传统测试框架根本做不到。

Garry Tan 用 Bun 的 TTY 功能造了一个测试框架,在伪终端里启动 Claude Code,喂给它一个具体的代码场景,触发评审功能,然后实时观察终端输出。如果 agent 没有提出任何交互式问题就结束了,测试就失败。这已经不是在测代码逻辑了,是在测 AI agent 有没有遵守行为契约。

7、测试就是不会离职的“组织记忆”

传统软件公司里,组织记忆存在人的脑子里。那个知道缓存层为什么这么设计的高级工程师,那个记得某次数据库迁移差点炸掉的架构师,那个能解释计费系统里奇怪边界条件的技术负责人。

人会离开。退休、被挖走、倦怠。人走了,知识就跟着走了。每个软件公司都遇到过这种情况:打开一个关键文件,看到一行注释写着“不要改这里,问 Dave”,而 Dave 三年前就走了。

测试套件不会离职,不会被挖走,不会忘记。当测试里编码了“置信度分数必须用 0.05 的步长”,文档里解释了“因为交叉评估显示虚假精度会降低用户对置信度分数的信任”,这个知识就是持久的。任何 agent,任何模型,任何时候都可以加载这个上下文并理解这个约束。

对于一个人的项目来说,测试更加关键,因为它是你唯一的组织记忆。

8、Vibecoding 为什么会失败

Andrej Karpathy 发明了一个词叫 vibecoding,就是用自然语言描述你想要什么,让 AI 生成代码。Garry Tan 说他自己就是这么写代码的,这个方法很强大。但他在 YC 的申请项目和开源仓库里观察到,大多数跳过测试的 vibecoding 项目,一旦达到中等复杂度(几千行代码,几个相互交互的功能),就开始崩塌。

原因很简单:它们跳过了棘轮。没有测试,没有文档,没有评估。Agent 在不断增加复杂度,但没有任何东西阻止退化。每加一个新功能都有可能破坏旧功能,而没有测试的话,你要等到用户来报 bug 才知道。到了 0.5 版本,代码库就变成了一栋鬼屋,改任何地方都会在意想不到的地方出问题。然后开发者写一篇博客说“AI 编程根本不行”。

AI 编程没问题。他们只是没有建棘轮。

9、软件复杂度的天花板被抬高了

过去,一个软件系统能有多复杂,取决于一个团队能同时在脑子里装下多少东西。现在,这个上限变成了一个人加上能把完整代码库、schema 历史、测试套件和文档全部加载到上下文里的 AI agent。

这是一个大得多的数字。而且随着上下文窗口越来越大、模型推理代码的能力越来越强,这个数字还在持续增长。

Garry Tan 最后说了一句很重的话:任何软件公司如果还没采用这套模式(agent + 品味 + 只升不降的测试套件),在速度和质量上已经输给了一个用这套方法的单人开发者。

### 这件事对我们意味着什么

跳出编程的语境来看,棘轮这个思维模型其实适用于任何需要持续积累质量的工作。写作、研究、产品设计,任何领域里你都可以问自己:我有没有一个机制,能确保质量只升不降?我上一次犯的错误,有没有被编码成某种“测试”,让我下次不可能再犯同样的错?

过去这种机制依赖人的记忆力和自律性,所以很难持续。但现在 AI 可以帮你维护这套系统。关键是你得主动去建它。大多数人用 AI 的方式是“帮我做完这件事”,然后就结束了。但如果你在每次完成任务的同时,让 AI 帮你把“什么是对的、为什么这么做、质量底线在哪里”也一并记录下来,你就在建自己的棘轮。

50 年来,90% 的验证覆盖率是航空和医疗设备行业的专属奢侈品,只有那些有预算把大量人力投入到“意志力墙”上的团队才能做到。AI agent 把这堵墙拆了。让软件可靠的那个覆盖率阈值,不再昂贵,它只是一个设置项。问题不再是“你能不能负担得起 90%”,问题变成了“你能不能负担得起没有 90%”。

#科技先锋官# #How I AI#

发布于 山东