Agent红绿测试驱动
解决什么问题
如何让 coding agent 产出可信、可持续演进的代码,而不是积累技术债的 slop;以及用一句最短的 prompt 触发整套测试纪律。
核心内容
第一性原理:coding agent 的全部意义在于它会运行代码。agent 没跑过代码,你就退回到"从 ChatGPT 复制粘贴然后祈祷"的时代。让 agent 稳定跑代码的最佳载体就是自动化测试。
操作:在 prompt 里写 "Red/Green TDD" 五个词即可。agent 认识这个行话,会展开为完整流程:
- 先写测试(此时实现不存在);
- 跑测试,看着它失败(红)——若此时就通过说明测试本身有问题;
- 写实现;
- 再跑测试,看着它通过(绿)。
测试先行的收益:agent 更不容易漏测、更不容易写出不必要的代码。这个例子同时说明一个通用技巧:存在一些 5 秒钟就能打完、却对 agent 行为有实质影响的行话短语,值得收集。
复利机制:测试进入仓库后随时间累积——测试覆盖越全,让 agent 改新功能时越不怕破坏旧功能(至少测试覆盖到的不会破)。这和人类团队的逻辑相同,但对"不逐行读代码"的工作流是生死攸关的底座。
观念更新——过度测试的旧标准作废:以前上千行琐碎测试是坏味道(改一处代码要维护一千行测试),现在维护测试是 agent 的活,小型库带 100+ 测试也没问题。前提是测试本身是好测试,且必要时可以让 agent 整批扔掉重写——代码便宜了。
把人类不愿执行的最佳实践外包给 agent:Simon 自己讨厌先写测试(试过两年,觉得拖慢、无趣),但 agent 不会无聊——它对 TDD 没有意见。
反面教训:有团队说"AI 写得太快,我们干脆不写测试了"——这是错的。测试的存在让你更快(不用手工回归每个旧功能),不是更慢。
适用边界
- 适用于所有 coding agent 工作流,与具体工具(Claude Code / Codex 等)无关。
- 收益依赖测试质量:"as long as the tests are good tests"。
- 另一个配套模式:新项目用带一个
1+1=2测试的骨架模板起步,agent 会自动沿袭写测试的习惯(详见 context-hoarding 卡)。
关键引述 · 原话
"This is the most important thing when you're working with coding agents: they have to test the code." — Simon Willison
"Very quickly when you're working with tests, you find your development speed goes up." — Simon Willison
关联卡片
- `context-hoarding-and-skeleton-templates--simon-willison`:骨架模板给 agent 种下测试习惯。 - `dark-factory-software-pattern--simon-willison`:不读代码工作流的质量底座。
被这些卡引用
提炼自 Lenny Rachitsky 的 Lenny’s Newsletter & Podcast(2019–2026)。本站为个人学习用途的二次创作,与 Lenny’s Newsletter 无官方关联。
provenance · 已核验 · glm-5.2