TDD 没有死,它升级成了「驱动意图」
反直觉:传统 TDD 验证实现,Agent 时代的 TDD 首先是验证理解。
先复习一下传统 TDD
经典的三步是「红 - 绿 - 重构」:
- 红:先写一个失败的测试——它定义了「成功长什么样」
- 绿:用最简实现让测试通过
- 重构:在测试保护下改进结构
这套方法的本质,是把模糊的意图翻译成可验证的断言,然后让代码去对齐断言。
vibe coding 的最大风险:跳过「红」
Agent 编码时代,很多人进入了「vibe coding」——把需求丢给模型,看结果差不多就收工。最大的风险恰恰是省略「红」阶段:
- 「写测试麻烦」是人最想偷懒的地方
- 但 Agent 生成的代码,恰恰最需要测试兜底
- 没有测试,你就无法区分「看起来对」和「真的对」
当你省掉「红」,其实是在把「成功」的定义交给模型自己——这是把最稀缺的环节外包出去了。
测试在 Agent 时代多了一层作用
传统上,测试是用来验证实现的:我写的代码对不对?在 Agent 时代,测试多了一个更底层的作用:
测试失败 = 意图传达失败。
也就是说,测试不再只是检验「实现是否匹配意图」,它同时检验「模型是否真的理解了我的意图」。红阶段写的不是代码,而是你对成功的定义。这是反直觉的一层转变:红阶段从「写失败测试」变成了「把模糊的期望物化成一个可判对错的标准」。
- 传统 TDD:验证实现
- Agent 时代 TDD:首先验证理解,其次才验证实现
迁移规律:什么升值,什么贬值
把传统工程思想放进 Agent 时代,一条规律很清楚:
一切「定义可验证边界 + 建立反馈机制」的思想都在升值;一切「手写实现的机械细节」都在贬值。
- 升值组:TDD、代码评审(从 review 代码转向 review 意图 / 输出)、git / 版本控制(Agent 时代的记忆与回滚,ground truth 所在)、CI/CD(自动验证 = 给 Agent 的环境反馈)、需求工程 / 规格说明
- 形态转化组(从「人读」变「模型读」):注释 / 文档 → 上下文信号(AGENTS.md);架构 / 模块化 → 信息架构(上下文分割);DDD 限界上下文 → 上下文窗口管理;敏捷迭代 → Agent 工作流
- 贬值组:设计模式死记、防御性编程的措辞防御、微优化细节
心态转换:从「项目阶段」到「实时旋钮」
传统编程里,「需求想清楚」「写验收标准」「给对上下文」是项目前置阶段的一次性产物;Agent 时代它们变成了每一轮对话的实时输入——是每次生成之前影响质量的旋钮:
- 意图一旦写错,会污染后续所有生成
- 反馈粒度从「阶段」变成「即时」
- 多了一层「传达验证」:验证模型是否真的理解你
所以别练「prompt 措辞」,练三件不贬值的事:
- 把需求想清楚
- 定义可验证的成功标准
- 给对上下文
一句话
TDD 没有被 vibe coding 淘汰,它从「驱动开发」升级成了「驱动意图」。传统编程也没有被淘汰,而是精华被拎出来升值、噪音被 AI 吃掉——你缺的从来不是写代码的手,而是定义「成功」的能力。