页面顶部
已进入:阅读页
← 返回

个人网站文章2026-05-14lixiaolai.com作者:李笑来原文链接

预测曾是测试的替代品

2026-05-04,在提交 f25d2d5f 中,我从一个仓库里删掉了 34,523 行代码。1

一支科学玻璃温度计放在浅色木质表面上,暖色侧光照着它——仪器已经用完,不是被浪费;读数已经取得。

§1——删除#

2026-05-04,在提交 f25d2d5f 中,我从一个仓库里删掉了 34,523 行代码。1

一百二十二个文件。一个围绕十二个工具构建的遗留功能面,被压缩成四个工具。不是因为那十二个工具坏了——它们能工作。也不是因为项目失败了——它有 2,727 次提交,横跨四个半月的活跃开发。删除之所以发生,是因为十二工具功能面从一开始就是一个探针,而探针已经返回了读数。

留下来的四个工具,是那些积累了真实使用的工具。没留下的八个并不是失败。它们是用可运行代码提出的问题,而答案返回来了:不需要。在 AI 之前的构建经济里,为了弄清十二个工具里有四个值得保留而把十二个都交付出去,成本会高到难以承受——团队要花数周时间,才能发现如今一次提交就能丢弃并替换的东西。经济条件已经改变。

什么样的实践会长成这样?什么样的成本模型,会让一次 34,523 行代码的删除看起来像好工作,而不是鲁莽?

这次删除不是在混乱中发生的。同一个仓库里有 .claude/hooks/gha-tdd-guard.mjs——一个 hook,用来阻止没有同级测试文件的生产代码被提交。它的 AGENTS.md 里写着规则:“超过 500 行的计划,在 Phase 1 提交之前需要 Codex 审计。”那 34,523 行是在结构之内被移除的。结构才是重点,而这个故事开始于这些代码存在之前几十年。

§2——为什么旧习惯曾经理性#

Frederick Winslow Taylor 发明细致计划,并不是因为他觉得工人愚蠢。他这么做,是因为工人面对一个真实的物理约束:“他在机器前工作和在桌前工作,在物理上不可能同时进行。”2

他的解决方案是架构性的。计划专家在计划室工作;执行工人在工厂车间工作。“每个工人的工作,都由管理层至少提前一天完整计划出来,并且在多数情况下,每个人都会收到完整的书面指令,详细说明他要完成的任务。”2 泰勒的理由是认知专业化和物理不可能性——但他搭建的结构编码了一种特定的成本不对称。计划时间是更便宜的变量:它只需要思考、纸张和专家注意力,这些都不会磨损机器,也不会消耗材料。执行时间才是昂贵的瓶颈:它需要工厂车间里的时间、金钱和协调。

“成本不对称”这个框架,是本文从泰勒的结构中作出的推论,不是泰勒明说的主张。泰勒描述的是他观察到的高效组织。但他观察到的结构,正在回应那个时代的经济条件:相对于行动,思考便宜。

这种不对称塑造了一个世纪的职业文化。细致计划的伦理,并不是一种性格特质,也不是伪装成美德的东西——它是一种成本优化的启发式方法,校准于一个执行才是稀缺且昂贵资源的环境。当构建任何东西都需要时间、金钱和协调时,思考必须代替测试完成测试的工作。那个在脑中模拟后说“这个设计行不通”的过程,节省了数周本来会证明同一件事的物理劳动。旧习惯是理性的。问题是,曾经支撑它的成本是否仍然成立。

§3——等待自身经济条件的方法#

托马斯·爱迪生并没有发明经验方法。他是在没有足够理论可替代它的时刻,把它工业化了。

门洛帕克实验室为白炽灯泡进行了数千次灯丝测试——系统测试材料,记录结果,用失败约束下一次猜测。特斯拉同时代的批评在技术上是准确的:“只要一点理论和计算,就能为他省下 90% 的劳动。”3 特斯拉漏掉的是,在没有足够理论可供计算时,总成本如何计算。维基百科对爱迪生方法的描述很精确:他诉诸试错,具体是因为“缺乏足够理论,或不知道有足够理论”。3 当理论可用时——焦耳定律和欧姆定律可用时——爱迪生会使用理论。枚举是在预测理论上最优、实践上却不可用时的剩余策略。

重点不是爱迪生很聪明,也不是特斯拉错了。重点是,经验性枚举一直是一种有效的认识论。限制它的是每次试验的成本:每次测试都需要构建一个物理组件,运行一次物理实验,手工记录结果。方法是古老的。约束是经济性的。

改变软件计算方式的,并不是一个新想法。而是经验方法已经等待了一个世纪的经济条件终于到来。

§4——成本坍缩,用数字说#

三个代码库,大约五个月,约 4,929 次提交,跨一个插件 linter、一个 Tauri 编辑器和一个 Tauri 桌面控制面板,合计约 1,177,000 行代码——由一个人从零开始构建,没有线上用户。4 至少三次明确的丢弃事件:一次 34,523 行删除,一个两天后丢弃的 568 MB 归档,一次重构中生产 LOC 减少 70%。

这些都是作者自己的仓库。这一点很重要,而它们能证明什么、不能证明什么,会在 §9 中直接处理。

仓库 提交数 活跃天数 代码行数 重要丢弃事件
nlpm 1,109 50 28,706 9 分钟内重命名 flag(第 2 天)
vmark 2,727 ~135 — 34,523 行删除(提交 f25d2d5f)
claudepot 1,093 31 223,303 568 MB 单体归档,2 天后重启
合计 ~4,929 ~5 个月 ~1,177,000+ 3 次明确丢弃事件

第一版构建成本已经坍缩。不是总生命周期成本——运维成本、维护债务、审计费用都仍然存在,并会在维护周期中复利增长。但构造一个第一版、让某个东西跑起来以判断形状是否正确的成本,已经下降到不再是“到底应该测试还是预测”这个决策中的约束瓶颈。

nlpm​(Natural-Language Programming Manager):50 天内 1,109 次提交,28,706 行代码。4 峰值速度:一天内 92 次提交。第一天,九分钟内七次提交搭起核心脚手架。第二天,一个 20:11 引入的 flag 在 20:20 被重命名——从识别到执行,九分钟的决策周期,零协调开销,零分支协商,零上下文切换税。仓库有 13 个 GitHub Actions workflow,且没有外部 Python 依赖。速度处在结构之内。

claudepot​:568 MB 单体——一个营销站点、ingest pipeline 和内容目录打包在一起——在两天工作后于 2026-04-14 被归档。4 随后从零重启,变成一个聚焦的 Tauri 2 应用。31 天内,1,093 次提交,223,303 行代码;1,700+ 个 Rust 测试和 400+ 个 JavaScript 测试;某次提交写着“audit fix: address 39 of 40 Codex audit findings”;随后一次重构把生产 LOC 从 817 减到 253——一次通过减少 70%。那个 568 MB 归档不是残骸。它回答了一个问题:这个形状不合适。这个答案就是两天工作的交付物。

三个案例合在一起展示了这套逻辑:构建、测量、保留或删除。判断装置——规则文件、TDD guard、跨模型审计循环——让速度有方向,而不是滑向混乱。一个有 10+ 个 .claude/rules/ 规则文件、有一个 CLAUDE.md 命名四个名词组成的领域模型、提交日志里包含 codex audit-fix 循环的开发者,并不是贬义上的 vibe coding。装置始终在场。

§5——机制的命名#

当构建第一版的成本低于预测这一版会发现什么的成本时,最优策略就会倒转。

这不是偏好,也不是审美。这是算术。如果细致分析一个十二工具 MCP 表面是否会被真实使用,需要三天专注注意力——架构评审、用户研究、优先级会议——而构建这个十二工具功能面并测量实际使用,只需要两天加一次把测量结果落地的提交,那么预测就成了昂贵路径。现实成了更便宜的分类器。

那 34,523 行被删除的代码不是残骸——它们是信号。残骸本身就是测量结果。仪器被用完了,不是被浪费了;温度计并不会因为已经测过温度而变得没用。

568 MB 的 claudepot 单体回答了“这个形状不合适”。这个答案正好值两天第一版构建成本——同一个答案,用三周架构规划也许能得到,也许得不到,而且预测开销更高,准确性没有保证。探针不是产品。探针产生产品决策所需要的数据。

论证在这里转向。前几节说明,在旧成本下,旧的细致计划习惯是理性的。案例研究说明,成本已经在一定范围内发生变化。机制——策略倒转的那个点——就是成本交叉点:测试变得比预测更便宜,现实变得比预见更可靠。国际象棋和制药业,都比软件更早触达了这个交叉点。

§6——两个领域,同一个结果#

1973 年,西北大学 Chess 4.x 团队放弃了基于启发式的选择性搜索,转向全宽度蛮力搜索。他们的发现是成本比较性的:简单枚举所有可用走法所需的时间,显著少于应用知识密集型启发式方法挑选少数有希望走法所需的时间。枚举器击败启发式玩家,不是因为它更聪明,而是因为它让搜索变得比预测更便宜。Chess 4.x 在 1970 到 1979 年十届 ACM 计算机国际象棋锦标赛中赢了八届;一位国际象棋史学者指出,它奠定了现代国际象棋程序至今仍在遵循的范式。5 当枚举变便宜时,专家式启发选择就失去了竞争优势。

制药业在 1990 年代走了一条结构上完全相同的路。高通量筛选——对大型化合物库进行自动化实验测试——随着机器人技术和微型化降低了每次实验测定的成本,成为药物发现中的确认层。计算预测并没有消失;它演化成了前置过滤器。一篇同行评审综述确认,“计算机辅助药物设计,例如生成虚拟库……如今已成为标准流程”——先定义更可能产生命中的化学空间子集,再由更昂贵的物理筛选来确认。6 虚拟筛选成为第一遍;HTS 成为验证。预测没有死。它改变了功能。

制药案例预示了 §7 接下来要讲的东西:当实验测试足够便宜时,预测并不会从管线中消失。它会迁移。它变成便宜的第一遍,先缩小空间,然后让更可靠的分类器——实际实验——作出判断。软件计划正在经历同样的结构调整。四功能分解,就是这次调整的地图。

§7——四种功能;失去工作的那一种#

在问计划的哪些部分会存活之前,先问计划实际上在做什么,会更有帮助。

基于 Suchman 1987 年关于计划是“行动资源”而不是控制结构的论证,以及 Mintzberg 1994 年对 planning-as-prediction、planning-as-coordination-device、planning-as-control-device、planning-as-communication-device 的区分,本文识别出四种可分离的功能:7

过滤​——在花费资源之前,排除不可能或极不可能奏效的路径。这个功能回答的是:如果 A 版本会因为我们可以预见的原因失败,我们还需要构建 B 版本吗?

协调​——在多方行动之前,让他们围绕一个共享模型对齐。团队、利益相关方、依赖关系都需要共同框架。计划提供这个框架。

可读性​——让预期工作对将要评估、资助或继承它的人可见。未来的自己、资助者、合作者和管理者,都需要理解正在发生什么。

通过想象进行练习​——计划这个行为会发展领域理解。思考一个功能将如何运作,会教给构建者一些关于领域的东西;运行代码最终也会教这些东西,但在构建昂贵时,想象更快、成本更低。

当第一版构建成本坍缩时,只有第一种功能——过滤——把工作输给了一个更便宜的竞争者。现实成了比预见更好的过滤器:它抓住计划遗漏的边界情况,它不受计划者盲点影响,而且它的成本永远不会高于构建那个揭示答案的版本。

协调、可读性和通过想象进行练习,全部原样存活。团队仍然需要对齐。项目仍然需要对利益相关方可见。构建者仍然会从预先推演自己将要做的事中获益。执行成本坍缩并不会触碰这三个功能。装置并不替代它们——它只替代过滤功能,而另外三个功能继续在规则层,而不是结果层运作。

本文的原创贡献,是把成本机制过滤器加到这个分解之上。既有工作(Suchman、Mintzberg)描述了这些功能。本文的分析动作,是回答当构建成本下降时,究竟哪个功能被具体淘汰,哪些功能存活。答案是:过滤变得冗余;其余功能没有。

对读者关于删除代码和丢失知识的担忧,还有一个安静的推论。知识存在于探针的结果中——存在于运行代码后学到的东西中——而不是存在于代码本身。被删除的 nlpm flag,被归档的 claudepot 单体:被用完的是仪器,不是知识。知识住在测量里,不住在温度计里。

§8——反方证据语料#

最强反方论证,值得以它最强的形式出现,而不是以最弱的形式出现。

2026 年的反方证据语料不只是 CodeRabbit 2025 年 12 月的报告——尽管那项分析 470 个 pull request 的研究发现,AI 共同编写的代码每个 PR 产生的问题约为纯人类代码的 1.7 倍(10.83 vs. 6.45),其中跨站脚本漏洞在 AI 代码中的比例具体达到 2.74 倍。8 那项研究使用基于信号的作者分类,而不是确认过的归因,并且由一个有商业利益去呈现 AI 代码问题的厂商完成——这两个都是合理限定,但都不能解释掉这个发现。

2026 年更强的条目,是 Liu 等人的大规模实证研究——跨 6,299 个 GitHub 仓库、302,600 次已验证的 AI 作者提交,追踪五种 AI 编码助手。标题级发现是:每个工具产生的提交中,超过 15% 至少引入一个问题。更重要的是,22.7% 被追踪的 AI 引入问题,存活到了仓库的最新版本。9 这不是对 470 个 PR 的厂商分析;它是对 302,600 次提交的系统检查,而持久存在比例——几乎四分之一的 AI 引入问题仍存在于最新版本——是对维护债务的直接测量。这项研究是 arXiv 预印本,尚未经过同行评审,这是一个真实限制;但其方法论(用明确 Git 元数据做作者分类,而不是信号推断)显著比 CodeRabbit 的做法更可靠。

METR 2025 年 7 月的随机对照试验发现,16 名经验丰富的开源开发者,在允许使用 AI 工具时,完成任务反而慢了 19%——而且是在他们自己成熟代码库上工作,平均有五年过往贡献经验。10 METR 自己 2026 年 2 月的后续研究让情况复杂起来:同一批人返回,在 2025 年末的一次测量中显示 18% 提速——但 METR 明确声明这个数字因严重选择偏差而不可靠。30% 到 50% 的开发者避免提交那些没有 AI 就不想完成的任务,使测量朝相反方向变得不可靠。11 原论文没有被撤回;后续数据也不是生产力提升的证据——METR 称它“只能非常微弱地证明这种提升的规模”。诚实读法是:此刻 AI 生产力太依赖群体,难以干净测量;原先 19% 放缓的发现不应被当成定论。

这组反方证据语料不是对本文的反驳。它是本文的预测。

本文的主张是:当第一版构建成本坍缩时,装置——规则文件、TDD guard、审计循环、跨模型评审——是判断所必需的替代落点。2026 年的数据直接证明了,当这种装置缺席时,在总体规模上会发生什么。CodeRabbit 的样本、Liu 等人研究中的 6,299 个仓库、METR 测得的开发者——这些都是没有本文案例所描述的系统性判断装置时的 AI 辅助开发样本。反方证据语料以规模展示了装置存在的目的:防止这些东西发生。

本文对此的诚实立场是:装置是必要的。任何装置是否足以弥合总体规模上的差距——是否能把 22.7% 的持久存在率压到与细致人工开发相当的水平——是一个本文没有解决的实证问题。本文只有一个自律从业者的数据。那不是受控实验。

§9 — n=1 问题,以及符合论证的失败#

幸存者偏差这个反对意见,应该被点名,而不是被软化成范围免责声明。

三个案例研究共享三个限制它们证明力的属性:它们都由同一位作者构建;这位作者就是本文作者;而作者使用的判断装置,是在这些案例开始之前多年组装起来的。.claude/ 基础设施、规则文件、跨模型审计工作流——这些都不是 nlpm 开始时才凭空出现的。它们已经在场。案例研究测量的是“给定装置之后”的结果,不是一个从业者第一次接触这种方法时的结果。

给这个元投资命名:这个装置代表了多年有意投入的、被编码下来的判断。读到本文并试图复制这种实践的开发者,会面对一个 bootstrap 问题——装置需要时间来构建,而构建装置本身就是一种结果预测练习(哪些规则会成立,哪些约束能泛化)。这些案例不是一个拥有 AI 工具的中位开发者会产出什么的基准。它们是机制演示——证明成本坍缩是真实的,并且在判断装置之内进行有方向的经验主义,在结构上是可行的。

给失败命名:568 MB 的 claudepot 单体在 §4 中被呈现为放弃选项的展品——证明丢弃一个不合适的形状,成本是两天而不是两个月。这是准确的。它也证明装置没有阻止失败。两天工作进入了一个不合适的形状,而装置在这两天被花掉之前,没有捕捉到形状错配。装置控制了成本;它没有消灭错误。二者不同。第二个例子:被放弃的 com.claudepot.app fork,95 次提交,于 2026-04-14 被放弃。装置在场。方向错了。成本很低;失败真实。

装置没有阻止失败。它控制了失败。

给证伪条件命名:什么证据会反驳机制主张?一个受控比较——同一从业者在等价绿地项目上,有装置与无装置的对照——如果有装置版本仍然产生反方证据语料所记录的总体规模失败模式,就会反驳这个机制主张。这样的研究不存在。在它存在之前,本文主张是一项关于哪些条件会倒转成本计算的假设,而不是一项证明装置就是解释变量的演示。

本文提出假设。它不能确认假设。

§10——计划迁移;问题仍然开放#

处方不是“少计划”。而是“换一种方式计划”。

在旧经济中,计划预测结果:将构建什么、哪些功能会成功、用户会如何反应、会出现哪些边界情况。这些预测在成本上是有理由的,因为替代方案——通过构建来发现——很贵。在新经济中,在制品可以被构建、机器检查并廉价丢弃的领域里,这一层面的结果预测,绕过去比执行它更便宜。外科手术明确不是这样的领域。有真实用户的线上生产系统、受物理制造约束的硬件、土木基础设施,也都不是。范围是真实的。

存活下来的是规则预测——不是预测这个项目会发生什么,而是预测哪些约束将统治所有项目。规则文件、TDD guard、跨模型审计要求:这些也是预测,只是处在不同成本粒度上。一条规则设计一次,应用于许多次构建;一个结果预测做一次,测试一次。结果预测的成本计算已经倒转;规则预测的成本计算没有倒转。计划有了新的对象,不是新的判决。

Karpathy 在 2026 年 4 月命名了这个结构性问题。他写道,在 agentic engineering 中,“你负责品味、工程、设计,以及这个系统是否说得通。”12 这个框架把工艺和监督放在中心,方向上是对的。本文的贡献,是解释为什么这种结构现在在经济上最优的机制:结果预测已经成为昂贵路径,而装置才是细致斟酌如今应当居住的地方。Karpathy 从另一条路抵达了目的地。成本机制解释了为什么这个目的地是稳定的。

判断装置是新的承重投资。不是冲刺,不是交付速度,不是提交数量。判断装置把有方向的经验主义和无方向的乱撞区分开来,也把本文中的案例研究与 Liu 等人测量到的总体区分开来。它是否足以在总体规模上弥合差距,是下一个实证问题。本文识别了它;本文没有回答它。

新经济中的英雄,不是移动最快的构建者,而是设计出让快速移动有方向的装置的构建者。约束、装置、规则:预测现在住在这些地方。不是消失。是迁移。

参考文献#

  1. Author's own vmark repository: https://github.com/xiaolai/vmark. Commit f25d2d5f, 2026-05-04. Full commit message: "Hard cut of the legacy MCP surface — 122 files, ~34,500 lines deleted." Numbers extracted 2026-05-13; reproducible via git show f25d2d5f --stat. ↩
  2. Taylor, F.W. The Principles of Scientific Management. Harper & Brothers, 1911. Chapter 2. Project Gutenberg EBook #6435. marxists.org/reference/subject/economics/taylor/principles/ch02.htm ↩↩2
  3. "Edisonian Approach." Wikipedia. Fetched 2026-05-13. Tesla quote: Nikola Tesla, as cited in Wikipedia, confirmed verbatim. Also: "The Edisonian Method: Trial and Error," Springer Nature, link.springer.com/chapter/10.1007/978-3-030-29940-8_10. ↩↩2
  4. Author's own repositories: claudepot-app (https://github.com/xiaolai/claudepot-app, 1,093 commits, first commit 2026-04-12); nlpm (https://github.com/xiaolai/nlpm-for-claude, 1,109 commits, first commit 2026-03-25); vmark (https://github.com/xiaolai/vmark, 2,727 commits). Numbers extracted 2026-05-13 and reproducible via git log. ↩↩2↩3
  5. "Chess (Northwestern University)." Wikipedia. Fetched 2026-05-13; ACM championship record confirmed; brute-force vs. selective-search paradigm shift confirmed. Also: chessprogramming.org/ACM_1974. ↩
  6. Baig, M.H. et al. "Combinatorial chemistry and drug discovery." PMC5645069. Journal of Biosciences, 2017. pmc.ncbi.nlm.nih.gov/articles/PMC5645069/ ↩
  7. The four-function decomposition is the article's analytical contribution, refining prior work: Suchman, L. Plans and Situated Actions. Cambridge University Press, 1987 (plans as resources for action, not control structures); Mintzberg, H. The Rise and Fall of Strategic Planning. Free Press, 1994 (planning as prediction, coordination, control, and communication). ↩
  8. CodeRabbit. "State of AI vs Human Code Generation Report." coderabbit.ai/blog/state-of-ai-vs-human-code-generation-report, December 17, 2025. Independent coverage: The Register, December 17, 2025. theregister.com/2025/12/17/ai_code_bugs/ ↩
  9. Liu, Y., Widyasari, R., Zhao, Y., Irsan, I.C., Chen, J., & Lo, D. "Debt Behind the AI Boom: A Large-Scale Empirical Study of AI-Generated Code in the Wild." arXiv:2603.28592. Submitted March 30, 2026; revised April 26, 2026. arxiv.org/abs/2603.28592 (arXiv preprint; not yet peer-reviewed as of 2026-05-13.) ↩
  10. METR. "Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity." metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/, July 10, 2025. arXiv:2507.09089 (preprint; not yet peer-reviewed as of 2026-05-13.) ↩
  11. METR. "We are Changing our Developer Productivity Experiment Design." metr.org/blog/2026-02-24-uplift-update/, February 24, 2026. ↩
  12. Karpathy, A. "Sequoia Ascent 2026 summary." karpathy.bearblog.dev/sequoia-ascent-2026/, April 30, 2026. Quote confirmed verbatim. ↩

延伸阅读#

  • Suchman, L. Plans and Situated Actions: The Problem of Human-Machine Communication. Cambridge University Press, 1987.——奠定“计划是行动资源,而不是控制结构”这一论证的基础。§7 的四功能分解直接建立在它之上。
  • Mintzberg, H. The Rise and Fall of Strategic Planning. Free Press, 1994.——区分 planning-as-prediction 与 planning-as-coordination、-control、-communication。本文的四功能分解细化了这个早期分类,并用成本机制过滤器扩展它。
  • Taylor, F.W. The Principles of Scientific Management. Harper & Brothers, 1911. Project Gutenberg EBook #6435.——通读它,可以理解计划-执行分离的原始形态。§2 中的成本不对称框架,是本文从泰勒结构中作出的推论;原文确认了泰勒构建了什么以及为什么构建。
  • Karpathy, A. "Vibe Coding." x.com/karpathy/status/1886192184808149383, February 2, 2025.——命名了本文所分析实践的造词。本文的论证不依赖 Karpathy 的框架,但确实通过他建立的词汇进入当前讨论。
  • Ries, E. The Lean Startup. Crown Business, 2011. — build-measure-learn 循环部分预示了本文的论证,但它所处的成本结构中,“build”仍意味着数周。它是理解本文正在更新什么、以及为什么这个更新并非小事的有用背景。