vibe coding 为什么让人上瘾:它把写代码变回了打游戏
有个现象,很多人有体感但说不清:用 AI 写代码,一上手就停不下来。本来想花 20 分钟改个 bug,抬头一看两个小时过去了,中间没喝水、没看手机、没觉得累。
这不是你意志力强,也不是 AI 多神。这是心流——而且是被刻意(虽然不是故意)设计出来的心流。
想明白这件事,得先把「心流」这个被讲烂的词拆开。
心流的本质:把正事当游戏玩
Csikszentmihalyi 把心流定义成「全神贯注到忘记时间」的状态,列了一堆条件:清晰的目标、即时的反馈、难度和能力匹配。学术,但不解渴。
换个更糙也更准的说法:心流就是你把手头这件事,当成游戏在玩。
你打游戏会进心流,写 Excel 不会,区别不在「写代码 vs 玩游戏」这两件事本身有多高尚,而在于游戏被设计成了一台心流制造机,而大部分正经工作没有。游戏靠三个东西把你按在椅子上:
- 探索——下一个房间有什么我不知道,但我想知道。
- 随机性——同样的操作,结果不完全一样,偶尔有惊喜。
- 成就感——每隔几分钟就有一个看得见的「我搞定了」。
传统写代码,这三样都很稀薄。需求是确定的(探索弱),编译器是确定的(随机性几乎为零),而一个像样的「搞定了」可能要憋两天(成就感延迟)。所以写代码可以很有成就感,但很难像游戏那样一直有。它的反馈循环太长了。
vibe coding 干的事,就是把这三样一次性塞了回来。
vibe coding 怎么一次集齐三件套
探索回来了。 你不再是「我知道要写什么,只是手速跟不上」,而是「我抛一个想法,看模型会给我什么」。每一次 prompt 都是推开一扇门——它可能给你一个你没想到的实现、一个你不知道的库、一种你没用过的写法。写代码第一次有了「下一个房间有什么」的悬念。
随机性回来了,而且是真随机。 同一个 prompt,跑两次给的代码不一样。模型有温度,有采样,本质上是个概率机器。这件事在工程上是缺点(不可复现),但在心流上是特性——它把编程从「确定的因果」变成了「带运气的下注」。你永远不完全知道这一把会抽到什么。这正是老虎机让人上头的同款机制:可变奖励(variable reward)。
成就感的循环被压短了。 以前两天一次的「搞定了」,现在变成几分钟一次:提一个需求,几十秒后一个能跑的东西出现在眼前,绿了,过了,下一个。反馈循环从「天」级别压到了「分钟」级别。心流最硬的前提——即时反馈——被生生造出来了。
三样集齐,结果就是:写代码第一次拥有了游戏的成瘾结构。你不是在「工作」,你是在「玩一个关于做软件的 roguelike」——每一局开局随机,每一步都有探索,每隔几分钟通一小关。
停不下来,太正常了。
同一套机制的另一面:你也可能在摇老虎机
但你得清醒:让你进心流的机制,和让你上瘾、空转的机制,是同一套。 这不是巧合,是同一枚硬币。
可变奖励能制造心流,也能制造赌徒。当代码不对时,那个「再抛一次 prompt 试试」的冲动,和赌徒「再摇一把就回本」是同一个神经回路。你能一晚上跟模型来回拉扯三十轮,体感很「忙」、很「沉浸」,但产出可能还不如你停下来自己想十分钟、手写二十行。
短反馈循环能制造成就感,也能制造虚假的进度感。每一个「绿了、过了」都给你发一颗多巴胺,但很多时候你绿的是一个你根本没在测的东西。成就感是真的,进度是假的。这就是为什么很多人 vibe 完一天,体感「高产」,回头看 PR 全是返工。
探索能制造好奇,也能制造没有终点的漂移。门一直在开,但你早就忘了自己最初要进哪个房间。两小时后你重构了一个本来没问题的模块,引了三个新依赖,原来那个 bug 还在。
心流的危险就在这里:它感觉和「高效」一模一样。你没法靠体感区分「我在心流里高产」和「我在心流里空转」——两者大脑里发生的事几乎一样。
老炮怎么用这套机制,而不是被它用
新人会被这套机制带着走,享受沉浸然后交一堆返工。老炮的区别,是知道这是一台心流机器,于是反过来给它装刹车。几条实操:
先定终点,再开门。 进入 vibe 之前,用一句话写下「这一局的胜利条件」是什么(哪个 bug 修好、哪个测试变绿)。门可以随便推,但终点不能在过程里被偷偷换掉。这是把「漫无目的的探索」改成「带目标的探索」——后者才是心流,前者是漂移。
把成就感锚在可验证的东西上。 别让「模型说改好了」给你发多巴胺,让你自己跑过的那条断言给你发。成就感的来源换成真实反馈,虚假进度感就没了立足点。这也是为什么 TDV(test-driven verification)在 AI 时代不是洁癖,是给老虎机断电。
给「再抛一次」设次数上限。 同一个问题来回 prompt 超过三五轮还不收敛,那不是手气问题,是你该停下来自己想了。给赌徒冲动设一个硬性熔断。
区分两种 session。 探索期(我不知道怎么做,让模型陪我试)允许放开玩,享受随机性;收敛期(我知道要什么了,只是要它落地)要把随机性当敌人,锁死、复现、收口。最大的浪费是用探索期的心态干收敛期的活——一直在抽卡,迟迟不结算。
一句话
vibe coding 让人沉迷,不是因为它高效,而是因为它把写代码偷偷改造成了一台心流机器:探索、随机性、即时成就感,游戏让人上头的三件套,它一样不少。
这是它最大的生产力红利,也是它最大的陷阱。心流和空转,在体感上是双胞胎。
老炮的本事,不是抵抗这台机器——抵抗等于放弃红利——而是知道它在怎么操纵你的多巴胺,然后亲手给它装上终点、验证和熔断。会玩的人享受心流,被玩的人摇老虎机。