指南

什么是 Vibe Coding?通俗解释

Vibe coding 是通过用自然语言向 AI 描述你想要的东西、运行它生成的结果,并根据运行效果而不是代码来引导开发的一种做软件的方式。你评判的是应用本身:按钮能不能用,页面看起来对不对。你不断提出修改,直到它满足你的需要。这个词由 AI 研究员 Andrej Karpathy 于 2025 年 2 月在 X 上的一篇帖子中提出,他在帖子里描述了顺着感觉走、忘记代码存在的状态。

这个词的由来

Karpathy 曾是 OpenAI 的创始成员之一,也担任过特斯拉的 AI 负责人。他用这个说法来形容自己做一些小型周末项目的方式:和 AI 编程工具对话,不看它改动的差异就直接接受,遇到报错就把报错信息贴回去,直到能跑通为止。他明确表示,这种方式适合临时性的项目。

这个说法之所以流行,是因为它命名了许多人已经在做的事情。几个月内,它就被用来指代从个人爱好项目到创业公司原型的各种开发。柯林斯词典还将「vibe coding」选为 2025 年度词汇。如今,它被宽泛地用来指代任何由 AI 写代码、由人用自然语言来指挥的开发方式。

如果你在用 AI 做应用,它为什么重要

对于不写代码的人来说,vibe coding 正是 AI 应用构建工具有用的根本原因。创业者可以在一个下午测试一个想法;小企业主可以做出一个预约表单或库存跟踪工具,而这是他们过去绝不会花钱请外包公司做的;设计师可以把设计稿变成可以点击的原型。

但这个定义本身就包含了一个警告。「忘记代码的存在」在代码只需要为你自己、为当下运行时没有问题。但如果应用要存储客户数据、处理付款,或需要多年稳定运行,这种做法就不太合适了。弄清楚这条界线在哪里,是你在 vibe coding 中能学到的最有用的一课。

一个日常类比

想象你装修厨房时,不自己画图纸,而是直接告诉装修师傅你想要什么。你说「窗户下面一个长台面,开放式置物架,冰箱放在门边」,然后每天晚上走进去看看做得怎么样,再提出需要修改的地方。

这种方式对布局和外观效果很好,因为你站在房间里就能判断。但对于墙后面的东西就不太行:电线、水管、燃气管道是否符合规范,这些光看是看不出来的,问题可能要等到出了故障才会暴露。细心的房主依然会请人来做检查。

Vibe coding 也是如此。界面就是你看得见的房间,安全、数据处理和代码的组织方式,就是墙里面的线路。

实际的 vibe coding 是什么样子

假设你想做一个简单的工具,用来跟踪哪些客户已经付清了发票。

步骤你做什么AI 做什么
1. 描述「一个客户列表页面,显示发票金额、到期日和已付/未付状态。我可以添加客户,并把发票标记为已付。」编写页面、表单和保存数据的逻辑
2. 试用添加一个客户,标记为已付,刷新页面在预览中运行应用
3. 反馈「刷新之后,我的客户都不见了」解释数据只保存在浏览器内存中,并添加数据库
4. 完善「把逾期发票排到最前面,并标成红色」修改列表
5. 检查在手机上打开;尝试提交空表单修复你反馈的问题

你从头到尾没有打开过任何代码文件。但请注意第 3 步:应用看起来已经完成了,实际上却还没有真正保存任何数据。Vibe coding 奖励那些像用户一样测试、并能精确描述所见内容的人。

优势

  • 速度快。 几分钟或几小时就能得到一个可用的初版,而不是几周。
  • 尝试想法的成本低。 你可以做出三个版本,然后保留能用的那个。
  • 直接掌控。 最了解问题的人亲自塑造产品,不必把需求层层转述给开发人员,信息不会在传递中丢失。
  • 边做边学。 很多人只要观察 AI 构建的过程并追问为什么,就能慢慢理解应用各部分如何配合,比如前端与后端、数据库和 API。

真正的风险

这些并不是不该使用 vibe coding 的理由,而是「凭感觉」无法替你检查的东西。

你看不见的安全漏洞

一个应用可能看起来完美无缺,却允许任何已登录用户读取其他所有用户的记录,或者把密钥暴露在运行于访客浏览器中的代码里。这些问题在你以自己的身份随便点点时是不会显现的。常见问题包括:服务器端缺少权限检查、把 API 密钥放在前端代码里,以及表单对任何输入都照单全收。

没人理解的代码

如果没有人读过代码,就没有人知道它是如何组织的。规模小的时候还好。随着应用变大,每次修改都可能破坏某个不相关的功能,而 AI 有时会在「修复」一个 bug 的同时制造另一个 bug。那些数月来从未经过任何审查的 vibe coding 应用,往往比慢慢打造的应用更难修改。

不清楚什么才算「完成」

AI 会很痛快地告诉你某个问题已经修好了。只有测试才能告诉你它是否真的修好了。跳过测试的人,最终得到的功能在演示时能用,一遇到真实数据就出问题:名字很长、字段为空、两个人同时预订同一个时段。

隐藏的依赖与费用

AI 构建的应用常常会接入外部服务,比如邮件服务商、支付处理商和 AI 接口。每一个都有自己的账号、密钥、用量限制和账单。上线前,要先弄清楚你的应用依赖哪些东西。

常见误解

误解实际情况
「vibe coding 就是没有代码。」代码确实存在,只是你没有去读。正因为如此,你之后才能导出它,或者交给开发人员。
「能运行就说明是对的。」能运行,与正确、安全、可维护,是三回事。
「这只适合非开发者。」很多专业开发者也会用 vibe coding 做原型,然后在上线前再审查或重写。
「AI 会主动告诉我哪里有问题。」你问的话它通常会说,但不一定主动提。要直接问。
「用这种方式做不了认真的东西。」很多真实的应用都是这样起步的。认真的部分,是在真实用户依赖它之前补上测试和审查。

如何负责任地进行 vibe coding

以下几个习惯,就能覆盖大部分风险:

  1. 小步修改。 一次需求,一处改动,然后测试。笼统的大需求只会得到笼统的大结果。
  2. 使用检查点。 在尝试有风险的操作之前,确保你能回退到上一个可用版本。
  3. 让 AI 解释。 「这次改动做了什么?可能会破坏哪些地方?」这几句话成本很低,却能发现很多问题。
  4. 像陌生人一样测试。 用第二个用户账号登录,尝试查看第一个用户的数据。
  5. 不要把密钥写进代码或聊天里。 API 密钥应放在环境变量或项目 secrets 中。
  6. 面向真实用户之前先审查。 对于涉及付款或个人数据的应用,请按照安全检查清单逐项核对,或请开发人员帮你看一看。

向你的 AI 构建工具提出的要求

以下提示可以把「凭感觉」变成可以检验的步骤:

  • 「在动手构建之前,先告诉我你的计划,以及它会存储哪些数据。」
  • 「列出这个应用存储或发送用户数据的每一个位置。」
  • 「已登录的用户能否看到或修改其他用户的记录?请检查服务器端代码,而不只是页面。」
  • 「有没有 API 密钥暴露在运行于浏览器的代码中?」
  • 「如果两个人在同一时刻提交这个表单,会发生什么?」
  • 「总结一下最近三次修改改了什么。」

更多方法请参阅如何为 AI 应用构建工具编写提示词;出现问题时,可以参阅如何调试 AI 构建的应用。

在 Mythex 中做 vibe coding

Mythex 是一款为这种工作方式而打造的AI 应用构建工具:你在聊天中描述应用,智能体在实时预览中编写并运行代码,然后你可以将应用发布到公开网址。有几个功能正是针对上述风险设计的:Plan 模式让智能体在修改任何文件之前先列出方案,Ask 模式只回答问题、不做任何编辑,每次成功的操作都会保存一个检查点,你可以随时回退。Pro 用户还可以打开完整的代码编辑器,在需要开发人员审查时导出项目或同步到 GitHub。聊天文档介绍了各种模式和检查点,如果从空白页面开始让你觉得无从下手,可以参考模板作为起点。

常见问题

vibe coding 这个词是谁提出的?

由 AI 研究员、OpenAI 创始成员之一 Andrej Karpathy 在 2025 年 2 月于 X 上的一篇帖子中提出。他描述的是顺着感觉走,忘记代码的存在。这个说法很快就传开了。

vibe coding 和 no-code 是一回事吗?

不完全是。No-code 工具让你在一个隐藏代码的可视化编辑器里搭建应用。而 vibe coding 中,AI 写的是真实存在于文件里的代码;你只是选择不去读它,而是通过描述需求和检查结果来引导开发。

vibe coding 做的真实应用安全吗?

可以安全,但要补上「凭感觉」时会跳过的检查:确认用户之间无法看到彼此的数据,把 API 密钥存放在 secrets 中而不是写在代码里,并审查所有涉及资金或个人数据的部分。对于临时原型,风险较低;对于有真实用户的应用,风险就不低了。

做 vibe coding 需要先学编程吗?

不需要。但了解一些基本概念,比如什么是数据库、API 和身份验证,能让你的需求描述更清楚,也更容易发现问题。理解这些概念不需要你自己写代码。

Mythex · Pricing · 用 AI 构建任何东西 · 网站和应用模板 · Mythex 对比 · AI 应用构建术语表 · 免费的 AI 应用构建工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 繁體中文(香港) 繁體中文(台灣)