氛围编程:AI 辅助开发中的创造力与速度
探索'氛围编程'方法——让 AI 处理实现细节,开发者专注于架构、创造力和问题解决。

有一种软件开发方式,在任何教科书中都找不到正式名称,但每个认真使用过 AI 工具的开发者都确切地知道那种感觉。你描述你想要什么,AI 来构建。你看结果,调整描述,AI 重新构建。你不是逐行编写代码——你在更高的抽象层级上指导实现,通过意图而非语法来引导。Andrej Karpathy 把它叫做"vibe coding"(氛围编程),这个名字之所以流行,是因为它确实捕捉到了这种体验的真实感受。
这不是结对编程。这不是代码生成。这是一种与代码库之间全新的关系,你的主要产出是决策,而不是键盘敲击。
定义氛围编程
传统开发:你思考代码应该做什么,然后键入代码。你的大脑将意图逐行翻译成语法。你同时维持着系统的心智模型、语言语义、库的 API、边界情况——一切同时进行。
传统 AI 辅助开发:你自己编写大部分代码,但使用 AI 进行自动补全、样板代码生成、文档查询和偶尔的函数生成。AI 是一个更快的键盘,而不是一个共同思考者。
氛围编程:你描述行为、约束和架构。AI 编写实现。你审查输出,测试它,并指导下一次迭代。你的认知负荷从"我如何编写这个"转移到"这是我想要的吗"和"接下来它应该做什么"。
关键区别在于你的注意力去向。在传统编码中,70% 的脑力用于实现机制——语法、API、类型、导入、错误处理模式。在氛围编程中,这 70% 转向了设计决策——功能应该做什么、组件如何交互、用户体验应该是什么感觉、什么权衡是可以接受的。
这不是偷懒。这是杠杆。就像 CEO 不自己打邮件是因为他们的时间更适合用于做决策一样,使用氛围编程的开发者不是因为不会写代码才避免编码——他们将实现工作委托出去,是因为他们对构建什么的判断比如何构建的打字速度更有价值。
它与传统 AI 辅助开发的区别
区别微妙但重要。大多数使用 AI 工具的开发者在做增强开发——他们编写代码并使用 AI 加速特定步骤。氛围编程则是一种完全不同的模式。
增强开发
开发者:"我需要一个验证邮箱地址的函数"
AI:生成 validateEmail 函数
开发者:审查、微调,继续手动编写其他代码
开发者仍然是主要作者。AI 帮助处理离散的任务。
氛围编程
开发者:"构建一个用户设置页面,包含邮箱、密码和通知偏好设置。
使用现有设计系统组件。通知部分应该有邮件、推送和短信的
切换开关,每个都带有频率选择器。持久化到 user_settings 表。"
AI:生成完整的页面组件、子组件、API 集成、类型和基本测试
开发者:审查输出
开发者:"频率选择器应该默认为'每日'而不是'即时'。
另外,在禁用所有通知时添加确认对话框。"
AI:相应修改组件
开发者:审查、测试、发布
开发者从未编写一行代码。他们通过迭代对话指导实现,在每一步做出设计决策和质量判断。AI 是主要作者。开发者是编辑和架构师。
工作流模式
氛围编程不是混乱的。效率最高的开发者都遵循一致的模式。
规格先行模式
从对你想要什么的清晰描述开始。不是伪代码——是用自然语言写的产品规格。包括行为、约束、集成点和用户体验。
"构建一个仪表盘小部件,显示用户的每周活动。它应该显示过去 7 天每日会话的柱状图、与上周相比的百分比变化、以及过去 30 天的趋势迷你图。使用 Recharts 绘制图表。从 /api/analytics/weekly 端点获取数据。获取时显示骨架加载器。如果 API 返回错误,显示重试按钮代替图表。"
这足够具体,AI 能在第一次就产出接近你想要的东西,但它不规定实现细节如状态管理模式或组件分解。AI 做出这些决策,你来审查。
迭代优化模式
永远不要试图一开始就规定所有细节。先生成第一个版本,然后通过对话优化:
- 生成骨架。 宽泛的描述,核心行为。
- 审查并调整结构。 "把图表移到它自己的组件中。" "使用现有的 useAnalytics hook 代替直接请求。"
- 优化细节。 "百分比变化正数时显示绿色、负数时显示红色。" "悬停在柱状图上时添加显示精确会话数的提示框。"
- 添加边界情况。 "如果用户没有活动数据怎么办?显示一个带消息的空状态。"
- 生成测试。 "为以下场景编写测试:正常数据、空数据、API 错误和加载状态。"
每一步都建立在前一步的上下文之上。AI 记住了它生成的内容,可以精确修改。
并行探索模式
当你不确定哪种方案最好时,让 AI 生成多个选项:
"给我展示通知设置 UI 的两个版本。版本 A:简单的切换开关列表。版本 B:基于卡片的布局,每种通知类型有自己的卡片,包含描述和切换开关。"
审查两者,选择你喜欢的(或组合两者的元素),然后继续。这是以对话速度进行的设计探索,而不是以实现速度。
氛围编程适用的场景
原型和 MVP
氛围编程在速度比完美更重要的时候最为强大。构建原型来验证想法、创建 MVP 展示给投资者、快速搭建内部工具——这些场景中,从想法到可工作软件的时间指标压倒一切。
我用一个下午构建过功能原型,而传统开发需要一周。不是因为代码复杂,而是因为原型设计涉及大量"试试这个,不试那个,实际上还是回到第一种方案"的迭代。当 AI 处理实现时,每次迭代只需几分钟而不是几小时。
样板代码密集型功能
CRUD 操作、表单处理、API 集成、管理面板——模式已经成熟且差异化在于细节而非架构的功能。这些非常适合氛围编程,因为 AI 已经见过数千种实现,可以生成一个可靠的基线供你定制。
"构建一个管理用户账户的后台页面。表格包含姓名、邮箱、角色、状态和最后活跃日期列。支持任意列排序、按角色和状态筛选、分页和按姓名或邮箱搜索的搜索栏。点击行打开一个可编辑的详情抽屉。"
这是 300-500 行遵循成熟模式的代码。AI 在几秒内生成。你把时间花在业务特定的细节上——哪些字段可编辑、适用什么验证规则、停用账户时会发生什么。
UI 开发
前端开发涉及大量视觉迭代。"让这个按钮更大。改变间距。添加悬停效果。不,更微妙一些。"用氛围编程,每次视觉变更是一句话而不是一次代码编辑。反馈循环大幅缩短。
这在使用组件库如 Tailwind CSS、Shadcn UI 或 Material UI 时尤其有效,因为 AI 可以引用大量的工具类和预建模式。"添加一个带 shadow-md 和 rounded-lg 的卡片,有一个从 blue-500 到 purple-500 的渐变头部"说出来比打出这些类名更快。
学习新技术
当你使用从未用过的框架或库时,氛围编程让你立即就能产出成果。你不需要花几个小时阅读文档,只需描述你想要什么,AI 就会使用正确的 API 生成地道的代码。
"我从没用过 Drizzle ORM。创建一个博客的 schema,包含文章、作者和标签(多对多关系)。然后给我展示如何查询所有文章及其作者和标签。"
AI 生成遵循 Drizzle 约定的可工作代码。你通过阅读和修改输出来学习,而不是通过阅读文档页面。这不能替代最终深入理解该库,但它消除了冷启动问题。
氛围编程失败的场景
关键业务逻辑
决定你的产品是否正确工作的规则——定价计算、资格判定、合规检查、金融交易——不应该用氛围编程。不是因为 AI 每次都会搞错,而是因为你需要深入理解这些代码的每一行。
当客户对一笔费用提出争议时,你需要追踪计算该费用的确切逻辑。当审计员询问你如何为数据处理请求确定 GDPR 合规性时,"AI 写的"不是一个可接受的答案。关键业务逻辑要求开发者思考每个条件、每个边界情况、每个失败模式。
自己写这些代码。使用 AI 生成围绕它的测试。
复杂算法工作
具有微妙正确性要求的算法——并发数据结构、加密操作、有特定复杂度保证的图算法——不适合氛围编程。AI 可以生成在简单输入上看起来可行但在边界情况下失败的代码。这些实现的正确性依赖于通过阅读代码难以验证且在测试中容易遗漏的不变量。
性能关键路径
热点循环、内存敏感操作、实时处理——性能是首要需求而非锦上添花的代码。氛围编程的实现是正确的但很少是最优的。AI 不知道你的具体性能约束、内存预算或延迟要求,除非你明确指定,即使指定了,优化也需要当前模型处理不一致的硬件感知推理。
大型系统架构
氛围编程在组件级别有效。它不适用于系统级架构。使用消息队列还是直接 API 调用的决策、最终一致性和强一致性之间的选择、单体架构和微服务之间的权衡——这些需要理解你的团队、流量模式、运维能力和业务发展轨迹。再多的 AI 委托也无法替代架构思考。
你可以用氛围编程来实现一个架构决策。但你不能用氛围编程来做出架构决策本身。
代码库有强约定时
如果你的项目有一个成熟、一致的代码库和已建立的模式,当 AI 没有被正确配置上下文时,氛围编程实际上可能适得其反。如果没有详细的 CLAUDE.md 或等效的配置文件来描述你的约定,AI 生成的代码虽然能工作但不匹配你项目的风格、模式或抽象。
解决方法不是避免氛围编程——而是投入时间用你项目的约定配置 AI 工具。但在配置完善之前,你可能会发现花在纠正风格问题上的时间比通过委托实现节省的时间还多。
技能转变
氛围编程改变了生产力的含义。重要的技能发生了转变:
变得不那么重要
- 打字速度。 当你不打代码时就无关紧要了。
- API 记忆。 AI 知道每个库中每个函数的签名。你不需要记了。
- 语法流利度。 你仍然需要流利地阅读代码,但不需要凭记忆产出代码。
- 样板模式。 CRUD、表单处理、API 集成——你过去凭肌肉记忆实现的模式现在被委托出去了。
变得更重要
- 规格清晰度。 氛围编程输出的质量与你描述的质量成正比。学会精确描述行为,包括约束和边界情况,这是核心技能。
- 代码审查的速度和准确性。 你审查的代码比你写的更多。快速阅读代码、识别问题和评估正确性的能力至关重要。
- 架构思维。 当实现变得廉价时,关于实现什么和系统如何交互的决策成为主要成本。架构技能变得更有价值而非更少。
- 测试直觉。 知道该写哪些测试、覆盖哪些边界情况、以及如何验证生成代码的正确性成为一项核心技能。
- 领域专业知识。 理解问题领域——业务规则、用户需求、监管约束——是 AI 无法提供的。你的价值在于知道该构建什么,而不是如何构建。
令人不安的真相
一些开发者抵制氛围编程,因为它感觉像作弊,或者因为它贬低了他们花数年时间培养的技能。这种反应可以理解但适得其反。类比不是"氛围编程就像用计算器代替做长除法",更像是"氛围编程就像设计建筑而不是砌砖"。建筑师需要深入理解施工,但他们的主要贡献是设计,而不是体力劳动。
在氛围编程中蓬勃发展的开发者,是那些本来就擅长设计、架构和解决问题的人。AI 放大了这些技能。主要优势在于打字速度和语法流利度的开发者会更强烈地感受到这种转变。
入门实用建议
从低风险项目开始
不要在第一天就用氛围编程做生产功能。从内部工具、个人项目或原型开始。建立你的直觉,了解 AI 擅长什么,以及在哪里需要更多指导。
投资配置
为你的项目编写一份详尽的 CLAUDE.md 或等效配置文件。描述你的技术栈、约定、命名模式、文件组织和测试方法。你花在这上面的 30 分钟会在之后每次氛围编程会话中获得回报。
审查一切
氛围编程不是"AI 写,我发布"。而是"AI 写,我审查,我指导修改,我验证,我发布"。审查步骤不是可选的。跳过它就是你会遇到 bug、安全漏洞和你不理解的技术债务的原因——因为你没写那些代码。
保持心智模型
即使你没有写每一行代码,你也需要理解代码库。阅读生成的代码。理解架构决策。知道数据流向。如果你失去了心智模型,你就失去了有效指导 AI 的能力,最终会得到一个你无法调试、扩展或维护的代码库。
积极使用版本控制
每次成功迭代后提交。当 AI 走向错误方向(这是必然的),你可以回退到最后已知的良好状态并尝试不同的方法。没有版本控制的纪律,一次糟糕的 AI 迭代可能破坏你无法轻易恢复的好成果。
知道何时接管
氛围编程是一种模式,不是信仰。当 AI 在某件事上挣扎——经过多次尝试仍产出不正确的结果,或生成的代码感觉不对——接过来自己写。技能在于知道何时委托、何时亲自驾驭。
这种方法的未来
随着模型的改进,氛围编程会变得更好。更好的代码生成意味着更少的审查周期。更好的上下文窗口意味着 AI 能一次理解你项目的更多内容。更好的工具集成意味着 AI 可以自己测试、运行和调试其输出。
但基本动态不会改变:仍然需要有人知道该构建什么。需要有人理解用户、业务、约束和权衡。需要有人做出决定软件是否有用、正确和可维护的决策。
氛围编程将开发者的角色从实现者转变为导演。实现变得更便宜、更快。指导变得更有价值。如果你能清晰地表达在你的领域中好软件是什么样的——清晰到 AI 可以构建它——你比以往任何时候都更有生产力。
如果你无法表达,再多的 AI 工具也帮不了你。氛围必须来自某个地方,而那个地方仍然是人类对什么需要存在以及为什么存在的理解。