
如果你最近经常用 AI 写代码,大概率都经历过这样一个瞬间:
你对着聊天框说一句,"帮我做个登录功能,支持 OAuth,再补一层权限校验。"
几秒之后,屏幕上多了两百行代码。你没细看,先跑。能跑通,就继续往前推。跑不通,就把报错再丢回去:"修一下。"
整个过程非常丝滑。丝滑到你会产生一种错觉:自己好像已经不写代码了。
这就是 vibe coding 最迷人的地方。它给人的不只是效率感,而是一种更高级的幻觉:你终于可以跳过那些脏活累活,直接站在"想法层"工作了。
但最危险的地方,也恰恰在这里。
代码没有消失,它只是从编辑器搬到了聊天框。
想想你给 AI 下指令的时候,嘴里说的都是什么。
"后端用 Node。"
"数据库上 PostgreSQL。"
"先做登录,再做权限,再补审计日志。"
"报错统一返回 JSON,状态码别乱来。"
"先别重构,先把功能跑通。"
这些话听起来不像代码,但每一句都在决定代码会长成什么样。
你在做技术选型,定义边界,安排顺序,控制取舍。你不是没在编程,你是在用自然语言把一段程序慢慢压出来。只是以前这些决定写在 .ts、.py 和配置文件里,现在它们先写进了 prompt 里。
说白了,vibe coding 最大的误导,不是让人偷懒,而是让人误以为自己已经退出了编程。
其实你没有退出。你只是从"逐行实现"切换到了"高层调度"。
这有点像 GUI 取代命令行的那一刻。很多人以为自己不用再"下命令"了,但本质上,你只是把命令藏进了按钮、菜单和表单里。现在 AI 又往前走了一步:按钮也可以省掉,软件直接听人话了。
所以真正发生的变化不是"代码没了",而是代码从一种写法,变成了另一种写法。

用对话编程本身没什么可怕的。
真正常见、也更危险的,是另一件事:你一边在做决策,一边假装自己没做决策。
这时候问题就来了。
如果你承认自己还在编程,那你自然会知道,有些地方该检查,有些地方该怀疑,有些地方必须回头看。因为你知道那不是 AI 的个人发挥,那里面有你的意图、有你的取舍,也有你的责任。
但如果你真的相信"我只是随口说两句,代码都是 AI 写的",那你很容易把所有后果都外包掉。
架构乱了,是 AI 的锅。
边界脏了,是 AI 的锅。
重复实现、命名混乱、逻辑打架,也都是 AI 的锅。
可问题是,那些锅本来就不可能全是 AI 的。因为方向是你定的,约束是你给的,优先级是你排的。AI 只是把这些东西展开得更快。
很多人嘴上说自己在 vibe coding,本质上其实是在做另一件事:把编程责任,外包给一种更体面的说法。
前几天 Claude Code 的代码被社区翻出来,大家发现里面有大量 agent 和 tool 的重复实现,功能描述几乎一字不差,冗余得非常明显。
这件事之所以刺眼,不是因为"连 Anthropic 都会写烂代码"。真正刺眼的是:这类问题其实一点都不难发现。
那些代码不是某种深奥的编译器优化,不是埋在底层的内存踩踏,也不是需要十年经验才能闻出来的架构坏味道。它们很多就是摆在台面上的重复、分裂和没人收口。
换句话说,这不是"看不出来",更像是"不去看"。
而这恰好暴露了 vibe coding 最容易滑向的地方:它原本只是个效率技巧,最后却会慢慢长成一种身份认同。
"我是高层思考的人,我不看代码。"
"我是写意图的人,具体实现不重要。"
"我是让 AI 干活的人,不是下去翻细节的人。"
一旦走到这一步,"不看代码"就不再是工作流选择,而开始带上一点宗教味。
不是不能看,是不屑看。
不是没必要看,是看了就像背叛了某种更先进的方法。
这才是标题里那个"教"真正吓人的地方。
因为信仰会让人感觉自己站在历史正确的一边。
过去几年,软件行业特别容易把工具升级成身份。
会写命令行的人,看不起点按钮的人。
会低代码的人,看不起手写页面的人。
会 AI 编程的人,又开始看不起还在逐行审代码的人。
每一轮技术迁移都会制造类似的优越感:旧世界的人还在做苦活,新世界的人已经开始"只表达意图"了。
但问题是,工具升级不等于责任消失。
飞机比马车先进,不代表飞行员不用看仪表盘。
自动驾驶比手动挡先进,不代表司机可以闭眼开车。
AI 比传统代码补全先进,也不代表你可以把判断力一起外包出去。
一个工具越强,真正稀缺的往往越不是执行力,而是判断力。以前你得亲手一行行写,现在你更需要知道:哪一段可以不看,哪一段必须回头看;哪一个决定可以放权,哪一个决定绝不能外包。
所以问题从来不是"要不要看每一行代码"。真正的问题是:你还有没有在主动决定什么地方值得看。
很多人讨论 vibe coding,焦点都放在"审不审代码"。但我觉得 AI 真正改写的,是技术债的账本。
以前一个项目烂了,大家都知道它烂,但往往也只能认。因为清理太贵了。重构意味着投入人月,意味着功能延后,意味着老板会问一句:这玩意为什么不能以后再说?
所以很多团队欠技术债,不是不想还,是还不起。
但现在不一样了。
以前要一个月才能扫完的重复逻辑、死代码、命名混乱、样板函数,现在 AI 一周就能陪你清一轮。你甚至不需要停下主线开发,完全可以边写新功能边把旧债一点点削掉。
这意味着一个很不客气的结论:
AI 时代的烂代码,越来越不像意外,越来越像选择。
如果今天一个团队还在持续堆重复实现、放任边界失控、让模块关系越长越像意大利面,那很多时候不是因为它做不到,而是因为它没有把"该收的地方收一下"当回事。
代码质量跟用不用 AI 的关系,可能没有大家想的那么大。它跟另一件事关系更大:你到底在不在乎。
真正高效的人,往往不是那种把"我从不看代码"挂在嘴边的人。
他们更像是另一种姿势:
先把问题聊清楚。
先让 AI 列方案、找重复、讲边界。
先拿几个例子试探它到底懂没懂。
等方向收束了,再让它大规模动手。
最后只盯那些真正关键的地方看一眼。
这才像一个成熟的协作关系。不是"我把活扔给你然后祈祷",而是"我负责判断,你负责加速"。
AI 最像的,从来不是一个可以完全托管的软件工厂,更像一个行动非常快、但判断非常不稳定的初级工程师。你不给边界,它会乱冲;你不给判断,它会讨好;你不回头看关键点,它就会把错误放大得很高效。
所以最有用的能力,已经不是"能不能亲手写出所有代码",而是能不能在更高一层,把问题说清楚、把关键点盯住、把该收口的地方及时收口。

vibe coding 不是问题。
真正的问题是,当越来越多人开始把"不看代码"当成一种更先进的身份。
因为一旦你真信了这件事,你就会开始忘记:自己并没有退出编程,你只是换了一个地方编程。
代码没有消失。
它只是从编辑器,搬到了聊天框。
而 AI 时代最危险的幻觉,不是机器会写错代码。
是人开始相信,自己已经不用为代码负责了。
···
你平时用 AI 写代码,会回头看生成的结果吗?你看的,是每一行,还是只看那些真正不能错的地方?