学习站 / ai-coding / uncle-bob-ai-workflow
《Clean Code》作者 Robert C. Martin 在 Matt Pocock 的播客里交代了自己的极限实验:代码全部交给 AI 智能体,人不再逐行评审,改用八道自动化门禁兜底质量——五站流水线跑下来,效率仍是人工的 4–5 倍。但架构规划这一环,他承认「全自动化还没走通」。UML 之父 Grady Booch 站在对面:信任但要核验,一行都不放过。
中文整理:完全相信AI代码的Uncle Bob,坦诚这条路还没走通(InfoQ)
原始访谈:Matt Pocock 播客 · YouTube(「晨间浴袍吐槽」始于两年前门廊上对 SQL 注入的即兴吐槽)
立场 · 同一个问题的两种答案
AI 代码普及之后,软件工程两位奠基人物给出了截然相反的答案。这也是整篇访谈的张力所在:自动化指标,到底能不能替代资深工程师几十年练出来的问题识别能力?
Uncle Bob ·《Clean Code》作者
门禁替代评审
「只要 AI 生成的代码全部通过一道道关卡,即便没人读过一行函数内部实现,我们也有充分理由相信代码的正确性。」
Grady Booch · UML 联合作者
信任,但要核验
「作为经验丰富的开发者,我可以凭直觉分辨代码好坏。但没有任何智能体,能够拥有同等的实战积累与业务上下文,做到这件事。」
本文按访谈原貌整理两边观点,不代下裁决;末节「边界与争议」汇总了这套方案的适用前提。
太长不看 · 七问七答
机制 · 为什么不靠提示词
大多数人的做法是给智能体补提示词、加规则。Uncle Bob 一开始也这么干:把 TDD 规范、整洁代码准则整成数页文档,几乎把《Clean Code》核心录入提示词。结果发现,模型对待这些明文规则,就像《加勒比海盗》里的准则——可遵守可不遵守。
背后的核心技术现象叫 lost in the middle(中间信息丢失):上下文窗口的注意力开头和结尾权重高,中间内容被弱化。规范提示词一长,大部分规则恰好落进中间区域,直接被模型无视;随着迭代推进、上下文累积,模型更无法筛选全部有效规则。行业里把这叫「智能区」和「迟钝区」(Dex Hardy 的概念):前段词元判断力强,越往后注意力越稀释。
lost in the middle · 注意力在上下文两端强、中段弱。对策:初始提示词只保留最核心的规则,让关键信息全部落在高优先级区域;其余规范约束,全部后置成交确定性工具——规则固定、执行确定,不吃上下文机制,可以无限叠加。
约束也不是越多越好:叠加过多会拖慢迭代,得不偿失。判据很简单——只要 AI 的生产效率仍高于人类,这套约束就值得。他的实测是,叠满之后 AI 效率依然是人类的 2–4 倍。
机制 · 八道质检门
这套想法不是凭空来的。21 世纪初有两项「理念很好但算不起」的技术让他念念不忘:CRAP 评分(结合圈复杂度与测试覆盖率的复合评分,判定函数劣质程度)和变异测试。当年他在大型项目里试过:CRAP 检出一堆劣质函数,但海量重写得不偿失;变异测试单次全量四分钟、要重复跑数百次,只能通宵挂机。去年圣诞前后他突然想通:AI 速度快、不怕枯燥、精准执行指令,正好让这两件事变得算得起——原来通宵的活,现在三十分钟左右跑完,还能自动修补漏洞、补齐覆盖。由此搭出八道门:
GATE 01
单元测试
编码智能体随码产出
GATE 02
Gherkin 验收测试
高阶验收标准
GATE 03
QA 测试流程
模拟用户操作的全系统方案
GATE 04
圈复杂度阈值
CRAP 评分把关
GATE 05
模块大小限制
防单模块膨胀
GATE 06
依赖结构分析
依赖规则配置化校验
GATE 07
变异测试
检验测试本身的有效性
GATE 08
测试覆盖率要求
加固阶段拉到 100%
AI 的短期记忆容量更大、精度更高,能处理更复杂的逻辑分支,所以复杂度阈值要重新标定:
人类开发者 · 他多年的要求
≤ 4
圈复杂度 4 意味着函数只有 4 条独立逻辑分支,人脑轻松hold住。
AI 开发 · 当前阈值
6
CRAP 6 = 函数 6 条独立逻辑分支且全部被测试覆盖;他与 AI 多次验证,适配性良好。
AI 开发 · 可能放宽到
8
随模型能力继续上调,前提依然是全量覆盖兜底。
第二个要调整的是TDD 的落地方式:「写一行测试、写一行业务代码」的节奏是人类为自己设计的,硬写进提示词也没用——AI 最终总会回归「先完成函数开发、再补对应测试」,和 John Ousterhout 提倡的节奏一致。他的结论:编程的价值理念依然通用,但开发行为规范和操作阈值,要针对 AI 全面调整,不能照搬。
逻辑被改动后测试必然报错;若还能通过,说明这段代码的测试有漏洞。它的严谨程度超过绝大多数团队的人工评审——这正是 Uncle Bob 敢不读代码的底气来源之一,但也意味着把测试套件当唯一质量关卡,需要极强的工程纪律,绝大多数团队并不具备,也很难快速建立。
机制 · 五站流水线
单智能体五分钟出的活质量参差;他把流程拆成五站接力,每站职责单一、规则精简,用一小时换回远高于人工的质量。
01
把人工撰写的需求文档转成结构化验收标准。
Gherkin 用例QA 流程02
按结构化用例开发业务代码、写单元测试,先过基础验收。
业务代码单测03
跑 CRAP 检测、做常规评审,清掉上游产出的冗余劣质代码。
CRAP 检测评审04
执行严苛变异测试,覆盖率拉满,逐一修掉逻辑漏洞。
变异测试100% 覆盖05
把 QA 流程转成可执行脚本,全自动操作系统、输出确定性结果。
可执行脚本确定性报告五站闭环 · 流程末尾附一道 PASS:代码必须连过八道门才算交付。配套两个用法:一台笔记本并行跑 3 个以上编码智能体;智能体「即用即毁」——单次任务完成即销毁,下一轮用全新实例,保证上下文干净。代价是每次启动 10–15 秒初始化、重读任务上下文,加上多智能体通信开销。
为什么分层分工有效?主持人 Matt Pocock 给了个精准概括:迭代轨迹。AI 会话一旦定下调子,后续所有修改都会延续这个方向——让智能体做界面测试,它后面的改动都会默认附带界面测试逻辑;只有清空上下文才能打破轨迹。让开发智能体的轨迹是「优先实现功能」、加固智能体的轨迹是「极致完善测试覆盖」,分层恰好规避了轨迹混乱。Uncle Bob 的回应:完全契合,这在非编程场景同样存在,保持上下文方向统一就能有效规避幻觉与逻辑错位。
动机 · AI 也怕代码腐烂
「为什么要管质量、而不是快速迭代等着漏洞自愈?」他在去年底就拿到了答案:让 Grok 智能体持续迭代,不及时清理劣质代码、一味堆新功能,冗余和漏洞持续累积,随之而来的是:
结论:AI 智能体速度快、智能化程度高,但和人一样无法应对极度混乱的代码。它们的容错阈值和人类略有不同,上限真实存在;混乱突破阈值,就会卡顿、漏洞激增、彻底无法推进。这就是全部质量管控工作要回答的「为什么」。
边界 · 还没走通的那一环
标题里「这条路还没走通」指的就是这里。就在访谈前一个月,架构设计还是他人工负责:让 AI 完成基础开发后,主动向它问询系统结构、模块关联、依赖关系——很多时候 AI 给出的架构答案漏洞百出,他会基于经验重新规划模块拆分、定义模块间通信规则,输出明确方案再交回 AI 执行。
为了提升管控效率,他搭了两件工具:
他正在尝试把整套架构规划流程全自动化,暂时没有取得理想效果。
边界清晰、接口规范、分工明确的模块,无论人类开发者还是 AI 智能体,都能轻松理解、精准把控。—— Uncle Bob 谈优质模块化的核心价值
这里与 John Ousterhout 的深度模块理论呼应:劣质的浅层模块接口繁杂、内部单薄;优质的深度模块接口极简、内部封装大量核心逻辑。这套理论在 AI 时代反而更吃香——AI 只需读懂极简接口就能高效开发,还会通过读测试用例理解系统功能,代码结构和模块设计越规范,AI 对业务的理解就越精准,开发质量自然越高。这既是优势也是风险点:只要底层逻辑统一规范,就能规避风险、放大优势。(两人这本书的附录里有一场专门辩论。)
方法 · 规划观
「极致前置规划」他本周刚好又测了一次,结果与以往一样:彻底失败。无论前期规划多细致,人类无法穷尽所有场景,AI 也不具备全局思考能力;执行中必然出现规划外偏差,只能反复暂停、重构、重试,效率极低。他的替代方案是一套小迭代循环:
STEP 01
挑一个单个小需求
不一次规划全部,交给 AI 完成一轮迭代
STEP 02
人工复盘架构
优化结构、调整模块与依赖,自动化尝试暂未突破
STEP 03
进入下一轮
逐步完善整体系统
敏捷小迭代 · 建房类比:如果修改设计的成本极低,你不会先花高价买完美图纸再一次性施工——先打地基、再调格局,边搭、边改、边完善。如今编程的修改成本无限趋近于零,重度前置规划失去了经济学依据。
对流行的「需求驱动开发」(多个 AI 反复打磨完美需求文档再开发),他的判断很直接:AI 非常擅长写需求文档,还会主动丰富细节、美化方案,看起来无可挑剔,但落地执行时一定漏洞百出。所以:
建议 · 给新人的路径
AI 极擅长战术编码,却不具备战略思维;而战略编程的反馈周期长,传统模式下架构失误可能半年后才暴露,新人常常等不到反馈就转行了。AI 时代反而加速了流程——战略失误会快速暴露。他的成长路径分三步:
01 · 先当过程序员
亲手写代码
不用太长,但要完整经历编码、调试、排错;否则永远看不懂 AI 面对的底层问题,建立不了顶层思维。
02 · 再当智能体
接受和 AI 一样的门禁
在重度用 AI 的团队里,资深工程师管战略,新人承接 AI 级别的任务、接受同样的自动化检测约束——效率低,但实战积累最快;熬过这阶段,才有资格把控 AI、做战略设计。
03 · 补历史经验
底层 + 经典书
从二进制、汇编、C 学起,逐层搭到高级语言与 AI 协作;读 Tom DeMarco、Ed Yourdon 与《程序员修炼之道》,补上 AI 时代被缩短的「历史踩坑经验」。
软件是人类创造过最复杂的事物。软件工程的底层基础,本质是用来拆解、组织、梳理复杂系统的方法论——这套逻辑不仅适配人类,也适配仿生人类的 AI 模型。鼓吹基础无用的人,终究会付出代价。AI 只是延缓了问题暴露的时间,并非彻底消除了问题。—— Uncle Bob,引 Dijkstra 并作结
主持人补了一句行业规律:从二进制到汇编、编译器、再到大模型,每次抽象层级升级都有人高呼「底层无用」,最后都被验证是错的——所有被抛弃的底层规则,终会被重新拾起。Uncle Bob 的回答只有四个字:「没错,亘古不变。」
边界与争议 · 使用前先读