Vibe Coding 只是开始,别把它当成终点
从"感觉编码"到真正的产品:AI 写代码这事儿没那么简单
前几天,一个创业者给我展示了她用 AI 工具花了一个周末做的 Web 应用。没有计算机学位,没上过培训班,就一个清晰的想法和一堆好用的 prompt。功能还挺像样的——登录系统、仪表盘、数据存储,72 小时全搞定。
然后她说:帮我把这个发布给真实用户吧。
问题来了。
原型之所以能跑,是因为只有她一个人在用。一旦我们尝试加第二个用户,并发问题马上就冒出来了。数据库没有任何迁移机制,回滚就意味着数据丢失。没有测试,改任何东西都像蒙着眼睛拆炸弹。部署靠手动执行,没有任何文档。
她那个周末项目是个好用的 Demo。但不是能上线的生产级软件。
这就是"感觉编码"(vibe coding)讨论中被忽略的核心问题。工具是真的,快是真的,让更多人能写代码这件事本身也是真的。但生成代码和工程开发是两码事。这个区别很多人意识不到——直到凌晨三点系统挂了的时候。
真正重要的衡量标准
我看到 AI 生成的代码时,常问自己一个问题:这玩意儿能安全地合并到团队代码库里吗?
不是问"能不能跑起来",也不是问"演示有没有成功"。而是"能不能安全合并"。
"安全"这个词包含很多东西。意味着这段代码可以被没写过它的人 review。意味着测试验证的是行为,而不是代码有没有崩溃。意味着可以回滚而不会丢数据。意味着改动足够小,能理解和解释。
感觉编码者衡量成功的标准,通常是"多久能跑出第一个可用版本"。这个指标在探索和原型阶段确实有用。但一旦软件进入多人协作环境,这套指标就不够用了。真正要衡量的是"多久能安全合并"——包括 review 成本、测试质量、发布风险、沟通成本,还有未来的维护负担。
软件工程师从一开始就考虑整个生命周期。感觉编码者往往是后来才发现这些问题,而那时候解决起来贵多了。
代码生成和代码所有权的区别
AI 生成代码后,有一个微妙但关键的转变需要发生。输出还不是你的作品,只是一个起点,需要转化成你真正拥有的东西。
所有权意味着:你能够解释这次改动里每个有意义的决定。你知道每个文件为什么存在、做什么用。你把改动限制在刚好需要的范围内,没有多余的样板代码和无关的清理工作。你写了或验证过测试,检查的是行为而不是凑覆盖率。你想过回滚方案。
这些活儿 AI 替不了你。AI 生成,你来决定。"决定"意味着你考虑过备选方案,权衡过利弊,理解过后果。
我看那些没有被好好"认领"的 AI 生成代码,经常看到同样的问题:改动太大,因为模型生成了超出需要的东西;加了依赖包但说不清为什么;测试像是为了满足覆盖率工具而不是为了抓真 bug;有一堆样板代码是因为模型默认生成脚手架而不是追求简洁。
这些都不是 AI 的错。问题在于作者把生成结果当成了成品,而不是原材料。
没人愿意谈的 Review 困境
有件事一直让我睡不着:AI 生成的代码改变了 Code Review 的逻辑。
人类工程师写代码,通常会留下一条决策链。你可能不同意他们的选择,但至少有选择。你可以问:为什么用那个抽象?为什么把校验放在那里?为什么选那个库?答案可能是"没想过"或者"当时觉得合理",但至少有个活人可以问。
用 AI 生成的代码,有些"决策"根本不是决策,只是补全。模型选了一个模式,是因为它在统计上最可能,而不是因为它适合你的问题。如果作者没有把这个补全转化成自己的作品,Review 就变成了一道难题。
你没法问模型为什么选这个方案。你也没法问作者为什么这么选,如果他真的不知道。那 Review 要么在痛苦的试错中发现问题,要么压根发现不了。
这就是为什么我认为 AI 辅助开发时代最重要的技能不是写 prompt,而是把生成结果转化成你自己深度理解、能够解释和维护的代码。
这对你和团队意味着什么
如果你在做一个原型来验证想法,感觉编码是个合理的做法。早期阶段学习速度很关键,工具尽管用,快速试错,先做个能给人看的东西。
但如果这个原型要变成真正的产品,AI 生成的代码迟早需要经过一个具备工程思维的人过滤。不是为了设置门槛,不是为了拖慢进度,而是为了确保最终上线的是团队能够理解、维护、出了问题也能信任的代码。
在 NameOcean,我们见过太多这样的案例。创业公司用 AI 工具快速验证想法,等需要规模化的时候撞墙。好的做法是在那个节点引入工程支持;差的做法是继续往一个没人真正理解的代码库上加功能。
目标不是不用 AI 辅助开发,而是诚实面对工作从哪里开始、到哪里结束。AI 能生成代码,你得完成工程化。
最后
感觉编码是个很棒的起点。快速验证想法,看看什么可能,从概念到可用的东西不需要几个月的传统开发。
但软件工程关注的是完整生命周期。是代码在凌晨两点出问题的时候,你的团队还能 review、维护、信赖。是改动足够小,能理解、能回滚。是承担责任——即使那些决策是参考了 AI 建议做出的。
我认识的最厉害的开发者都在广泛使用 AI 工具。只是他们用得更清醒。他们知道生成的代码是原材料,不是成品。他们也知道,到某个节点,必须有人做那些把"好看的 Demo"变成"真能上线"的工作。
所以尽管放开去"感觉编码"。快速构建,自由实验,用上所有能用的工具。只是要知道什么时候该从"感觉"切换到"工程"。你未来的自己,还有你未来的团队,都会感谢你。