不是所有 AI 辅助编程都是 Vibe Coding(但 Vibe Coding 很棒)
不是所有 AI 辅助编程都是 Vibe Coding(但 Vibe Coding 很棒)
Section titled “不是所有 AI 辅助编程都是 Vibe Coding(但 Vibe Coding 很棒)”2025 年 3 月 19 日
Vibe coding 正在流行。这个术语 由 Andrej Karpathy 创造 就在几周前(2 月 6 日),此后被 纽约时报、Ars Technica、卫报 和无数在线讨论所报道。
我担心这个定义已经偏离了其初衷。我看到人们将”vibe coding”这个词应用于所有形式的 AI 辅助编写的代码。我认为这既稀释了这个术语,也给人留下了关于负责任的 AI 辅助编程 可能性的错误印象。
Vibe coding 不等于 在 LLM 帮助下编写代码!
引用 Andrej 的 原始推文 全文(我添加了强调):
有一种新的编码方式,我称之为”vibe coding”,你完全沉浸在氛围中,拥抱指数级增长,忘记代码甚至存在。这是可能的,因为 LLM(例如 Cursor Composer w Sonnet)变得太好了。我也只是用 SuperWhisper 与 Composer 对话,所以我几乎不碰键盘。
我要求最愚蠢的事情,比如”将侧边栏的内边距减少一半”,因为我太懒了,不想找到它。我总是”全部接受”,不再阅读 diff。当我收到错误消息时,我只是不加评论地复制粘贴,通常这样就能解决问题。代码增长超出了我通常的理解,我真的得花时间去阅读它。有时 LLM 无法修复 bug,所以我只是变通处理或要求随机更改,直到它消失。
对于周末的临时项目来说还不错,但仍然很有趣。我在构建一个项目或 webapp,但这真的不是编码——我只是看东西、说话、运行东西、复制粘贴东西,它大多能工作。
我非常热爱这个定义。Andrej 是一位极其有才华和经验的程序员——他根本不需要 AI 帮助。他这样使用 LLM 是因为尝试疯狂的新想法很有趣,而且 LLM 生成代码的速度比即使是最熟练的人类程序员也要快一个数量级。对于低风险项目和原型,为什么不尽情释放呢?
当我谈论 vibe coding 时,我的意思是在不审查 LLM 编写的代码的情况下构建软件。
负责任地使用 LLM 编写代码不是 vibe coding
Section titled “负责任地使用 LLM 编写代码不是 vibe coding”让我们将这种”忘记代码甚至存在”的方法与专业软件开发人员如何使用 LLM 进行对比。
软件开发人员的工作不仅仅是(或主要是)生成代码和功能。我们需要创建可以证明有效的代码,可以被其他人(和机器)理解,并且可以支持未来的持续开发。
我们需要考虑性能、可访问性、安全性、可维护性、成本效益。软件工程就是关于权衡——我们的工作是通过平衡各种明确和隐含的需求,从数十种潜在解决方案中选择。
我们也需要阅读代码。我的生产级 AI 辅助编程的黄金法则是:如果我不能向其他人准确解释代码的作用,我就不会将其提交到我的仓库。
如果 LLM 为你编写了代码,然后你审查了它,进行了彻底的测试,并确保你可以向其他人解释它是如何工作的,那就不是 vibe coding,而是软件开发。使用 LLM 来支持该活动是无关紧要的。
我在 我如何使用 LLM 帮助我编写代码 中广泛撰写了我自己的流程。Vibe coding 只描述了我方法的一小部分。
让我们不要失去对 vibe coding 特别之处的关注
Section titled “让我们不要失去对 vibe coding 特别之处的关注”我也不希望”vibe coding”成为一个与不负责任的 AI 辅助编程同义的负面术语。这种奇怪的编程新形态为世界提供了很多东西!
我相信每个人都应该有能力用计算机自动化他们生活中的繁琐任务。你不需要计算机科学学位或编程训练营就能让计算机为你执行非常具体的任务。
如果 vibe coding 让数百万新人能够构建自己的定制工具,我再高兴不过了。
其中一些人会被编程 bug 咬到,然后成为熟练的软件开发人员。这个职业最大的障碍之一就是极其陡峭的初始学习曲线——vibe coding 将这个初始障碍削减到几乎平坦。
Vibe coding 也为经验丰富的开发人员提供了很多东西。我之前谈过 使用 LLM 编写代码很困难——找出什么有效什么是无效的是随着时间的推移建立直觉的问题,沿途有很多隐藏的尖锐边缘和陷阱。
我认为 vibe coding 是我们帮助经验丰富的开发人员建立关于 LLM 能为他们做什么和不能做什么的直觉的最佳工具。我已经发布了超过 80 个实验,我用 vibe coding 构建,一路走来我学到了很多。我会鼓励任何其他开发人员,无论他们的技能水平如何,都尝试同样的事情。
什么时候可以 vibe code?
Section titled “什么时候可以 vibe code?”如果你是一名经验丰富的工程师,这可能对你来说已经很明显了,所以我正在为刚刚开始构建软件的人编写这一部分。
- 项目应该是低风险的。考虑一下你正在编写的代码如果有 bug 或安全漏洞会造成多大的危害。如果有人可能受到伤害——声誉受损、金钱损失或更糟的情况?特别是如果你打算构建将由其他人使用的软件!
- 考虑安全性。这是一个非常困难的问题——安全性是一个很大的主题。一些高级说明:
- 注意秘密——任何看起来类似于密码的东西,例如用于访问在线工具的 API 密钥。如果你的代码涉及秘密,你需要小心不要意外暴露它们,这意味着你需要了解代码是如何工作的!
- 考虑数据隐私。如果你正在构建一个可以访问私有数据的工具——任何你不想在屏幕共享会话中向世界展示的东西——请谨慎行事。可以 vibe code 你粘贴私人信息的个人工具,但你需要非常确定你是否了解数据可能离开你的机器的方式。
- 做一个良好的网络公民。任何向其他平台发出请求的东西都可能增加这些服务的负载(因此增加成本)。这是我喜欢 Claude Artifacts 的原因之一——它们的沙箱可以防止意外在其他地方造成伤害。
- 你的钱在风险中吗?我见过关于人们对某些 API vibe code 功能而没有账单限制并累积了数千美元费用的恐怖故事。对任何基于使用量收费的东西使用 vibe coding 时要非常小心。
如果你要 vibe code 任何可能被其他人使用的东西,我建议在与更有经验的人检查之前进行 vibe check(哈),然后再与世界分享。
我们如何让 vibe coding 更好?
Section titled “我们如何让 vibe coding 更好?”我认为这里有一些有趣的软件设计挑战需要解决。
初学者的安全 vibe coding 从 沙箱 开始。Claude Artifacts 是最早广泛可用的 vibe coding 平台之一,他们的沙箱方法非常棒:代码被限制在锁定的 <iframe> 中运行,只能加载批准的库,不能向其他网站发出任何网络请求。
这使得人们很难搞砸并用他们的项目造成任何伤害。这也极大地限制了这些项目可以做什么——例如,你不能使用 Claude Artifact 项目来访问来自外部 API 的数据,甚至不能构建针对 LLM 运行你自己提示的软件。
其他流行的 vibe coding 工具,如 Cursor(最初是为专业开发人员设计的),安全护栏要少得多。
在这个领域有很多创新空间。我希望看到工具方面的寒武纪大爆发,以帮助人们尽可能高效和安全地构建自己的定制工具。
去吧,去 vibe code
Section titled “去吧,去 vibe code”我真的不想阻止刚接触软件的人尝试 vibe coding。学习任何事情的最好方法就是构建一个项目!
对于经验丰富的程序员来说,这是一种开始培养对 LLM 能和不能做什么的直觉的惊人方式。对于初学者来说,没有比这更好的方法来开阔你对代码本身可能实现的事情的眼界。
但是请不要将 vibe coding 与 LLM 用于代码的所有其他用途混淆。