代码库越烂,AI越蠢:大模型时代的软件工程生存法则
“当你把整个代码库塞进AI的上下文窗口时,你不是在喂养它,而是在毒害它。”——Matt Pocock , TypeScript教父级人物

信息时代的大爆炸,让我们一下子看透了一个残酷真相:
AI编程工具的普及,并没有让软件工程变得更简单,反而放大了我们过去二十年积累的技术债与认知惰性。
当 ursor、Claude Code等工具承诺“只需写好需求文档,AI就能自动生成完美应用”时,一场危险的幻觉正在蔓延——
仿佛技艺已死,洞见无用,只需坐等机器代劳。
但现实狠狠打了脸。
在AI Engineer大会上的一场闭门Workshop中,Matt Pocock用两小时硬核实战刺破了这层泡沫。
他不仅现场从零构建复杂业务功能,更抛出一个颠覆性判断:
那些被我们遗忘的经典软件工程基本功——
测试驱动开发、垂直切片、深模块设计——
恰恰是驾驭AI的终极武器。
这不是怀旧,而是生存法则。
因为在这个AI革命的时代,代码库的质量,直接决定了AI的智商上限。
烂代码库养不出好Agent ;
混乱架构只会催生更多混乱。
在信息主宰一切的新范式下,必须重构高杠杆的软件工程方法论——
不是放弃控制,而是以更高维度的设计共识、反馈机制与模块封装,引导AI成为可进化的生产力引擎。
一、LLM的生理极限:聪明区与失忆症
要驾驭AI,先得理解它的“病灶”。
大语言模型并非全知全能的神谕,而是一个受制于注意力机制的有限理性体。
正如Human Layer创始人Dex Hy所比喻:
每次给LLM增加一个Token,就像给足球联赛新增一支球队——
比赛场次呈二次方增长,注意力在海量信息间不断牵扯,最终导致系统性降智。
“大约在10万个Token左右,它就开始变蠢了……你不断往上下文里塞东西,它就越来越蠢,直到做出愚蠢的决策。”
这句话如手术刀般精准切开了“超长上下文万能论”的幻象。
许多开发者误以为100万甚至200万Token的Context Window能让他们把整个代码库+对话历史一股脑扔给AI。
但事实是:
超长上下文适用于信息检索(如从《战争与和平》找人名),却不适用于需要严密逻辑推理的编程任务。
更致命的是,LLM是个“失忆症患者”。随着对话历史(Sediment)堆积,其注意力被严重稀释,陷入“降智区”。
此时,无论模型参数多大,输出的代码都可能逻辑断裂、重复造轮子,甚至自相矛盾。
应对之道?
清空上下文,只保留核心System Prompt,让AI永远在“聪明区”从头开始。
这并非技术妥协,而是对软件工程古老智慧的回归:
不要一口吃成胖子,把任务拆小。
在一人企业的实践中,这意味着:
每一次交互必须聚焦单一目标,避免上下文污染。
高杠杆内容的本质,从来不是信息量的堆砌,而是认知带宽的精准分配。
二、设计共识:用“Grill Me”取代静态文档
当前流行的“Specs to Code”运动(又称Vibe Coding)主张:
人类只改需求文档,AI负责生成代码;
若代码跑不通,不去看代码,而是回头改文档。
Matt直言:“这简直糟糕透顶。”
“你需要掌控代码,理解里面的内容,塑造它——因为代码才是你的主战场。”
彻底放弃对代码逻辑的理解,等于交出系统架构的控制权。
文档永远无法覆盖所有边界条件。
一旦生成代码成为黑盒,Bug出现时,你将束手无策。
真正的高杠杆路径,不是单向输出文档,而是双向对齐设计共识。
Matt提出了一个极具攻击性的Prompt技巧——
Grill Me (拷问我):
接下来一小时,AI会连续抛出几十个尖锐问题:
“积分是否追溯发放?”
“用户跳过视频能否拿分?”
“数据表存在哪里?”
—— 这本质是利用AI的世界知识穷举边缘情况。
这个过程的目的,不是产出一份静态文档,而是在人类与AI之间建立《设计的设计》中所说的‘设计共识’。
只有脑暴对齐后,再让AI总结PRD,才是有效规划。
高杠杆内容的本质,不是文档本身,而是共识的建立过程。
一人企业若想穿越周期,必须掌握这种“做局”能力:
引导AI成为思考伙伴,而非执行奴隶。
三、构建反馈闭环,对抗AI的水平切片癖
拿到PRD后,如何拆解任务给AI?
这里藏着另一个致命陷阱。
AI是个无可救药的‘水平切片狂魔’。
“它喜欢一层一层写代码:先做完所有数据库,再做所有API,最后加前端。但这没有全链路的反馈循环。”
这意味着,在数小时开发中,你无法运行代码验证效果。
AI在“盲写”,一旦底层设计跑偏,后续全部崩塌。
解决方案?
强制垂直切片。
借鉴《程序员修炼之道》中的“曳光弹(Tracer Bullets)”概念:
第一个任务必须横跨所有层级——
极简数据库表 + 基础服务逻辑 + 可视化仪表盘粗糙版。
哪怕简陋,只要跑通一次,AI就获得了一发“发光的曳光弹”。
此后迭代,只需在此闭环上生长血肉。
反馈闭环的存在,让AI从猜测走向验证,从混沌走向有序。
这不仅是技术选择,更是认知升级:
在AI时代,延迟反馈 = 架构腐化。
知识资本家必须成为反馈机制的设计者,而非被动等待结果的消费者。
四、TDD与深模块,为AI构建可进化的土壤
AI能否自主编程,天花板不在模型,而在你的代码库。
“如果你的代码库是一团糟,你在里面运行的Agent产出的也只会是垃圾。”
这句话如探照灯般照亮了问题核心:
糟糕的代码库缺乏反馈接口,让AI失去判断对错的标准。
Matt极力推崇TDD(测试驱动开发)。
强制AI先写一个注定失败的测试用例,再写业务代码使其通过。
这不仅能防止AI “作弊”(为跑通测试而掩盖漏洞),更构建了自动化的质量守门人。
但仅有TDD不够。
代码库的拓扑结构同样关键。
AI极易写出“浅模块”——几十上百个零碎、高耦合的小文件。
这导致:
– 依赖树难以追踪;
– 测试边界模糊;
– 修改一处,处处崩溃。
正确做法是指引AI构建“深模块( Deep Modules )”——
将复杂逻辑封装于黑盒,对外仅暴露极简接口。
这样做的好处显而易见:
– 便于挂载大范围测试边界;
– 人类可“只管接口,不管实现”,将内部逻辑完全外包给AI;
– 在高速迭代中保住脑力与理智。
深模块不是技术选择,而是认知杠杆。
它让一人企业能在有限精力下,驾驭无限规模的AI产能。
五、工作流革命:白班规划 vs 夜班执行
当理念落地,Matt描绘了一幅未来工作流图景:
泾渭分明的日夜两班制。
高效背后,是角色的根本转变。
“我们需要准备好去做更多的代码审查……这不好玩,但大概就是事情发展的方向。”
程序员不再是键盘敲击者,而是流水线末端的质检员与品味守护者。
AI可以倾泻代码,但没有人类的“品味(Taste)”,产出的只是冰冷且难以维护的工业废料。
这正是“知识资本家”的核心价值:
在自动化洪流中,守住系统品位与架构完整性。
六、文档腐烂、前端困境与团队协作
面对真实世界的混乱,这套范式是否可行?
Q :团队环境中需求频繁变更,如何应用线性工作流?
A :前半段(概念→PRD)本质是“团队协作任务”。
Grill Me过程中遇阻,需暂停与领域专家讨论或造原型试探。
只有多方扯皮结束、确定“目的地”后,后半段AFK实现才可单人驱动。
Q :功能实现后,PRD文档是否保留?
A :坚决删除。
软件工程有“文档腐烂(Doc Rot)”现象——
几周后代码面目全非,过期PRD会误导AI。
实现即归档,或打“已关闭”标签。
Q :AI写不好UI怎么办?
A :前端强依赖人类视觉审查。
做法是:
让AI在废弃分支生成3个设计原型,人类肉眼选出最优,再将资产反哺回规划阶段。
这些细节揭示了一个深层逻辑:
AI不是替代人类,而是放大人类的决策质量。
烂决策 + AI = 更快的失败;
好决策 + AI = 超线性回报。
通往未来的钥匙,藏在过去
这场工作流拆解揭示了一个反直觉真理:
在AI时代,通往未来的钥匙,竟藏在过去。
当我们面临上下文爆炸、架构失控、测试失效等现代困境时,解药不在更大模型,而在《程序员修炼之道》《软件设计的哲学》这些经典著作中。
这些被前辈提纯的最佳实践,正是引导硅基生命不走向混乱的定海神针。
对于知识资本家而言,这不仅是技术指南,更是高杠杆生存法则:
不做Prompt催更者,而做AI代码引擎的超级架构师。
在一人企业的征途上,唯有将经典工程智慧与AI能力深度融合,才能在信息主宰的时代,真正实现“遥遥领先,穿越周期获得自由”。
✦ 精选内容 ✦
我们比谁都更需要Palantir的技术实践,但不是因为马杜罗



夜雨聆风