Y Combinator 总裁 Garry Tan 写了一篇很长的文章,讲他过去一年用 AI 写代码的核心方法论。他做了两个开源项目,GStack(93K stars)和 GBrain(14K stars),加起来大约 97 万行代码、665 个测试文件,基本全部由 Claude Code 和 Codex 在他的指挥下完成。
他提出了一个概念叫"复杂度棘轮"(Complexity Ratchet)。棘轮就是那种只能往一个方向转的机械装置,比如扳手拧螺丝只能往前不能往后。他说用 AI 写代码也可以做到这一点:质量只能上升,不能下降。前提是你得有 90% 的测试覆盖率。
具体怎么运作的?每次 AI agent 写代码的时候,同时会产出三样东西:测试(定义什么是"正确")、文档(记录为什么这么做)、评估结果(建立质量基线)。下一次 agent 再来改代码的时候,它会加载这三样东西到上下文里。测试不过就不能提交,文档就在眼前不能忽略,质量低于基线就会被发现。质量底线每一轮都在上升,这就是棘轮效应。
他举了个很具体的例子。GBrain 有个功能是从大量文本里提取"谁相信什么",第一版跑出来质量 6.8 分(满分 10),最大的问题是搞混了"谁持有这个观点"。于是评估结果被记录下来,6 个失败模式被识别,第二版 prompt 针对性修复,17 个测试锁定了这些规则。以后任何版本的代码都必须通过这 17 个测试才能上线,没有人需要记住这些细节,测试替你记住了。
为什么 90% 这个数字这么重要?他引用了 Capers Jones 对一万多个软件项目的研究:覆盖率在 70% 以下时,缺陷逃逸率很高;到了 85%-95% 的区间,缺陷捕获率跳到 92%-97%。这个关系不是线性的,在 85% 附近有一个拐点,过了这个点,漏网的 bug 数量会断崖式下降。航空软件行业几十年前就发现了这一点,所以 FAA 对飞行关键系统强制要求极高覆盖率。
过去 50 年,90% 覆盖率对人类团队来说太贵了,因为最后那 20% 的测试写起来极其枯燥费力,大多数团队到 70% 就停了。但 AI agent 不会无聊,不会在周五下午偷懒,不会觉得"以后再补"。那堵挡住人类的"意志力墙",对 AI 来说根本不存在。所以 90% 覆盖率从一个奢侈品变成了默认设置。
他还展示了棘轮可以测试的范围远超传统单元测试。他用 Bun 的 TTY 功能造了一个测试框架,能在伪终端里启动 Claude Code,观察它的实际行为,比如"有没有在 review 过程中问用户问题"。如果 agent 跳过了交互直接输出结果,测试就会失败。这已经不是在测代码逻辑了,是在测 AI agent 有没有遵守行为契约。
最后他的结论很直接:任何软件公司如果还没采用这套模式(agent + 品味 + 只升不降的测试套件),在速度和质量上已经输给了一个用这套方法的单人团队。工具是开源的,免费的,去用就行。
#科技先锋官##How I AI#
