我用 Vibe Coding 跑了两周真实项目,说几个反常识的发现
网上关于 Vibe Coding 的文章,有两类画风:
一类是”零基础也能建网站”的布道贴,充满惊叹号,配着产品截图;另一类是”AI写的代码一塌糊涂”的反驳贴,列举各种翻车案例。
我是程序员,两类都看不太进去。前者太乐观,后者太悲观。真实的体感,应该在中间某处——只是没人写出来。
所以我做了个实验:用两周时间,把手里真实要做的两个小项目,完全用 Vibe Coding 的方式跑一遍,记录每天的感受。
什么是 Vibe Coding:Andrej Karpathy 造的词,核心是你只需要描述你想要什么,不需要自己写代码——全靠和 AI 对话来驱动开发。本质上是把”编程”这件事从写代码变成了”提需求 + 审结果 + 调方向”。
实验对象:两个真实项目
项目一:博客自动发布工具
把博客文章自动处理成知乎适配格式,包括提取摘要、调整图片链接、去掉 Front Matter,然后生成一个可以直接粘贴的版本。
这个需求我自己知道怎么写,Python 一百多行能搞定,但一直懒得做。选它的原因就是:我有判断标准,能知道 AI 写的对不对。
项目二:Chrome 插件(摸鱼检测器)
检测当前标签页是否在”工作相关”域名,如果偏移超过30分钟,就给自己发一个桌面通知。动机是摸鱼自律需求,纯粹为了好玩。
这个我没写过 Chrome 插件,不熟悉 Manifest V3 的规则。选它的原因:验证 Vibe Coding 在我不熟的领域能走多远。
第一周:蜜月期的真相
说是蜜月期,其实也有摔跤。
博客工具那个,第一轮对话出来的代码基本可用,改了两轮边界情况就跑通了。整个过程大概 40 分钟,比我自己从零写快了不少。这个我不惊讶——需求明确、范围小、有参考物,AI 本来就擅长这种。
Chrome 插件那个,才是真正有意思的部分。
第一版代码出来,插件加载成功,点了按钮没反应。报错信息扔进去,AI 说”Manifest V3 里 background.js 要用 service worker,不能用传统 background page”——好,改。改完了,还是没反应,这次报的是权限问题。再改,再报。
这个循环大概持续了六轮。
有意思的是:每次 AI 改的方向都是”对的”,但改完之后总有新问题冒出来。不是 AI 搞错了,是 Manifest V3 本身有一堆相互依赖的约束,你不系统了解过,就只能”打地鼠”——按下去一个,另一个冒出来。
第一个反常识发现:Vibe Coding 的效率上限,取决于你对问题域的理解,不取决于你会不会写代码。
我不懂 Chrome 扩展规范,所以我实际上是在用 AI 带着我学 Chrome 扩展,只是学的方式从”读文档”变成了”调 bug”。效率没有变高,只是体验不一样了。
第二周:进入存量阶段
功能跑通之后,进入了一个更微妙的阶段:打磨。
博客工具新增了几个功能:批量处理多篇文章、识别文章中的站内链接并转换格式、生成处理日志。每个需求单独拿出来问 AI,代码出来得都很快。
但有一天,我发现工具在处理某类文章时会静默跳过,不报错,也不告诉我为什么。检查代码,发现是一个 try-except 吃掉了所有异常,AI 当时加这个是为了”健壮性”。
我把这个问题跟 AI 说,它很快给出了改法。但这让我想到一件事:
我检查到了这个问题,是因为我知道一个正确的工具应该是什么样的。 如果是零基础用户,代码跑起来了、结果看起来对,他们大概率不会意识到有个”静默失败”在那儿埋着。
这是我认为最容易被低估的风险。
第二个反常识发现:Vibe Coding 不降低对”正确性”的判断门槛,只是把这个门槛从”会不会写”挪到了”能不能发现问题”。
第三周前的一个意外
Chrome 插件上线自用了几天,有一次发现通知延迟,30分钟应该弹的,推迟了大概十分钟才来。
进去看代码,service worker 有个休眠机制,浏览器会在 worker 闲置时把它挂起,计时器就不准了。这是 Manifest V3 的已知问题,Chromium 论坛上有几百个帖子讨论,标准解法是用 chrome.alarms API 替代 setTimeout。
我把问题描述给 AI,它确实知道这个问题,也给出了正确的改法。但我意识到:如果我当时没有去看代码,我就只会发现”通知有时候不准时”,然后可能以为是自己电脑问题。
第三个反常识发现:AI 知道解法,不代表它会主动把所有边界情况告诉你。它回答的是你问的问题,不是你应该问的问题。
我的综合结论
两周实验下来,我对 Vibe Coding 的态度是:它真的有用,但”有用”的方式和宣传的不一样。
它擅长的
- 需求明确的小功能:你能描述清楚输入和输出,AI 写出来的代码基本可用
- 陌生领域的快速起步:不用从零看文档,直接问”怎么做”,然后看能不能跑通
- 重复性的代码变换:格式转换、数据处理、模板生成,这类事情给 AI 做,快且准
- 让懒得动手的事真正落地:那个博客工具,我拖了三个月没写,用 Vibe Coding 两小时做完了
它做不到的
- 自动发现你没意识到的问题:它只能回答你问的问题
- 替代对问题域的理解:你不懂 Chrome 扩展规范,就只能打地鼠;你懂了,才能给对的指令
- 保证代码”正确”而不只是”能跑”:静默失败、边界情况、性能问题,这些不问就不说
一个值得认真想的问题
有人说 Vibe Coding 让非程序员也能做开发了,这话不完全错,但有个隐含条件没说:
你用 Vibe Coding 做出来的东西,你能不能判断它是不是对的?
如果不能,你拥有的其实不是一个工具,而是一个你看不懂说明书的黑盒。有时候它能工作,有时候它静默失败,你都不知道。
我觉得 Vibe Coding 最大的价值,不是”让不懂代码的人能做开发”,而是”让懂代码的人,把以前嫌麻烦不想做的事,真正做完”。
前者是神话,后者是我实际经历的。
这两周的实验代码我放在了 GitHub,主要是博客工具那个。如果你有类似的自动化需求,可以直接拿去改,地址:github.com/jimmy367