NewsletterBlogGlossary

Red Green Refactor:用TDD拴住你的AI编程Agent

AI Agent一口气写90个测试再一口气实现,结果全是垃圾。Red Green Refactor——这个二十年老方法,是约束AI编程质量的最佳牵引绳。

DEV
分享XLinkedIn

Red Green Refactor:用TDD拴住你的AI编程Agent

你让 AI Agent 帮你写代码,它一口气生成90个测试,再一口气写完所有实现——跑完一看,全是垃圾。这不是个案,而是 LLM 编程的结构性缺陷。一个存在了二十多年的老方法——TDD(测试驱动开发),正在成为约束 AI 代码质量的最有效手段。

发生了什么

一位开发者在实践 AI 编程时发现了一个反复出现的问题:让 AI Agent 自由发挥时,它倾向于水平铺开——在一个文件里塞进大量测试,然后用一次巨大的编辑试图全部通过。结果是大量无意义的测试和质量极差的实现代码。

他的解决方案是回归经典的 Red Green Refactor 循环。这个由 Kent Beck 在《极限编程》中推广的方法,核心流程像交通信号灯一样简单:Red,先写一个注定会失败的测试,让 CI 变红;Green,写最小的实现代码让测试通过;Refactor,在测试保护下重构代码,优化结构。

Simon Willison 对此有一句精准的判断:test-first 开发天然适配编程 Agent。原因很简单——你先写好验收标准,再让 AI 去实现,AI 的每一步都有明确的对错反馈。

为什么重要

问题的根源在于 LLM 的生成本能。大语言模型擅长一次性输出大量内容,但这恰恰与高质量软件开发的节奏相悖。批量生成测试再批量实现,等于跳过了每一步的验证环节——你无法确认任何一个测试是否真正测到了该测的逻辑。

单测试循环法彻底改变了这个动态:写一个测试,跑失败;写实现,跑通过;再写下一个测试,再写实现。就像健身教练不会让你一口气做100个俯卧撑,而是一组10个,做完检查动作是否标准。每一轮红绿循环,都在保证 AI 写出的代码真正服务于功能,而不是凑数。

这位开发者的实际体验是:当他看到 Agent 先写失败测试、再写实现通过后,甚至不需要逐行阅读测试代码——只扫一眼标题就够了,因为红变绿的过程本身就是验证。这大幅降低了 code review 的认知负担。

技术细节

在 AI 编程工具中落地 TDD,核心是配置一个技能指令(skill instruction),规则只有三条:

  1. 每次只写一个失败测试,禁止批量生成
  2. 写最小实现让这个测试通过,不许多做
  3. 所有测试通过后,再寻找重构机会

但仅有流程还不够。代码库本身的质量决定了 AI 的产出上限。原话说得很直白:如果你的代码库是一团泥巴,LLM 会很乐意在泥巴里打滚。就像任何开发者一样,给它什么环境,它就产出什么质量。

这意味着几个前置条件同样关键:使用强类型语言(如 TypeScript)、维护完善的单元测试覆盖、保持代码库的整洁度。这些都是拴住 AI 的牵引绳,缺一不可。

你现在该做什么

  1. 在你的 Agent 配置里加一条规则:每次只写一个失败测试,再写实现。无论你用的是 Claude Code、Cursor 还是其他工具,这条约束都能立即生效。
  2. 审视你的代码库质量:如果测试覆盖率低、类型定义不完善,先补基础设施再让 AI 上场。
  3. 养成检查节奏:每完成一轮红绿循环,花10秒扫一眼测试标题和实现 diff,确认方向正确再继续。

AI 越能写代码,你越需要用测试来拴住它。一次一个红绿循环,就是最好的牵引绳。

相关阅读TDD 术语解释 · AI Agent 工作原理


觉得有用?订阅 AI 简报,每天 5 分钟掌握 AI 动态。