Vibe Coding这一术语由OpenAI联合创始人Andrej Karpathy提出,即用自然语言提示和智能体AI支持,更快地将想法转化为代码。
什么是氛围编程(Vibe Coding)?
氛围编程是一种自然语言驱动、AI辅助的软件开发方式。你无需手动编写每一行代码,而是通过自然语言向一个AI系统描述你想要的东西------例如,"为设置菜单创建一个深色模式切换开关"------然后AI帮助将其转化为可工作的代码。
氛围编程强调:
- 用语言描述想法。
- 快速迭代而不打断你的创意思路。
- 出现创意之后构建具体内容。
它非常适合早期项目阶段和创意探索,让没有专业编程能力的人更加容易上手。 Vibe Coding并不能取代原本的开发技能。开发者的判断力、了解代码如何工作以及理解计算机科学的原理,都对结果非常重要。 然而Vibe Coding是AI改变原本软件开发的一部分,它使编码更具可及性、表达性和协作性。
工作原理
从一个提示开始。像 GitHub Copilot、claude code这样的AI工具会根据你的输入反馈一个代码建议。
示例:
- 为音乐应用构建一个带有提交按钮的响应式HTML页面。
- 生成一个按日期和总金额筛选客户订单的SQL。
你检查输出结果,调整逻辑,或添加新的指令,将输出塑造成可工作的代码,同时保证输出没有脱离项目的整体里。借助氛围编程的智能体系统,你可以快速开发出可工作的原型。通过这种对话式的工作流程,可以让开发者在过程中不断细化。
氛围编程怎么做
Vibe Coding是一种可重复的过程。选择了一个工具,过程很简单:描述你想要什么,查看AI工具的建议,然后检查结果直到符合要求。这是一种灵活的构建方式,非常适合在感觉用代码勾勒比计划好一切更快的时刻。这种方法适用于许多AI编码工具,无论是初学者还是专家程序员都可以使用。
1. 选择适合你工作流程的工具
寻找一个能与你偏爱的技术栈和设置协同工作的工具。Copilot 集成到流行的编辑器如 Visual Studio Code 和 JetBrains IDE 中,提供自然语言输入和上下文感知建议。
2. 描述你想要构建什么
用自然语言来描述你的目标。当你有好的提示词并提供良好的上下文时,你将获得最好的代码。
技巧:
- 提及输入、输出或约束条件。
- 包括视觉或风格偏好。
- 保持提示简短且重点突出。
示例:
- 创建一个带有一个端点的Flask应用,用于检查一个数字是否为质数。包含错误处理。
3. 优化输出结果
将AI的回应视为草稿。在过程中进行细化和调整,并可以提示它编写测试来验证结果。 你可能会:
- 将长的代码块分解成更小的函数。
- 重命名变量以增加清晰度。
- 要求AI清理、简化或扩展某个部分。
- 提示它编写单元测试或边界情况测试以尽早发现问题。
4. 在继续之前进行检查
测试代码并确保它符合你的想法。
好的收尾步骤:
- 进行单元测试。
- 检查项目依赖。
- 使用
inter或formatter进行代码格式化。
保持节奏 当这种方式和有效的代码审查结合时,Vibe Coding让你更容易地探索、构建和交付,而不会卡在设置阶段。这只要你准备好创造,就可以随时使用这种方式验证想法。
为什么氛围编程有效
Vibe Coding将编码变成了一场对话,让探索和分享想法变得更容易,而无需过度思考代码本身。以下是你马上会注意到的一些好处:
-
快速从想法到可工作功能: 通过自然语言提示使得勾勒概念并快速构建早期版本变得简单。
- 示例: 一个开发者在一小时内构建了一个功能性的数据仪表板------通过提示来生成图表、API调用和样式。
-
更低的入门门槛: 你不需要掌握语法就可以开始构建。设计师、学生和独立开发者可以描述他们想要的东西,并看着它变成现实。
- 示例: 学生使用诸如"将这个div居中"和"将背景设为黑色"之类的提示来构建网站。
-
更专注,更少重复: 随着AI处理样板代码,开发者可以花更多时间思考逻辑、架构和用户需求。
- 示例: 用Copilot生成单元测试和表单验证,从而为产品思考腾出时间。
-
编码即对话: 氛围编程让迭代感觉更自然。你描述、调整、改进,一次一个提示。
- 示例: 开发者可以让AI优化一个运行缓慢的函数,然后继续检查其他内容。
-
让你保持控制: AI提供了速度和灵活性,但你仍然是塑造结果的人。
氛围编程有哪些局限性?
氛围编程能快速实现,但像任何灵活的方法一样,它也有其局限。如果使用不当,可能会引入问题,拖慢你的速度或使项目难以管理。
-
技术复杂性: AI工具擅长处理常见任务,但在更高级的情况下常常忽略细节。它们倾向于假设一切都会顺利进行,而跳过线程、性能或错误处理等问题。
-
棘手之处:
- 复杂的工作流程
- 实时系统或硬件集成
- 需要微调或高精度的逻辑
-
-
质量和一致性: 能运行的代码并不总是为生产级的。如果不加注意,代码可能笨拙、重复或难以维护。
- 需要注意:
- 冗余的逻辑
- 低效的解决方案
- 杂乱的结构或格式
- 需要注意:
-
调试和清晰度: 你通常搞不清楚AI助手为何做出某些决定。AI缺少可观测的能力,有时会生成难以理解、维护或者拓展的代码。
-
困难点:
- 模糊的变量名
- 缺失文档
- 难以维护的逻辑
-
-
长期维护: 氛围编程有助于快速取得进展,但如果你跳过检查过程,事情会变得混乱。不一致的命名、分散的逻辑或未跟踪的依赖关系会迅速累积。当大量代码或微应用脱离一定的规范和检查规则,会让后续的开发变得尤其危险。
-
最佳实践:
- 尽早审查和重构。
- 添加注释和文档。
- 遵守团队的标准。
-
-
安全风险: 除非特别提示,AI可能会忽略安全措施,或在没有警告的情况下重复危险模式。
-
常见风险:
- 硬编码密钥
- 不安全的表单或端口
- 未验证的用户输入
-
-
有意识地使用: 氛围编程在与人类判断相结合时最为出色。AI可以加速进程,但前提是你需要参与审查、测试和优化输出。
AI在氛围编程中的角色
氛围编程始于一个简单的想法:描述你想要什么,然后让AI工具帮助构建它。这些工具将你的想法快速转化为代码,并能随着每个新提示进行调整。氛围编程的AI工具由在公共代码和自然语言提示上训练的大型语言模型驱动。
AI工具能做什么:
- 将自然语言转化为代码
- 处理设置、样板代码和格式化
- 建议下一步或输出完整的函数
- 解释逻辑或清理代码
- 在任务中途适应变化
示例:
- 像"使用Flask创建一个获取天气数据的REST API"这样简单的注释,可以生成完整的路由设置、函数逻辑和简洁的JSON响应,全部准备后好进行测试。
智能体AI如何为氛围编程工作
在氛围编程中,你描述,AI回应。你塑造结果,它进行适应。这种方式使得探索想法和专注于结构与意图变得更容易。
循环如下:
- 描述你的目标
- 让AI生成草稿
- 修改或添加约束条件
- 重复直到达到你想要的效果
这种稳定的流程让你保持参与,同时将提示转化为真实、可用的输出。
不足之处 同样的优势,如果你不审查输出就过度依赖AI,也可能变成陷阱。注意:
- 过度依赖: 生成的代码不一定是安全、高效或正确的。
- 技能捷径: 初学者可能会跳过基础知识的学习。
- 无法观测: AI无法解释其选择,追踪决策或发现边界情况更加困难。
AI让氛围编程成为可能,但这仍然是一种协作方式。你提供想法,AI工具回应。你需要保持主导地位,构建最终的结果。
氛围编程工具的类型
所有的氛围编程工具都有一个核心特性:它们让你用自然语言描述你想要什么,并帮助你将它们转化为可以运行的代码。但它们使用方式、与代码的交互方式以及目标用户方面差异很大。 有些工具在你的代码编辑器(集成开发环境或IDE)内部工作,而有的工具可以在浏览器中运行,或者帮助你在极少编码的情况下构建软件。AI智能体可以在你的IDE内部、浏览器中或跨多个工具工作,根据你的目标采取多步行动。 以下是用于氛围编程的主要工具类型:
-
AI智能体与编排器: 这些实验性工具遵循提示,生成完整的应用脚手架或自动执行多步任务。
-
最适合:
- 研究或自动化试点项目
- 早期探索
- 起草由人类细化的工作流程
-
-
AI代码补全助手: 这些工具在你的编辑器内工作,在你输入时建议代码。它们非常擅长快速实现常规任务。
-
最适合:
- 在IDE中工作的开发者
- 处理样板代码或重复逻辑
- 提升编辑器的生产力
-
-
对话式AI编码助手: 这些工具让你用自然语言描述你想要什么。它们帮助你在上下文中与代码交互并理解代码。它们非常适合帮助你在过程中学习。
-
最适合:
- 原型设计和想法探索
- 调试或逆向工程不熟悉的代码
- 个人项目、小团队或动手型学习者
-
-
具有提示支持的低代码智能体系统: 使用这些低代码系统,你只需用自然语言描述你的应用或逻辑,然后让工具完成其余工作。
-
最适合:
- 设计师、产品负责人或非开发人员
- 最小可行产品(MVP)和业务工具
- 减少开发积压任务
-
选择适合的工具 选择适合你的技术栈、风格和目标的工具:
- 如果是编码新手,可以尝试基于聊天的或低代码平台。
- 如果是进行全栈项目,可以尝试具有上下文感知功能的编辑器内助手。
- 如果是有兴趣实验动手,可以探索智能体了解和实现更多功能。
如何将氛围编程应用于软件开发
氛围编程提供了一种更自然的方式来设计、构建和调整软件。通过使用自然语言和AI辅助,你可以勾勒想法,在过程中塑造代码,并专注于重要的事情。这是一种灵活的方法,能融入现代工作流程,并适应不同的团队需求。
-
从想法快速过渡到原型: 使用提示来勾勒和测试想法,然后再选择技术栈或设置架构。
- 示例: 初创团队使用Copilot快速搭建一个调度应用的UI组件和后端路由。几小时内,他们就可以实现一个可工作的演示原型。
-
减少样板代码,加快速度: 氛围编程处理重复性任务,如表单验证和API脚手架,因此你可以专注于逻辑和结构。
- 示例: 业开发者使用Copilot生成单元测试和搭建路由------缩短了构建时间并减少了上下文切换。
-
支持学习和入职: 新团队成员可以通过提问和生成简化示例来探索不熟悉的代码。
- 示例: 正在开发Web应用的初级开发者使用Copilot来改进一个代码块。Copilot建议了一个更简洁、更符合语言习惯的JavaScript版本,帮助他们在细化代码的同时理解最佳实践。
-
跨角色协作: 非工程师可以用自然语言描述意图,再由开发者优化代码。
- 示例: 设计师用自然语言进行布局细节,为登录页面生成响应式HTML/CSS。然后开发者审查并调整代码以确保一致性和可访问性。
-
在项目中保持灵活性: 如果要重构,重新提示和调整AI生成的代码比从头重建要容易得多。
- 示例: 开发团队可以在项目中期通过提示词,获取更新的项目脚手架和逻辑调整来重构他们的架构。
参考
1\][vibe-coding-cn](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fioihub%2Fvibe-coding-cn "https://github.com/ioihub/vibe-coding-cn") \[2\][What Is Vibe Coding?](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fresources%2Farticles%2Fwhat-is-vibe-coding "https://github.com/resources/articles/what-is-vibe-coding")