AI 写的代码跑通了,我却不敢动?揭开”赛博屎山”的遮羞布

“代码跑起来了,但灵魂没了。”

我翻开 AI 编程工具 刚提交的代码一查,这代码没有年代,歪歪斜斜的每行上都写着”能跑就行”几个字。

我横竖睡不着,仔细看了半夜,才从字缝里看出字来,满本都写着两个字——随缘。

大抵每个狂喜于”AI 一分钟生成 300 行代码”的开发者,迟早都要还这笔 技术债。


一、AI 生成的代码,为何成了”赛博屎山”?

上周,实习生满面春风地给我看 PR:”勋哥,看!我用 Cursor 半小时重构了鉴权模块,覆盖率 90%!”

我颇有些欣慰,点开 AuthManager.java。

只一眼,我便沉默了。

一个函数八百行。嵌套六层 if-else,变量名从 user1 排到 user99。最妙的是,所有的异常处理都是 try { ... } catch (Exception e) { // ignore }。

“这代码……是你写的?”我声音有点抖。

“是啊!AI 写的,它说这是最佳实践。”

大抵在 AI 眼里,最佳实践就是”只要不报错,就是好代码”。这代码确实能跑,但跑得像个醉汉,全靠运气没摔倒。

我告诉他:”这代码,我不敢动。”

动一行,崩全站。这不是代码,这是赛博地雷。


二、为什么我们会有”修改恐惧症”?

怕的不是代码烂,是不可控。

以前写屎山,哪怕是一堆屎山,那也是我们自己拉出来的。哪里埋了坑,心里有数。

现在呢?AI 写的代码,像个没有灵魂的”外包工”交差的活。你不知道它为什么要这么写,更不知道改了这里,会不会牵连到十万八千里外的另一个模块。

这种恐惧,源于”认知断层”。

当你没有参与构建过程,就失去了掌控感。维护 AI 代码的成本往往比重写还高,因为得先花两小时读懂它为什么这么”神经”。这哪里是提效?这分明是在给自己挖坑。


三、AI 的”讨好型人格”,工程师的噩梦

为什么 AI 会写出这种”绣花枕头”?它确实有个毛病——讨好型人格。

你问它写个接口,它不会问你并发量多少、需不需要防刷。它只会屁颠屁颠地吐出一堆看似能用的代码,只想尽快结束对话,让你说一句”真棒”。

它没有敬畏心。它只管”生成”,不管”死活”。

而工程化的核心,恰恰是”敬畏”。

是对边界条件的防御,是对异常情况的兜底。这些,AI 目前还学不会。它只能模仿代码的”形”,模仿不了代码的”神”。


四、怎么解?别把 AI 当爹,当实习生

既然 AI 写的代码是”赛博屎山”,就不用了吗?那倒也不是,大抵是使用方法不对。

我总结了一个原则:

把 AI 当”付费实习生”,不要当”高级工程师”。

实习生能帮你写样板代码、写文档——这些没问题。但你想让它做架构决策、写安全代码?这些它干不了。

这好比你雇了个刚毕业的实习生,你让他整理文档可以,但让他直接跟客户签合同——大抵是要出事的罢。


五、说句难听的

别把 AI 当神仙,它只是个手速极快、毫无常识的”快手”。

以前程序员怕”写不出代码”,现在怕的是”不知道它写了什么”。

这规矩,无非两样:一是测试,二是审查(Code Review)。

七天前,我对着那堆跑通却没测试的代码发愁。七天后,我彻底明白了——没有测试覆盖的 AI 代码,跑得越快,死得越惨。测试用例,是机器之间的契约。

但机器终究不懂敬畏。它不知道什么叫”优雅”。这时候,就得靠人肉——Code Review。

你不去审查,它就会顺着网线,把那种”只要能跑就行”的垃圾逻辑塞进核心业务里。AI 是推着你跑的风,测试是拉住你的绳,而 Code Review,是你手里的方向盘。

别指望 AI 能替你思考工程底线。它能替你干活,但替不了你兜底。

万一,你学会了用测试和审查去驾驭它呢?

大抵如此罢。


关于码孖AI

码孖AI,专注 AI 工程化落地。

说白了就是帮程序员少干点活——但别指望 AI 替你思考,它只会替你打字。

关注我,持续更新实战踩坑指南。

:::callout tip 觉得有用? 点个「在看」,分享给同样在 AI 落地路上挣扎的朋友。 :::