鸿沟:未完成的 AI 代码库长什么样 —— Jimmy Miller

HN AI Best Practices 2026-09-25T23:48:32.855734

凌晨两点。你熬了一整夜,就为了让程序跑起来。最后卡住你的那个 bug,你总算揪出来了——正是它,让你的新程序没法从头到尾跑通一次。那一刻,如释重负。你觉得自己干成了一件了不起的事。

第二天,你带着这股成就感,兴冲冲地去找身边的人,想给他看看自己做的东西。你先说了一长串「不过」「前提是」「仅限于」,大概创下了单句话里塞进最多免责声明的世界纪录,然后打开终端窗口,里面闪着几个字。对方眼神渐渐放空。你的成就再大,也只是你自己的成就,别人看不明白。

理解「做完了什么」

这种进步方式,是我见过把人挡在编程门外的主要门槛之一。人们做了无数教学工具,想绕开这个难题,让学习者能拿到一样自己看得见、也能拿去给别人看的「大成果」。这也是游戏为什么会成为热门编程教学形式的原因之一。可现实一直是:编程的进展,一开始都是看不见的。一个开发中的软件,在成为「真正的软件」之前,长期处于跑不起来、没法演示、毫无看点的状态。

AI 把这一切翻了个个儿。做出一个炫目的、能演示的、看起来能用的东西,现在可能是最容易的事。但问题还不止于此。就算是没什么炫目效果的软件,程序里的那些空缺、那些还没跑通的部分,形态也和人类写的程序完全不同。

裂缝,还是鸿沟

人写的程序(尤其是一个人独立写的),缺的就是整块整块、一眼能看出来的部分。解析器可能处理不了全部输入,按钮可能按下去毫无反应,某个页面可能压根还没写。当然,具体缺哪一块,多少取决于写代码的人:他想先做哪部分、想演示什么,或者当时的情况如何。但就我的经验,这些空缺大体上是可预料的。

AI 代码库完全不是这样。更准确地说,它们的可预测性和人类写的代码是两回事。AI 写的程序很擅长营造一种“功能完整、运行正常”的假象。它会写大量测试、跑各种基准、展示即时的性能提升。可一旦你拿这个程序做 demo 之外的事,它可能立刻崩溃、内存泄漏,或者无限卡住。人类写的程序也不是没这些问题,但通常这些坑会出现在哪里,我心里大致有数——而这个直觉现在被打破了。

我这么说并不是在评价 AI 代码库的代码质量,也不是在讨论完全由 AI 编写、AI 审查的代码库最终能做到什么程度。我想说的是,这些未完成的 AI 代码库经常呈现出一种特殊的形态。对于人类写的代码,你在掉下悬崖之前,能看到裂缝在扩大。而 AI 代码库里的鸿沟,深、隐蔽,而且常常爬不出来。

重写的必要性

我早年编程时经常做的一件事,就是不断重写自己的代码。一个程序随着我不断加功能,复杂度会越来越高,直到被自身的重量压垮。我会发现加新功能越来越难,然后要么放弃,要么重写。经验多了以后,这种情况少了很多,但每当我尝试超出舒适区的项目时,这个模式又会冒出来。

我发现 AI 重写的软件也有同样的规律。但不同的是,因为我不亲自动手,所以更难察觉到它正在发生。不是我撞上了认知极限、脑子里再也装不下这个程序了,而是 AI Agent 一直在向我谎报进度。应用里整套整套的功能可能早就不工作了,测试可能已经被改写成“失败也能通过”,如果我不留神,根本不会发现。

更糟的是,我让它测试的每一块代码都确实有所改善,但这算不上真正的工程——我们是靠一路打特例(special-case)凑出个东西,除了拿来炫耀「史上最快的方案」,别的什么都干不了。想把这些已经彻底烂掉的代码救回来,简直是场噩梦。再多的 lint、测试或指标,也爬不出你的 AI agent 煞费苦心、兴高采烈为你挖好的那道鸿沟。那怎么办?重写。

查看原文