AI新玩法“Vibe Coding”爆火!OpenAI研究员用superwhisper和Cursor Chat口述生成Web应用,无需手写代码。但SaaS应用实战翻车,暴露API密钥!拥抱LLM,探索Cursor等工具,掌握Prompt Engineering,人机协作才是云原生时代软件开发正解!
译自:Vibe Coding: Fad, Future or Folly?
作者:Liz Acosta
软件开发领域一直在不断变化,2025年初出现了一种新的震动:vibe coding。这个术语由OpenAI研究员Andrej Karpathy在2月份创造,他用这个术语来描述一个实验,在这个实验中,他构建了一个小型项目,但没有亲自编写一行代码,甚至没有碰过键盘。
Karpathy向AI语音转录器superwhisper口述了应用程序的需求,这是一个“有趣的、一次性的周末项目”。然后,这些指令被输入到Cursor Chat,这是一个由AI驱动的多文件代码编辑器,它生成了一个完整的Web应用程序。通过一些令人惊讶的“愚蠢”提示(如“将侧边栏的padding减少一半”)进行了调整,Karpathy接受了这些更改,而没有查看差异。当出现Cursor无法修复的bug时,他的解决方案是“要求随机更改”,直到问题看似自行解决。“这实际上不是编码,”他承认。“我只是看东西,说东西,运行东西和复制粘贴东西,它基本上可以工作。”
对于EnrichLead的CEO Leonel Acevedo来说,“vibes”发生了不同的转变。2025年3月,他宣布自己构建了一个SaaS应用程序,其中“零手写代码”,并告诉其他人“继续抱怨它[AI]或开始构建”。与Karpathy的实验项目不同,Acevedo将该应用程序定位为可用于生产环境,这意味着它具有稳健性和实际可行性。
胜利是短暂的。几天后,Acevedo报告说该应用程序正在遭受攻击。而且由于他不是技术人员,调试AI生成的代码库被证明是一个缓慢而痛苦的过程。罪魁祸首是什么?他的“vibed”代码暴露了关键的API密钥,使应用程序完全敞开。
Karpathy的实验和Acevedo的磨难,都鲜明地揭示了这种新兴方法的希望和危险。虽然vibe coding还处于早期阶段,但不可否认的是,它是我们在AI时代的软件开发方法中不断演变的最新迭代。
那么,到底什么是“Vibe Coding”?
从本质上讲,vibe coding是一种依赖于AI的编程技术。开发人员(甚至是非开发人员)使用自然语言提示,向专门为代码生成而调整的大型语言模型(LLM)描述问题或期望的结果。然后,LLM解释这些需求,并尝试生成一个完整的、功能性的应用程序。
目前,有两个著名的IDE正在引领vibe coding的潮流,它们都在底层使用了Claude 3.5 Sonnet,但提供了不同的用户体验:
| 对比维度 | Cursor | WindsurfAI |
|---|---|---|
| AI方法和工作流程 | 功能丰富的AI集成,更多手动上下文控制,"代理模式" | 更简单的自动化AI代理("Cascade"),强大的自动上下文处理 |
| 用户体验和复杂性 | 功能更多,学习曲线可能更陡峭 | 更简洁、更直观,通常对初学者更友好 |
| 代码生成和上下文 | 需要更明确的上下文(例如 @codebase、@files) | 擅长自动代码库分析和多文件感知 |
使用 'Vibes' 编码的诱惑和缺点
对 vibe 编码的迅速兴趣并非没有原因。它承诺了几个引人注目的优势:
- 较低的进入门槛:有一个很棒的想法,但编码能力有限?精心设计的提示理论上可以弥合这一差距,将概念转化为代码。
- 提高开发速度:当 IDE 处理大量代码生成时,原型设计和迭代周期会显著加快。
- 专注于更高级别的问题:通过卸载样板、CRUD作和其他日常任务,开发人员可以将更多的脑力投入到复杂的架构和创新问题解决中。
- 弥合知识差距:即使是最有经验的开发人员也面临着学习新技术的挑战。Vibe 编码可以通过提供基础知识来帮助加快入职速度。
然而,正如 Acevedo 的事件所表明的那样,这种氛围很快就会变坏。开发人员需要敏锐地意识到其缺点:
- 不一致性和不可预测性:LLM 的输出是不确定的。这可能导致代码库具有不连贯的风格、结构和方法,使其难以理解、维护和以可预测的方式进行调试。
- 增加出现错误、缺陷和漏洞的风险:AI 预测可能的代码序列。这很容易引入细微的错误或明显的安全漏洞(如暴露的 API 密钥),而经验丰富的开发人员凭直觉可以避免这些问题。
- 长期可维护性和可扩展性方面的挑战:在没有明确的架构指导或考虑未来需求的情况下生成的代码,可能会迅速变得难以维护和扩展。
- 潜在的开发者生产力降低:记录不佳或复杂的“感觉”代码会大大增加开发人员在重构、调试或扩展过程中的工作量。为了获得特定结果而与提示作斗争,有时可能比直接编写代码花费更长的时间。
AI 编码:SDLC 的新篇章
软件开发生命周期 (SDLC) 一直是一个演变的故事,从瀑布到敏捷,从手动部署到 DevOps。每一次迭代都重塑了开发人员的角色,引入了新的工具和方法来应对新兴的挑战。AI 集成到编码中,无论是“感觉”还是其他方式,都是最新的篇章,既带来了机遇,也提出了适应需求。
为了驾驭 AI 的力量而不屈服于其陷阱,开发人员必须改进他们的实践:
- 探索和实验:亲身使用 AI 编码工具。无论是 Cursor、Windsurf 还是下一个热门工具,直接经验对于理解能力和局限性都非常宝贵。
- 感觉,但要验证:这一点怎么强调都不为过。将 AI 生成的代码视为一个非常快速、有些幼稚的初级开发人员的初稿。始终仔细审查、测试和重构,并使用代码质量和安全扫描工具。
- 拥抱架构思维:随着 AI 处理更多底层实现,开发人员可以——而且必须——将他们的注意力提升到强大的系统设计、组件交互以及使用创新的、架构良好的解决方案解决复杂的业务问题。
- 掌握提示工程:AI 输出的质量与输入的质量成正比。学习编写清晰、简洁和明确的提示。战略性地考虑需求、设计模式、测试影响和部署/维护需求,以告知您的提示策略。
开发人员的角色正在演变,而不是消失
虽然方法在改变,但开发人员的核心责任仍然存在。我们努力实现效率、优化、可靠性和可维护性。我们的目标是构建有用的软件,并避免那些可怕的半夜事件电话。
AI 可以成为一种非常强大的工具,可以自动化繁琐的任务,并将开发人员从更具创造性和战略性的工作中解放出来。然而,其固有的局限性意味着人工监督、批判性思维和对质量的承诺比以往任何时候都更加重要。
随着 AI 对 SDLC 的长期影响不断展开,有一点是肯定的:代码质量、代码安全和熟练的开发人员监督的不可或缺的作用将始终是构建有意义、强大和可靠的软件的核心。