氛围编程
什么是氛围编程?
氛围编程 是由 安德烈·卡尔帕西 在 2024/2025 年提出的一种由人工智能驱动的编程方法。使用氛围编程,你可以用自然语言提示描述你想要的内容,通常由大型语言模型(LLMs) 为你生成大部分,甚至全部可工作的代码。如果你有时间,可以看看由 里克·鲁宾 改编的 氛围编程之道 来更多了解**氛围编程之道**。
这项新方法的一个重要优点是可及性,因为没有编码经验的人也可以构建项目,而有经验的开发者可以在完全投入之前快速原型化新想法。这对初创公司尤其有帮助。缺点是开发者很可能无法完全理解生成代码的工作原理。对于小型副业项目,这通常没问题,但对于生产级别的软件却可能导致长期的问题和技术债务。
现在有很多工具可以让氛围编程更顺畅。Cursor 集成开发环境、Claude Code 命令行工具、GitHub 副驾驶、Loveable 可爱工具、Replit 平台、v0 等等让你可以直接在你的环境中与 AI 协作,或提供专门的氛围编程界面。就我个人而言,这些项目我主要使用 Cursor 集成开发环境 和 Claude Code 命令行工具。
不过有一点需要注意。这些工具和模型是需要付费的。传统编程时,你主要付出的代价是时间。使用氛围编程时,你付出的则是钱包。如果你不知道自己在做什么,你付出的可能既有钱包也有时间。本页上的每个项目构建费用大约在 $10 到 $20 之间。如果你经常实验,这些费用会累积。我确实认为随着这些模型的改进和效率提升,成本最终会下降。目前,在决定是否使用氛围编程来完成你的项目时,这是一个值得考虑的因素。
出于好奇我亲自尝试了氛围编程,并制作了此页面通过实际项目来探索该原理。我不仅仅是在构建产品,我也在测试和展示氛围编程真正的能力。这纯粹是为了好玩,但它提供了一个随着这些模型持续改进,未来编码可能呈现的样貌的前瞻。
无限猴子定理
听说过无限猴子定理吗?这是一个哲学思想实验,说的是如果你给无限只猴子无限台打字机和无限的时间,最终它们中的一只会通过随机敲击键盘写出莎士比亚 的全集。
听起来很荒谬,对吧?但疯狂的地方在于,氛围编程有点像那样,只不过猴子被 AI 模型取代,打字机被编程语言取代,而莎士比亚变成了可工作的软件。
想想看。大型语言模型经过数十亿行代码、模式和示例的训练。当你给 LLM 一个提示时,它并不是像人类开发者那样逐步“思考”你的问题。相反,它是在根据训练中学到的模式预测下一个最有可能的标记。它本质上是在基于统计上看起来正确的东西生成代码,做出有根据的猜测。
而且不知怎的,它多数情况下都能奏效。模型输出的代码实际上可以编译、运行并解决你的问题。不是通过理解,而是通过在极大规模上的概率模式匹配。这就像宇宙中最复杂的随机文本生成器找到了“正确”的答案。但不同之处在于速度。那些猴子需要真正的无限。而你的 AI?几秒钟或几分钟就能到达目的地。
所以在某种意义上,当你使用氛围编程时,你是在利用数百万行代码模式,被蒸馏进模型,来生成解决方案。这不是有意识的问题解决,而是统计学的魔法。这也正是它如此强大,并且坦率地说,为什么理解代码实际做了什么仍然很重要的原因。
问题比答案更重要
这里有件经常被忽视的重要事情。氛围编程不是关于得到任何答案,而是关于提出正确的问题。想想银河系漫游指南 中的 深思超算(Deep Thought)。它花了数百万年计算“生命、宇宙以及一切”的终极问题的答案,最后给出了数字 42。答案在技术上是正确的,但毫无用处,因为真正的问题是首先要弄清楚应该问什么问题。
氛围编程的工作原理也是这样。你的提示决定一切,但上下文管理同样重要。模糊的提示会给你模糊的代码,如果你不提供正确的文件、文档或示例作为上下文,模型就无法理解你真正需要什么。如果你是懂得编码、架构和系统设计的人,你可以编写详细的提示并策划正确的上下文,引导大型语言模型 朝着优秀的解决方案前进。但如果你不知道该请求什么或该提供什么上下文,AI 也不会知道。
这其实就是为什么氛围编程对有经验的开发者如此强大的原因。我们知道什么是好的代码,理解可能的陷阱,并能编写提示将模型引导远离这些陷阱。对于没有技术背景的初学者来说,这就成为了一个真正的限制。你可能会得到可运行的代码,但如果不了解哪里出错或下一步该问什么,你就会陷入困境。
当氛围编程不够时
最新的 AI 模型很令人印象深刻,但它们并非万能。氛围编程可以在生产环境中使用,但前提是你要认真对待。你需要健全的单元测试。你需要明确的系统行为的真实来源。你需要发现何时出现故障或发生漂移。你还需要具备黑客心态。跳出框架去思考,并尝试以意想不到的方式去破坏你用氛围编程做出的项目。你还没考虑到哪些边缘情况?有人可能会利用哪些安全漏洞?这些正是把仅仅能运行的代码和真正健壮的代码区分开的地方。
不过有一点要记住。AI 不是你的主人。你才是 AI 的主人。不要只是接受它生成的内容。审查它。测试它。试图打破它。坦率地说,对于代码库的某些部分,你需要回到老式编程方式。集中精力,深思熟虑,自己编写那些关键部分。氛围编程能加速开发,但在关键时刻它不能替代真正的编程。
我还学到另一点。有时候你需要结束与 AI 的一个会话,重新开始一个新的会话。随着对话历史越来越长,模型的表现会下降。它会犯更多错误,生成的代码连贯性降低,开始更频繁地产生幻觉。如果你不及时注意并停止,会话中的这些错误会相互叠加,情况会逐步恶化。这就像试图阅读被反复复印的文档。重新开始能让内容保持清晰和精准。
氛围编程项目
下面是我使用氛围编程方法构建的两个项目,楼梯(仓库)和超验(仓库)。大部分由提示生成,手动工作主要限于提供上下文、调试和部署到 GitHub Pages。它们是有趣的静态站点实验,展示了当你将创意与代码通过氛围编程结合时能实现的可能性。两个项目都托管在 GitHub。