囚徒程序员:AI 时代的“嘉庆之困”、代码 Review 与无效勤政

在历史人文节目《罗辑思维》第 74 期《囚徒嘉庆》中,罗振宇剖析了清仁宗嘉庆皇帝爱新觉罗·颙琰极具悲剧色彩的一生:

嘉庆即位之初,杀伐果断诛除巨贪和珅,整顿朝纲、崇尚节俭。他一生不近声色犬马,对大清江山怀着极强的责任心。他为自己规定了苛刻的日程表:每天天不亮就起床上朝,不论严寒酷暑,数十年如一日批阅堆积如山的奏折,大事小情无不亲自过问,甚至连奏折里的错别字、虚词格式都要亲笔用朱批挑出来。

论道德品质,他无懈可击;论工作态度,他付出了 120% 的心血与勤奋。

然而,后世史学家对嘉庆的总体评价却近乎残酷地一致:极其平庸。

正是在嘉庆日复一日、精疲力竭的“深度自我感动”中,大清帝国无可挽回地滑向了“嘉道中衰”的深渊。

而在今天,大语言模型与 AI 辅助编程工具(Copilot、Cursor、Claude)铺天盖地席卷软件工程界的当下,无数一线工程师惊愕地发现:我们正在成为 AI 时代的“嘉庆皇帝”。

角色异化:从“数字建筑师”到“御笔朱批员”

在生成式 AI 普及之前,程序员的角色更接近于一名手工艺人或数字建筑师:

  • 面对一个业务需求,你需要亲自设计数据模型、推演状态机的边界转移,逐行敲下业务代码。
  • 在编码的过程中,你的大脑处于高度集中的创造者心流(Flow State)中。
  • 哪怕中途卡住,那也是在和现实世界的物理逻辑进行硬碰硬的推演。

但在今天的开发日常中,敲下几个按键或一段 Prompt,AI 就会以秒速喷涌出成百上千行逻辑连贯、注释详尽的代码。

程序员的主要生产活动,从“创造代码”被粗暴异化成了“审核代码(Code Review)”。

这与当年的嘉庆皇帝何其相似:

  • 嘉庆每天面对的,是全国数千名官员按照八股格式批量炮制出来的请安折与例行公文。这些折子表面上辞藻华丽、歌功颂德,实则水分极大、避重就轻。
  • 现代工程师每天面对的,是 AI 按照预训练概率生成的 PR。这些代码表面上遵循 PEP8 或 ESLint 规范,类型标注齐全,但内部到底有没有死锁风险、并发竞态或隐蔽的业务逻辑跳步,天知地知,模型不知。

工程师整天坐在屏幕前,化身为人肉 Linter 和逻辑侦探:

  • 这里少了个边界检查,批注一下;
  • 那里变量命名不符合团队规范,微操修改;
  • 这个第三方库引用是否存在许可风险,查阅验证。

你以为你在深度把控系统质量,实际上你只是在一个庞大代码喷涌流水线的末端,机械地扮演着“御笔朱批”的质检工。

虚假繁荣与勤奋陷阱:GitHub 绿格子下的精神空耗

嘉庆皇帝最让人唏嘘的一点,在于他的“勤政”往往伴随着强烈的心理代偿机制:

“朕每天批阅奏折到深夜,为大清江山操碎了心,朕对得起列祖列宗。”

今天的程序员也陷入了完全相同的**“无效勤奋陷阱”**:

  • 一天下来,你在 GitHub 上 Review 并合并了 20 个 PR,关闭了 15 个 Issue;
  • 个人主页上的 Contributions 绿格子连成一片,绿得发亮;
  • 站会汇报时,你的吞吐指标(Throughput)和活动日志极其亮眼,整整一天连喝水的时间都没有。

然而,当晚上拖着疲惫不堪的身体合上电脑,闭上眼睛复盘一天的工作时,内心深处却升腾起巨大的虚无感:

“今天忙碌了一整天,但我好像没有为系统写下一行真正属于我自己的核心架构代码。”

这种疲惫是一种高阶的“精神空耗”。阅读并挑剔别人(尤其是概率模型)写出来的逻辑,其认知负荷远高于自己从零构建。你一整天都在被动应对 AI 抛给你的既成事实,大脑的大局观思考与底层推演能力,在无数琐碎的 Diff 对比中被迅速磨钝、降维。

不对称博弈:做对了是红利,做错了是全责

在职场博弈论的维度上,AI 时代的 Code Review 是一场典型的不对称责任陷阱。

当你坐在工位上,面对满屏由 AI 生成的代码时,你面对的是最残酷的权力与责任错配:

1. 功劳被模糊

当团队凭借 AI 工具在两周内交付了一个月的工作量,系统平稳上线时,管理层在管理总结上写下的,必然是“拥抱前沿 AI 工具带来的生产力质的飞跃”。

没有人会认为这是那位在屏幕前揉着干涩眼睛、逐字排查死锁的资深工程师的功劳。在聚光灯下,工程师沦为了“提示词输入机”与“AI 工具的附庸”。

2. 责任被锁定

一旦 AI 在代码里产生了一处极难复现的隐蔽幻觉(例如分布式事务中漏掉的一个状态回滚,或高并发下的内存逃逸漏洞),导致线上重大事故、数据泄露甚至资损崩盘——

复盘会议的聚光灯瞬间打在你的脸上:

  • “AI 只是个补全工具,公司雇佣你这个资深工程师,是为了让你把关质量的,你怎么看漏了?”
  • “PR 上的那个绿色的 Approve 是你亲手点的,代码作者写着你的账号,你不背锅谁背锅?”

你承担着无限连带责任,却只享受着边际递减的成就感。这种权责不对等,逼得无数工程师在审阅代码时如同在布满地雷的麦田里除草,战战兢兢,如履薄冰。

纸糊的盛世:当农民拿着砍刀冲进紫禁城

嘉庆十八年(1813 年),发生了一件轰动朝野、荒诞绝伦的奇案——天理教起义。

两百多名农民起义军手持自制砍刀,在太监的内应下,大摇大摆地冲进了戒备森严的北京紫禁城。起义军一路杀到了乾清宫门前,甚至爬上城墙试图攻占养心殿,最后还是由皇次子旻宁(后来的道光帝)亲自拿出火枪才将起义勉强弹压下去。

堂堂大清帝国的权力心脏,居然被几百名乌合之众轻易突破。

可悲的是,在这场暴乱发生之前的数年里,嘉庆皇帝每天批阅的各地奏折上,无一不是“民情淳朴”、“仓廪充实”、“海晏河清”。各地官僚为了规避问责,利用标准化的八股公文,合谋为嘉庆编织了一个信息茧房,粉饰出一个纸糊的盛世。

在今天的软件系统中,这种“纸糊的盛世”也在悄然蔓延:

  • 虚假的测试覆盖率:工程师为了赶进度,让 AI 生成业务代码的同时,顺手让 AI 生成了对应的单元测试。测试全部亮绿灯,覆盖率高达 95%。但这些单测往往只是在“对着实现重抄一遍”,没有一个测试真正触碰到了混沌工程里的极端断网与边界并发。
  • 一致性幻觉:代码被 Prettier 和 ESLint 格式化得极其工整,变量命名无比优雅,架构图画得像艺术品。但当核心开发者都不再深入思考每一个底层的系统调用与缓存失效策略时,整个系统就变成了一座没有地基的巴别塔。
  • 灾难降临:平时看似稳固无匹的庞大微服务群,一旦遇到黑天鹅级别的流量峰值或网络分区,就如同那两百个闯进紫禁城的砍刀农民一样,顷刻间把整个技术栈打得体无完肤。

破局:如何走出 AI 时代的“嘉庆之囚”?

作为新时代的软件工程师,我们显然不可能倒退回刀耕火种的纯手写时代。面对 AI 带来的代码洪流,如何才能不沦为被活活累死、最终只收获平庸与责任的“数字嘉庆”?

1. 放弃字句微操,升级为“契约与不变量治理”

嘉庆的死穴在于试图以肉身去校对帝国的每一个字句。走出困境的第一步,是停止在语法细节上充当人肉编译器。

  • 将格式检查、空指针防范、常规静态分析,100% 移交给编译器的类型系统(如 Rust、TypeScript Strict Mode)和自动化代码扫描工具。
  • 人的精力必须退守到更高的抽象维度:系统不变量(Invariants)与核心契约。
  • 审阅一段由 AI 生成的代码时,不要问“这行代码写得优不优美”,而要问:
    • “如果底层数据库发生网络脑裂,这段代码会破坏资金账目的原子性吗?”
    • “这个状态流转有没有定义单向有限状态机(FSM)?是否存在非法跳步?”

2. 建立机器对冲机器的防线(Property-based Testing)

不要试图用肉眼去识别 AI 的幻觉代码。

  • 利用基于属性的测试(Property-Based Testing,如 Hypothesis 或 QuickCheck)和模糊测试(Fuzzing),让机器生成数万组随机边界输入去对抗 AI 生成的代码。
  • 编写确定性的形式化规范或集成防御测试,让机器去证伪机器。

3. 从“代码拥有者”跃迁为“架构编排者”

历史学家对明代内阁首辅(如张居正)或汉代丞相(如陈平)的赞赏,远高于事必躬亲的崇祯与嘉庆。

汉初名相陈平曾有一段著名的治国名言:

“宰相者,上佐天子理阴阳,顺四时,下育万物之宜,外镇抚四夷诸侯,内亲附百姓,使卿大夫各得任其职焉……又何知钱粮之数乎?”

陈平深知,宰相不需要去数仓库里有多少斛粮食。数粮食是治粟都尉的事,宰相的职责在于权衡大局与调度机制。

在 AI 时代,代码只是廉价的建筑耗材,业务价值的拆解、跨系统的容灾拓扑、可观测性防线的设计以及不可逆技术选型的权衡,才是工程师不可被 AI 稀释的核心护城河。

拒绝在琐碎的 Approve 按钮中消耗生命,走出“无效勤政”的幻觉,你才能跳出嘉庆帝的宿命,真正成为主导系统演进的数字创造者。