当前观察 › 来源档案 › 罗伯特·C·马丁 Uncle Bob:代理时代,代码为何仍要整洁 从业逾五十年的《代码整洁之道》作者 Uncle Bob 谈 AI 代理实战:代理和人类一样会被烂代码拖垮;长提示词不如测试、变异测试、依赖规则等确定性工具;TDD 等人类纪律需放宽阈值;详尽前期规划必败,应回归敏捷小步迭代。
这份材料帮助我们理解什么? 暂未纳入当前六个问题,保留为研究资料,不代表本站结论。
评论或来源文章 · 来源页面文本 · 已找到对应文本,不代表完整性或事实已经核验
以下保留原有自动整理内容,尚未完成逐句复核;日期与人物沿用档案记录。当前答案和重新核对的依据,请看上方问题页。
导语 从 1964 年十二岁写下第一个程序算起,Uncle Bob(罗伯特·C·马丁)已经写了超过半个世纪的代码,《代码整洁之道》是他被引用最多的著作。在这场与 Matt Pocock 的直播对谈中,他身披标志性浴袍出镜,复盘自己过去大半年与 AI 代理协作的实战教训:代理为什么会被烂代码拖垮、长篇提示词为什么不如确定性检查、多代理流水线如何分工,以及新手如何在代理时代学做战略程序员。
大纲与深读 10 章 展开「深读」看每一段讨论的问题与论据。
01
浴袍开场与半世纪编程路 浴袍梗源自两年前凌晨六点在前院吐槽SQL注入问题的即兴视频,意外走红后成为固定节目 1964年12岁时用小白管在木桩上为三位有限状态机写出人生第一个程序,从此被吸引 靠父亲买的Fortran、Cobol、PL/1书籍自学,18岁成为职业程序员并持续一线工作超过半个世纪 《代码整洁之道》已出第二版,是其被引用最多、影响力最大的著作 深读这一段 讨论的问题: 非开发者该如何认识这位穿浴袍直播的编程传奇
论据 / 案例: 1964年、12岁、三位有限状态机;超过半个世纪编程经历;《整洁代码》第二版被引最多
02
初遇代理:快而脏的协作 04:50 去年十二月圣诞期间尝试早期Grock代理,代码写得很糟糕但确实能写,于是拉进自己进行中的项目 代理速度快却不断留下混乱,人类一直在清理残局,反而被拖慢 意识到代理不在乎工作枯燥、会执行一切吩咐,可以承担人类负担不起的质量任务 深读这一段 讨论的问题: 代理的速度优势能否抵消其糟糕的代码质量
论据 / 案例: 早期Grock代理;十二月圣诞期间的时间线;速度与混乱并存的观察
03
CRAP与变异测试的复活 07:50 2000年代初的CRAP工具结合代码覆盖率与环形复杂度给函数打分,当年发现大量糟糕函数但逐一修复成本过高被搁置 变异测试逐个翻转负号、比较符等运算符并跑全套测试,当年要运行一整夜,产生大量存活变异体却修不完 转念让代理执行这些枯燥检查:变异测试从整夜缩至约30分钟,再令其修补漏洞、补齐测试 新目标是完全不查看代码、完全信任代理操作,靠质量分数与定期抽查来验证 深读这一段 讨论的问题: 二十年前因成本被放弃的质量工具如何借代理复活
论据 / 案例: CRAP公式(覆盖率×环形复杂度);四分钟测试套件整夜跑数百次;变异测试从整夜缩至30分钟
04
坏代码让代理失控 15:30 代理在混乱代码中开始变慢并陷入改一处、坏一处的循环,越修越乱 曾目睹单个代理直接放弃,同事转述它再也无法处理下去了 结论是代码混乱存在阈值,超过后代理和人类一样失控,整洁代码对代理同样关键 深读这一段 讨论的问题: 既然代理又快又聪明,为什么还要在意坏代码
论据 / 案例: Grock代理陷入修改循环直至放弃的实例;十二月时间线上的逐步观察
05
确定性工具取代提示灌输 19:40 多数人往ClaudeMd等配置里堆指令属于引导,鲍勃选择确定性的自动化检查 早期5-10页整洁代码规则提示被代理当成加勒比海盗式的指导方针随意软化 迷失在中间现象使长上下文中段规则失效,初始提示必须精简到最小 借用智能区与哑区概念:前150k标记较可靠,之后注意力稀释如拥挤房间里人声嘈杂 深读这一段 讨论的问题: 为什么用规则文档驯化代理行不通
论据 / 案例: lost in the middle研究;dexory的智能区/哑区术语;150k标记分界;5-10页提示失效
06
五阶段多代理流水线 27:25 多代理可并行且各自上下文聚焦,代理完成任务后消亡、新代理获得干净上下文,代价是每次约10-15秒启动 流水线为规范器转Gherkin与QA文档、编码器写单元测试与实现、清理器做CRAP与常规审查、硬化器做变异测试、QA代理转可执行脚本 硬化器不留情面地变异每个等号与变量并达到100%覆盖率,通过全流程即得可靠程序 轨迹概念:同一上下文窗口会持续沿既有方向走偏(如咖啡话题被路过者污染成肥皂剧),只有清空窗口才能清除 深读这一段 讨论的问题: 多代理如何分工交接并管住上下文窗口
论据 / 案例: 单代理5分钟任务全流程约1小时、对比人类半天;4-5倍生产力;保持2-4倍速度差;Gherkin验收格式
07
模块架构与依赖规则 37:00 架构此前靠手动:让代理先构建整体再询问模块结构,答案令他吓得不轻,随后人工设计模块划分 让代理搭出UML架构查看器,可点击模块、子模块层层下钻直达代码 确定性依赖工具生成紧凑规范文件,规定依赖流向,代理违反即须用倒置依赖、插入接口或拆分模块修复 奥斯特豪特的深模块(小接口、大隐藏)正合模型只读接口的习惯,书末附录收录两人长篇辩论 深读这一段 讨论的问题: 模块结构与接口设计为什么对代理同样是杠杆
论据 / 案例: UML架构查看器;依赖规范文件与检查器;深模块概念;与John Ousterhout的YouTube辩论
08
为代理调整代码纪律阈值 44:45 代理短期记忆近乎完美,可承受更高复杂度:CRAP阈值从人类的4放宽到6,正尝试提高到8 环形复杂度即函数内路径数,配合100%覆盖率确保所有路径被测试 TDD源于人类思维限制,代理即使被要求也会退回先写函数再补测试的方式 结论:向代理灌输人类价值观没错,但施加人类纪律与阈值需要调整 深读这一段 讨论的问题: 《整洁代码》的哪些纪律要为代理修改
论据 / 案例: 阈值4→6→8;环形复杂度=路径数;代理无法坚持单行TDD的反复观察
09
规划的诱惑与敏捷回归 50:05 详细前期规划再交代理执行是70年代瀑布的老诱惑,本周再试仍是灾难,执行者无法遵循原计划 代理热爱写计划且写得精美详细,最终却崩溃;规格是短暂易变的,不存在人类维护的最终规格,源代码已不再由人编写 变更成本已跌至接近零,应回归敏捷:做几个故事、评审架构、手动整理、再继续,并不断获取反馈 庞大规格交给代理的解读命中率仅约5%-20%,而代理写的内容人类根本不会读;建议让代理分析他的工具后为你重新生成 深读这一段 讨论的问题: 什么才算规范驱动开发,前期规划该做到什么程度
论据 / 案例: 瀑布与敏捷的历史对照;房屋改建每处改动多花美元的比喻;20%过于乐观、可能仅5%的规格命中率
10
战略编程与新人培养 57:50 奥斯特豪特的战术vs战略框架下,代理擅长战术、战略仍弱,新手应先持续写代码一整年了解代理在处理什么 入职后把新人当作代理对待,分配同样任务并接受同样的确定性工具考验数月,通过后才可管理自己的代理 学习路径从二进制、汇编、C到Python再到代理与工具,辅以Tom DeMarco、《务实的程序员》等经典老书 软件是人类尝试过最复杂的事物,基础原理是组织复杂性的方法,对基于人类训练的模型同样适用;每次抽象层升级的末日预言从未应验 深读这一段 讨论的问题: AI接管战术编程后,新人如何学习战略层能力
论据 / 案例: 迪克斯特拉论软件最复杂;把新人当代理的培训法;柏拉图担心写作让人变蠢的名言;周末写汇编的类比;1500人同时观看
金句
“它们可能很快,可能相对聪明,但它们和人类一样会遇到混乱的代码。”
“我会非常努力达到无需查看代码的地步,完全信任它们的操作。”
“强加人类纪律可能是错误的。向代理灌输人类价值观并无错误,但可能需要调整某些阈值。”
“软件是人类尝试过的最复杂的事物……基础原理是组织这种复杂性的方法,使其可被构想——不仅对人类,也对我们的模型而言。”
“你扔掉的规则,一年后你会从地上捡起来,擦拭并记住为何需要它们。”
← 上一篇 早期投资的募资、判断与退出逻辑 下一篇 → Matt Pocock的Wayfinder技能:拨开项目规划的战争迷雾