气氛编码

缩略图

什么是气氛编码?

气氛编码 是一种由 Andrej Karpathy 在 2024/2025 年推出的 AI 驱动的编程方法。通过气氛编码,您可以用自然语言提示描述您想要的内容,通常 大型语言模型 (LLMs) 会为您生成大部分,通常是全部的可工作代码。如果您有时间,可以查看 气氛编码的艺术,这是由 Rick Rubin 改编的,以了解更多关于 气氛编码的方式

这种新方法的一个重大优势是可访问性,因为没有编码经验的人也可以构建项目,而经验丰富的开发人员可以在完全投入之前快速原型化新想法。这对初创公司尤其有帮助。缺点是开发人员很可能无法完全理解生成的代码是如何工作的。对于小型副项目来说,这没问题,但对于生产级软件来说,这可能会导致长期问题和技术债务。

有很多工具可以使气氛编码更加顺畅。Cursor IDEClaude Code CLIGitHub CopilotLoveableReplitv0 等工具让您可以直接在环境中与 AI 进行工作,或提供专门的气氛编码接口。就我个人而言,我主要使用 Cursor IDEClaude Code CLI 来进行这些项目。

不过,有一点需要注意。这些工具和模型是需要付费的。使用传统编码,您主要是用时间来支付。而使用气氛编码,您是用钱包来支付。如果您不知道自己在做什么,您就是在用钱包和时间双重支付。此页面上的每个项目的构建成本大约在 $10$20 之间。如果您进行大量实验,这个费用会累积。我确实认为,随着这些模型的改进和效率的提高,成本最终会下降。现在,在决定气氛编码是否适合您的项目时,这是值得考虑的事情。

出于对可能性的好奇,我自己尝试了气氛编码,并制作了这个页面,通过实际项目探索其原理。我不仅在构建产品,还在测试和展示气氛编码真正能够实现的内容。这只是为了好玩,但它提供了一个关于未来编码可能是什么样子的瞥见,因为这些模型将继续改进。

无限猴子定理

作家

听说过 无限猴子定理 吗?这是一个哲学思想实验,认为如果你给无限多的猴子无限多的打字机和无限的时间,最终其中一只猴子会随机敲击键盘,产生 莎士比亚 的完整作品。

听起来很荒谬,对吧?但事情的疯狂之处在于,气氛编码有点像那样,只不过我们有的是 AI 模型,而不是猴子;有的是编程语言,而不是打字机;而我们得到的是可工作的软件,而不是莎士比亚的作品。

想想看。大型语言模型是在数十亿行代码、模式和示例上进行训练的。当您给 LLM 一个提示时,它实际上并不是像人类开发人员那样逐步“思考”您的问题。相反,它是根据在训练期间学到的模式预测下一个最可能的标记。它本质上是通过生成基于统计上看似正确的代码来进行有根据的猜测。

而且,往往它的确有效。模型输出的代码实际上可以编译、运行并解决您的问题。不是通过理解,而是通过在绝对大规模下的概率模式匹配。就像宇宙中最复杂的随机文本生成器找到了“正确”的答案。但这里的区别在于速度。那些猴子需要真正的无限。您的 AI?几秒钟或几分钟就能完成。

因此,从某种意义上说,当您使用气氛编码时,您是在利用数百万行代码模式,提炼成一个模型,以生成解决方案。这不是有意识的问题解决,而是统计魔法。这正是它如此强大的原因,诚然,理解代码实际做了什么仍然很重要。

问题比答案更重要

这里有一个重要的事情,常常被忽视。气氛编码并不是为了得到任何答案,而是为了提出正确的问题。想想 银河系漫游指南 中的 深思熟虑超级计算机。它花费了数百万年计算生命、宇宙和一切的终极问题的答案,结果只给了你数字 42。这个答案在技术上是正确的,但毫无用处,因为真正的问题是弄清楚首先要问什么问题。

气氛编码的工作方式也是如此。您的提示是关键,但上下文管理同样重要。模糊的提示会给您模糊的代码,如果您没有提供正确的文件、文档或示例作为上下文,模型将无法理解您实际需要什么。如果您是一个了解编码、架构和系统设计的人,您可以编写详细的提示并策划正确的上下文,以引导 LLM 朝着优秀的解决方案前进。但如果您不知道该问什么或提供什么上下文,AI 也不会知道。

这实际上就是为什么气氛编码对经验丰富的开发人员如此强大。我们知道好的代码是什么样的,我们理解陷阱,并且可以编写提示来引导模型远离这些陷阱。对于没有技术背景的初学者来说,这就成为了一个真正的限制。您可能会得到可工作的代码,但如果不理解出错的原因或接下来该问什么,您就会陷入困境。

当气氛编码不够时

最新的 AI 模型令人印象深刻,但它们并不是灵丹妙药。气氛编码可以在生产中工作,但前提是您对此认真对待。您需要强大的单元测试。您需要明确的真相来源,以了解您的系统应该做什么。您需要在事情崩溃或偏离时进行捕捉。您需要 黑客思维。跳出框框,尝试以意想不到的方式破坏您的气氛编码项目。您有没有考虑过哪些边缘情况?有什么安全漏洞可能被人利用?这就是区分仅仅能工作的代码和真正稳健的代码的地方。

不过,有一点需要注意。AI 并不拥有您。您拥有 AI。不要仅仅接受它生成的内容。审查它。测试它。破坏它。老实说,对于您代码库的某些部分,您需要回到传统编码。锁定,深入思考,自己编写。气氛编码加快了进程,但在重要时刻并不能替代真正的编程。

我还学到了一件事。有时您只需要结束与 AI 的会话并开始新的会话。随着您的对话历史越来越长,模型的性能会下降。它会犯更多错误,生成的代码会变得不那么连贯,并且开始更频繁地出现幻觉。如果您不及时发现并停止,这些错误会相互叠加,使情况逐渐恶化。这就像试图阅读一份被复印了一遍又一遍的文件。重新开始可以保持内容的清晰和锐利。

气氛编码项目

以下是两个项目,楼梯 (repo) 和 超越 (repo),我使用气氛编码的方法构建的。大部分是从提示生成的,手动工作仅限于提供上下文、调试和部署到 GitHub Pages。它们是有趣的静态网站实验,展示了当您通过气氛编码将创意与代码结合时可能实现的内容。两个项目都托管在 GitHub

查看项目

楼梯

超越