AI劝我放弃,但我没听:Linus 18次重启手撕内核Bug,揭开人机协作的真实分工
AI劝我放弃,但我没听:Linus 18次重启手撕内核Bug,揭开人机协作的真实分工
作为 Linux 之父与开源界的终极守门人,Linus Torvalds 已经很多年不亲自下场写具体的显卡驱动补丁了。
但上周,他在修复 Intel Xe 显卡驱动一个极其恶心的显存越界 Bug 时,经历了一场堪称“地狱级”的调试排查:先后打了 24 个调试补丁、经历了 18 次内核硬重启,最终找出的根本原因,却仅仅只是一行代码——把一个错误的向上取整 `round_up()` 改成了向下取整 `round_down()`。
如果只是修了个 Bug 倒也寻常,真正让整个 Linux 社区与开源世界吵翻天的是:Linus 在 Git Commit 说明中公开承认,这场排查中大量繁琐工作都是 AI 协助完成的,连 Commit Log 都是让 AI 写的。
甚至,Linus 还在提交日志里爆出了一个极具黑色幽默的细节:“在排查陷入死局时,AI 好几次直接劝我放弃,说‘这不可能,无解了,咱们直接写个故障报告吧’;但我猜,训练这玩意儿的人,大概没我这么倔。”
从“AI 自动编程”的幻想,到“人类主导方向、AI 干脏活”的现实
过去两年,各种宣传都在狂吹“AI 已经能全自动接管软件工程”、“程序员马上失业”。但 Linus 这次教科书级的真实 Debug 现场,狠狠撕碎了这种虚假泡沫:
1. AI 擅长穷举脏活,但极度缺乏“工程直觉与韧性”: 在 18 次重启和 24 个探测补丁的漫长拉锯中,AI 承担了大量琐碎的日志分析、插入探针、打桩验证等重体力活;但每当遇到硬件未定义行为与不符合预期的输出时,AI 的统计学本能是“断言无解并提议放弃”。只有当 Linus 凭着数十年的系统级直觉强行 Push 它继续缩小范围时,排查链条才没有断裂。 2. 一行代码背后的深水区逻辑: 这个 Bug 的表面现象是 GDM 显示管理器无限崩溃重启,底层却是因为驱动把本该保留的 CCS(计算命令流)内存多算进了可用显存范围,破坏了 GPU 页表。这种跨越硬件时序、内存映射与内核虚拟文件系统的深层缺陷,目前的 AI 根本无法“一键自主定位”。 3. 人类的决策权是最后一道安全阀: AI 可以为你生成 20 个假设、写 20 段探针代码,但决定哪条假设是死胡同、哪条线索值得继续深挖、何时停止尝试并拍板最终方案的,永远是人类工程师自己。
社区争议与道德撕裂:开源界到底在吵什么?
Linus 在 Commit 里肯定 AI 的这一举动,迅速在社区里引发了激烈的两极分化:
– 原教旨主义者与反 AI 派:质问“厨师从不夸菜刀,凭什么修个 Bug 就要夸 AI?”甚至翻出 Linux 的 AI 贡献政策,指责 Linus 带头在 Commit 里为 AI 站台; – 实用主义开发者:认为在如此底层、枯燥且耗时的硬件调试中,能够利用大模型加速 24 个补丁的迭代验证,本身就是现代工程效率的巨大胜利。
这种争议的本质,其实是技术代际交替时的认知阵痛。很多开源维护者之所以排斥 AI,是因为社区里充斥着大量未经思考、用 AI 批量生成的低劣 PR;而 Linus 恰恰演示了一种高段位的人机协作典范——人类把控核心方向与代码责任,把 AI 当成不知疲倦的打桩机。
Kate 的观点与判断
看完这场风波,我给所有技术从业者三点直接的判断:
1. “AI 替代程序员”是个伪命题,但“会用 AI 当苦力的程序员”正在拉开代际差距。Linus 没有被 AI 牵着鼻子走,而是把 AI 逼成了高效的调试副驾。能在 18 次内核崩溃中压榨出 AI 剩余价值的人,才是真正的技术硬汉。 2. 警惕 AI 在复杂工程中的“退缩倾向(Premature Surrender)”。现在的推理模型虽然学会了长思考,但当遇到缺乏训练集先验的边缘底层硬件 Bug 时,模型极易陷入“过度泛化失败”并提议妥协。永远不要把最终的工程判断权让渡给算法。 3. 开源治理需要拥抱“透明的 AI 协作”。在 Commit 明确写出 AI 的参与,不是宣传作秀,而是一种成熟的工程诚实。与其偷偷摸摸用 AI 糊弄代码,不如坦坦荡荡把 AI 的能力边界与人类的校验责任公开在阳光下。
工具就是工具。决定一个系统是走向卓越还是崩溃的,从来不是你手里的锤子,而是握锤子的那只手有多倔强。