AI写的代码本地能跑,上线就崩?

AI写的代码本地能跑,上线就崩?

六月 24, 2026 vibe coding ai development type systems lean 4 resource management production debugging developer productivity code quality compiler verification

Vibe Coding 很爽,但你可能埋了个雷


说实话,vibe coding 真的很上头。你把需求往 AI 一说,看着它噼里啪啦写代码,测试全绿,直接上线。那感觉就像拥有了魔法。

但这魔法有个保质期,通常在凌晨三点到期。

你的应用本地跑得好好的,接了几个请求也没问题。然后突然——被 OOM 进程优雅地送走了。或者打开了上万个文件描述符直接崩溃。或者跑你那个 50KB 的测试数据溜到飞起,一上真实用户就原地爆炸。

代码没毛病。需求怎么写的,它就怎么实现的。只是它默认了:内存无限、文件句柄无限。因为 prompt 里从来没说过不是这样。

那些你没告诉 AI 的「常识」

这是 vibe coding 最坑的地方,会议上没人会讲这个。

你自己写代码的时候,脑子里时时刻刻都装着各种限制。你知道自己在 16GB 内存的笔记本上跑。你知道生产服务器有文件描述符上限。你知道那个 400GB 的 CSV 不能直接全塞进内存。

但 AI 写代码的时候,这些限制统统不存在。AI 看到「读取文件、排序、写出结果」,心想:没问题,整个读进来呗。测试完美通过,因为测试文件才 50KB。

Code review 也救不了你。那几行代码看起来完全合理,扫逻辑错误什么都发现不了——因为确实没有逻辑错误。问题不在代码里,在代码外面那个「想当然」的框框。

要是编译器能懂资源限制就好了

有个叫 Nicolas Grislain 的开发者搞了个挺有意思的实验:把资源约束变成类型,而不是注释

现在的做法是你在 prompt 里加一句「注意内存使用」或者「记得关闭文件句柄」,然后祈祷 AI 认真对待。

他的思路是:让编译器直接拒绝编译违反资源限制的代码。「这个函数内存里最多同时放 100 条记录」「这个程序同时打开的文件不超过 3 个」——这些不是 code review 时的许愿,而是编译器必须验证的事实。

用的工具是 Lean 4——对,就是那个在数学圈火得一塌糊涂的 Lean。通过它把资源预算直接编码进函数类型里。编译器摇身一变,成了资源审计员,在你跑代码之前就把关。

核心思路:让类型替你看门

做法意外地优雅:把资源计数穿进类型系统

不再是运行时某个可能被忽略的变量来记录「当前打开了几个文件」,而是类型系统里的一个幽灵参数,必须收支平衡。

打开文件,类型签名就变了:进来时有 N 个文件打开,出去时变成 N+1。关闭文件,从 N+1 回到 N。编译器步步跟踪,你根本没法写出打开文件不关闭的代码,也没法超过设定的上限。

内存管理差不多,但有点小技巧。记录不是飘在内存里的云数据,而是存在一个有固定槽位的池子里。你持有的不是 Event 对象本身,而是指向那个池子的引用。类型系统追踪当前有多少活跃引用,分配新记录需要证明还有空位。

关键在入口:程序必须从零资源开始,结束时也回到零。句柄不能泄漏,引用不能泄漏,上限不能突破。编译器直接拦住你,不让过。

对 vibe coding 的意义

这套玩法改变了我们跟 AI 协作的方式。

现在你可能这么写 prompt:「内存使用要注意」「关闭所有文件句柄」——然后祈祷 AI 上心。

有了资源感知类型,你可以正式地声明约束,实现方式必须自行调整来满足。比如先给 AI 一个无限制版本,测试通过。然后打开限制开关,编译器直接拒掉。AI 被迫重构:可能改成 chunk by chunk 处理文件,而不是全量加载;用连接池而不是直接打开文件。

代码不只是「碰巧能用」,而是「在资源预算内可证明可用」。

现实点说

得承认:对大多数团队来说,这还不是能上生产的工具。Lean 4 这套东西上手成本不低,要用 indexed types 思考也有门槛。

但背后的思路很有价值。

vibe coding 不只是把写代码的事外包出去了,连对系统的「心理模型」也一起外包了。你的 AI 助手不知道你的生产环境,不知道容器只有 512MB 内存,不知道 Linux 内核把文件描述符上限设成了 1024。

在工具成熟之前,几个务实的选项:

  1. Prompt 里把数字说清楚——「输入文件最多 1000 万行」比「处理大文件要高效」有用一万倍

  2. 用接近生产规模的数据测试——训练数据太小,AI 学不到资源相关的模式

  3. 选天然带限制的架构——连接池、流式处理而不是全量加载,这种设计本身就难以被误用

  4. 关注资源感知相关的工具进展——行业开始探索让约束在 AI 生成代码中显式化

最后说两句

vibe coding 的隐藏问题不是代码有 bug,而是代码在那个看不见的「假设空间」里是对的。那个空间刚好包含你的笔记本、你的测试环境,可能还有前一千个用户。绝对不包含「生产环境高并发」。

Lean 4 这种资源感知类型系统指向一个方向:未来的「正确」不只是「逻辑没问题」,而是「在真实存在的边界内可证明安全」。

这个未来值得期待。现在嘛,测试数据尽量贴近生产规模,prompt 里记得提一嘴文件描述符限制。

你未来的 on-call 自我会感谢现在的你。

Read in other languages:

RU BG EL CS UZ TR SV FI RO PT PL NB NL HU IT FR ES DE DA EN