Vibe Coding(凭感觉编程)
通过给 AI 工具下提示词来构建软件(Lovable、Cursor、Claude Code、Replit、Bolt、v0),并不加阅读地接受它生成的东西。做出演示很快,上生产很危险,因为模型优化的是能跑起来的代码,不是能扛住真实用户的代码。
Vibe coding,就是向 AI 编程工具描述你想要什么,然后把它给回来的东西直接上线,而不逐行阅读代码。这个词在 2025 年初走红,但这套工作流比这个名字更早出现:下提示词、跑一下、看到能用、再下提示词。Lovable、Cursor、Claude Code、Replit、Bolt 和 v0 这类工具,让一个非工程师能在一个下午里从想法走到可点击的 App。这一部分是真实的,对于原型、内部工具,以及验证一个想法是否值得做,它确实有用。
麻烦从一个 vibe-coded 的 App 撞上真实用户、真实金钱或真实数据的那一刻开始。LLM 优化的是满足提示词、能在演示里跑起来的代码。它不会优化提示词里没人提到的那些东西:授权检查、输入校验、密钥管理、限流、错误处理、回归测试套件。而这恰恰是把演示和可上生产的软件区分开来的东西,也恰恰是模型会漏掉的东西,除非你知道要去要求它,而一个非工程师按定义就不知道。
举个例子。一位创始人用一个周末 vibe-code 出一个 SaaS 仪表盘。它有登录、有数据库、有干净的 UI,演示起来非常漂亮。它没有的,是一个服务端检查,确保用户 A 读不到用户 B 的记录。登录能用,所以感觉很安全。但任何已登录的用户都能改一下 URL 里的 ID,读到任意其他客户的数据。从没人要求模型强制按租户授权,所以它没做,演示里也没有任何东西暴露这个缺口。这是 vibe-coded 软件里最常见的严重缺陷,而且在有人,或者某个监管机构,发现它之前,它始终是隐形的。
诚实的取舍:vibe coding 确实更快做出能跑的演示,假装不是这样就是不诚实。代价是,这份速度来自跳过了工程里那些在失败之前没有可见回报的部分。对一个用完即弃的原型来说这是好买卖,对任何存有客户数据的东西来说则是糟糕的买卖。错误不在于用这些工具。错误在于把演示当成产品,然后把它上线。AI 生成的代码本身并不比手写代码差,但它会悄无声息地累积技术债,并且每次都跳过同样的安全工作。
Wavect 的立场很简单:原型可以 vibe-code,然后在真实用户到来之前,做一遍结构化的生产就绪检查。这一遍不是凭感觉。它就是我们对任何代码都施加的同一套纪律:在重要的逻辑上做 TDD、每个端点都做授权、把密钥从客户端拿掉,以及一条在每次改动时都跑这些检查的 CI/CD 流水线。我们在 Software Quality Assurance 下做这件事。工具是好的。它们只是不知道自己漏掉了什么,而在有人读它之前,你也不知道。