LLM优先的氛围编程
多年来,软件工程师一直将集成开发环境(IDE)作为编写和调试代码的主要场所。您的IDE应该成为合作伙伴,通过预测您的需求、自动纠正错误以及根据简单提示生成复杂代码来帮助您。“氛围编程"正在迅速改变软件工程领域,其核心理念是LLM优先开发。
前特斯拉AI总监安德烈·卡帕西提出了氛围编程的概念。他开创了这种工作方式,让开发人员参与LLM代码生成[1]。开发人员现在需要充当高级架构师,使用自然语言提示指导AI系统,同时致力于产品愿景的开发。卡帕西表示,他通过视觉审视项目和Web应用、发出语音命令、运行系统并复制代码来构建项目,所有这些都能产生功能性结果[1]。
传统的IDE优先开发方法要求开发人员编写每一行代码,而氛围编程则不然。氛围编程从根本上改变了软件开发,因为它允许开发人员使用AI工具创建完全交互式的开发环境。文章表明这一趋势不仅仅是昙花一现,因为它改变了软件的构建和维护方式。
为什么选择LLM优先开发?
LLM优先开发的迅速崛起归因于开发人员的巨大生产力提升和软件工程认知需求的彻底改变。氛围编程的最大优势在于它简化了开发工作,使工程师能够专注于更具创造性和战略性的任务。
前所未有的生产力提升
开发人员采用LLM优先开发的主要动机是其在工作中促进无与伦比的速度和效率的能力。根据[2],在真实商业环境中使用AI编码助手可以将软件开发人员的生产力提高26%。GitHub Copilot是目前最出色的工具之一,研究表明它可以将编码时间减半,帮助团队更快完成项目[3]。埃森哲研究发现,AI辅助的拉取请求成功率达到84%,这表明AI生成的代码符合人类质量标准[4]。
该系统通过执行重复操作(包括单元测试编写和数据模型生成)来实现生产力提升。关注点分离使开发人员能够从事复杂的软件工程活动,包括系统设计和架构。
认知卸载与关注高级目标
LLM优先开发的编程实践为开发人员引入了新的工作思维方式。通过AI辅助处理语法和样板代码以及复杂算法,开发人员可以将脑力重新导向高级目标。正如《超越氛围编程》作者Addy Osmani所说:“在氛围编程中,您利用强大的LLM作为编码伙伴,让它们处理代码生成的重任,以便您可以专注于更高级的目标”[5]。
这种新方法让开发人员能够从架构角度思考,专注于需要存在哪些功能以及为什么这些功能至关重要,而不是如何构建它们。这种结果带来了增强的开发过程,让开发人员在维护原始设计目标的同时指导AI系统进行开发。
上下文感知工作流和减少样板代码
当前一代的LLM驱动工具提供了更好的上下文理解能力,因为它们研究现有代码库和库,并理解开发人员目标。该工具使开发人员能够生成既符合语法要求又符合项目特定风格和约定标准的代码。该系统利用上下文感知生成代码,这与之前生成不相关通用代码的代码生成工具截然不同。
对周围代码的分析使LLM能够减少开发人员必须创建的样板代码数量。构建新组件、设计API端点和数据访问层的过程需要精确关注细节。这种结果通过优化的开发过程使开发人员能够更高效地工作,从而实现从概念到执行的快速转换。
氛围编程的架构
氛围编程的核心是由一种新架构实现的,该架构将LLM置于开发过程的中心。LLM优先架构作为一个完整系统,在整个开发过程中为开发人员提供特定上下文的协助。开发管道需要各种基本元素协同工作,建立开发人员可以轻松导航的高效开发过程。
两种工作流程的比较
通过比较原始IDE优先开发过程与新的LLM优先方法,架构变化变得明显。在标准开发过程中,开发人员担任主要代码编写者角色,而IDE通过语法高亮、代码补全和调试工具等功能提供支持。在LLM优先工作流中,开发人员充当监督者,指导LLM进行代码生成、重构和调试过程。
图1:IDE优先与LLM优先工作流程对比
LLM优先架构的核心组件
LLM优先架构不仅仅包含提示和响应。该系统由多个协同工作的先进元素组成。
大型语言模型: 系统基础包含大型语言模型(LLM),它们接受自然语言数据以生成代码结果。氛围编程背后的核心技术通过OpenAI的GPT-4、Google的Gemini和Anthropic的Claude等模型运行。
检索增强生成: RAG使LLM能够访问现有代码库以生成上下文感知的响应。RAG系统通过RAG技术检索项目信息,提取代码片段、文档和其他相关数据用作LLM的上下文。
上下文窗口: LLM一次可以考虑的信息量受其上下文窗口限制。LLM优先应用程序的开发需要管理上下文窗口的工具,以便在特定时间提供合适的模型输入。
记忆: LLM优先系统随时间跟踪开发人员意图的能力需要其记忆功能来维持连贯的对话。系统允许通过基本聊天日志和高级向量数据库进行数据存储,这些数据库存储项目数据和开发人员偏好信息。
反馈循环: 系统需要反馈循环来处理反馈数据,从而产生更准确的结果和正确的代码。反馈循环系统让开发人员发现并修复LLM错误,这使得系统在每个新的开发周期中都能更好地工作。
关键组件和框架
新一代框架和工具使开发人员能够更轻松地制作和部署LLM驱动的应用程序,这得益于氛围编程提供的简单方法。这些框架设置了基本构建块,允许开发人员创建能够处理复杂命令、与现有代码配合使用并与其他代理协作解决棘手问题的先进AI系统。
代理框架:氛围编程的引擎
代理框架是在LLM优先开发趋势中创建智能代理的最重要部分。这些框架为开发人员提供了连接LLM所需的基本工具,因此他们可以将更多时间花在应用程序的逻辑和工作流程上。AutoGen和Microsoft的Semantic Kernel是开发人员用来创建代理的两个领先框架。
Microsoft Semantic Kernel:面向C#和Python开发人员
Semantic Kernel是一个轻量级开源SDK,使开发人员能够轻松将LLM添加到他们的C#和Python应用程序中[6]。该平台允许开发人员通过其提示管理、工作流定义和服务连接设置功能来创建AI代理。Semantic Kernel的主要优势是开发人员可以将本机代码与LLM提示结合起来。该系统允许开发人员构建能够从新情况中学习的先进AI代理。
您可以使用此Python代码通过Semantic Kernel创建一个简单的文本摘要代理。
|
|
Microsoft AutoGen:用于多代理系统
AutoGen是一个系统框架,使多个AI代理能够协作解决复杂问题[7]。该框架通过其高级抽象使开发人员能够创建用于代理对话的先进工作流,支持复杂的任务执行、规划和推理能力。AutoGen最适用于需要分布式工作负载的任务,包括代码生成、测试和文档编写。
以下是您可以使用AutoGen创建用于编写和执行代码的简单双代理系统的示例:
|
|
向量数据库:长期记忆的关键
LLM优先系统仍然可以存储长期记忆信息,这使它们能够根据长对话的上下文回答问题。向量数据库,如Pinecone、Chroma和Weaviate,是解决这个问题的答案。向量数据库是存储数据的系统,可以检索LLM在嵌入输出时创建的高维信息。向量数据库作为LLM优先系统的存储库,用于检索项目工件、代码和文档嵌入,从而促进提供准确的上下文特定响应。
提示编排:指导AI的艺术
氛围编程最关键的方面是制作和使用提示。这些提示帮助LLM。这个过程不仅仅是为LLM编写简单的问题。您还必须对提示进行分块并提供上下文,然后提示将根据响应方式发生变化。开发人员可以使用带有AutoGen工具的Semantic Kernel构建利用大型语言模型(LLM)的应用程序。这些工具使开发人员能够创建符合严格可靠性要求的复杂应用程序。
优势与机遇
向LLM优先开发的转变不仅仅代表编码方法的改变,因为它为创新、协作工作和创造性开发带来了新的可能性。通过氛围编程,AI接管了机械的软件开发任务,使工程师能够专注于他们解决问题和产品开发的核心能力。
更快的原型设计和创新周期
氛围编程的主要优势在于它允许开发人员以前所未有的速度创建原型。正如安德烈·卡帕西指出的,LLM生成代码的速度"比最熟练的人类程序员快一个数量级”[1]。这种快速的开发速度使团队能够评估新想法、增强设计并在项目结束前收集用户反馈。这种结果创建了一个敏捷的开发环境,使团队能够尝试新方法,同时从快速失败中学习。
减少语法错误和样板代码
LLM在处理编码中繁琐且容易出错的方面(如语法和样板代码)表现出色。由LLM生成的代码遵循项目标准并保持正确的语法,从而减少了开发人员需要解决的错误和缺陷。代码重构提高了代码质量,使开发人员能够从事最复杂和最有趣的项目。
与AI作为结对程序员的协作编码
氛围编程将单独的编码行为转变为与AI的协作伙伴关系。LLM充当无限的结对编程助手,持续提供建议,同时生成代码和检测错误。这种团队合作方法为初级开发人员提供了最佳结果,因为它使他们能够从AI系统获得即时反馈,同时学习其提供的解决方案。但即使是高级开发人员也可以从拥有一个AI伙伴中受益,可以与其交流想法并处理更平凡的编码方面。
软件开发的民主化
也许氛围编程最深刻的机会是其 democratize 软件开发的潜力。正如Simon Willison所说:“每个人都应该有能力通过计算机自动化繁琐的任务”[8]。通过降低编程的入门门槛,氛围编程赋予新一代创作者构建自己的定制工具和应用程序的能力。这可能导致创新的寒武纪大爆发,因为来自各行各业的人们被赋予使用代码解决自己问题的能力。
挑战与风险
氛围编程的实践面临多重障碍,阻碍了其全面实施。新的强大技术需要开发人员谨慎处理,同时在首先构建应用程序时了解其完整的风险集合。组织需要解决三个基本问题来实现这一新范式,因为LLM幻觉表现为微小但重要的问题,但安全漏洞和合规性违规问题更为明显。
幻觉的幽灵
当LLM创建逼真但完全不准确的信息时,它们的主要弱点变得明显,这被称为"幻觉"。代码生成系统通过多种症状显示这个问题,包括推荐不存在的软件包和生成包含微小逻辑错误的代码[9]。虽然一些幻觉(如不存在的函数调用)很容易被编译器捕获,但其他幻觉可能更加隐蔽。研究显示,LLM生成的代码带有隐藏的安全漏洞,使应用程序容易受到攻击[10]。
安全:风险的新前沿
组织需要认识到在软件开发操作中开始使用LLM时发生的所有安全风险。这些包括:
提示注入: 系统面临提示注入攻击的风险,因为攻击者可以创建特定的输入提示,导致LLM产生有害或易受攻击的代码。
数据泄漏: LLM面临数据泄漏风险,因为它处理机密数据,这些数据可能通过输出代码泄露。
供应链攻击: 与任何软件开发过程一样,存在供应链攻击的风险,即通过受损的依赖项将恶意代码引入开发过程。
组织必须实施三个基本的安全最佳实践来降低这些风险,包括输入验证、输出清理和对LLM访问敏感信息的适当控制。
版本漂移和维护挑战
氛围编程的主要问题是AI生成的代码可能由于版本漂移而落后于主代码库。当LLM不知道代码的最新更改,或者开发人员在未更新LLM上下文的情况下对AI生成的代码进行更改时,可能会发生这种情况。随着时间的推移,人工编写代码与AI生成代码的集成产生了一个难以理解和维护的复杂系统,因为两种代码类型无法正确合并。
AI时代的合规性与治理
在受监管行业工作的组织在部署AI生成的代码时需要处理新的合规性和治理事项。您使用什么方法来验证AI生成的代码保持与人类编写代码相同质量、安全性和可靠性水平?您如何跟踪代码来源并确保其符合许可协议?这些是复杂的问题,需要一套新的工具和流程来管理和治理AI在软件开发中的使用。
图2:企业LLM开发的防护架构
案例研究和示例
氛围编程的实施是真实世界的实践,不同规模的多个组织已经开始使用。LLM优先开发方法的早期用户已经开始从这种方法中受益,这使他们能够加速创新、提高生产力并取得市场领导地位。
企业:加速内部工具开发
大型企业使用LLM优先开发来加速其内部工具和应用程序的开发过程。通过AI自动化重复编码任务,这些组织能够以更快的速度创建和部署新工具,这使他们的开发人员能够从事重要的战略项目。一家大型金融服务组织使用LLM驱动的代理创建了一个合规性监控工具,使用传统方法开发该工具需要的时间要长得多。
初创公司:获得竞争优势
初创公司需要以最大速度运营,因为这是它们的主要竞争优势。使用氛围编程的小型敏捷团队的快速开发速度使它们能够在更大的竞争对手之前生产产品。AI代码生成能力使初创公司能够专注于市场颠覆和创新,因为系统执行复杂的编码操作。一家小型健康科技初创公司通过LLM优先开发构建了先进的患者管理系统,只有两名开发人员参与该项目。
开源:协作的新前沿
开源社区现在通过AI辅助开发多个新项目来支持氛围编程。开源运动通过这个系统取得进展,它允许开发人员构建新工具并在不同项目上协作。AI技术通过承担基本编码责任,使开源贡献者能够专注于创造性和战略性任务,从而产生增强的开源生态系统。
氛围编程的最佳实践
组织在引入新技术时需要遵循既定的最佳实践,以成功实施。氛围编程的新范式尚未完全成熟,但组织可以使用既定原则来处理其困难,同时实现其优势。
防护栏和评估:安全性和质量的重要性
AI生成的代码需要保护措施和评估协议来保证安全性和质量,因为幻觉和安全漏洞构成重大危险。这包括:
输入验证: 所有提示都需要经过清理和验证程序,以防止发生提示注入攻击。
输出验证: 系统通过扫描所有AI生成的代码来执行输出验证,以检测安全漏洞、合规性违规和其他潜在问题。
性能评估: LLM需要持续的性能评估,以确认其生成代码的输出质量。
人在回路:开发人员作为监督者
氛围编程的过程允许AI指导过程,但这并不意味着您应该放弃控制。开发人员充当监督者,维护对AI系统的监督并验证其输出,以保证最终产品满足质量和可靠性要求。正如Simon Willison指出的,AI辅助编程的黄金法则是您不应该提交任何无法向他人解释的代码[8]。
开发人员要点
拥抱转变: 采用氛围编程代表了软件开发的彻底转变,因为它引入了一种完全不同的编码方法。在过渡到这种新方法时,开始使用LLM优先工作流。
从小处着手: 从有限的范围开始,因为试图一次处理所有事情会让人不知所措。从风险最小的基本项目开始,培养您的直觉并了解您可以实现的边界。
关注基础: 软件工程的核心原则对开发人员仍然至关重要,因为氛围编程系统执行自动化编码任务。
成为终身学习者: AI技术继续以无与伦比的速度进步。通过寻求知识并拥抱新想法和创造性工作方法来保持好奇心。
未来展望
氛围编程趋势标志着软件工程将永远不会相同,因为它向我代表的是:这是未来编程的去向。LLM发展的结果将是一个新的栖息地,人类和AI能力在其中协作生产工程化系统,使工作更具生产力和创造性。
代理式开发环境:未来的IDE
未来的IDE不仅仅是我们编写和调试实现代码的外壳。它将是一个代理式开发生态系统——开发人员和一群AI代理创建、操作和交付软件。其方法将是派出许多已经擅长某些事情(如构建界面或管理数据库)的代理来解决困难问题。开发人员将成为团队中的跑卫,在关键规划调用中领导玩家。
图3:代理编排的编码循环
流状态编码:更具创造性和生产力的工作方式
氛围编程让AI处理标准编码任务,这有助于开发人员提出新想法并更快地工作。因为没有语法规则或样板代码,开发人员可以达到"流"状态,因为他们可以完全专注于创造性和解决问题。软件开发的未来将发生巨大变化,因为开发人员将能够制作获得最佳结果的革命性产品。
结论:不仅仅是炒作
软件开发过程通过氛围编程经历了彻底的转变,因为它引入了编码和代码管理的新方法。通过将LLM置于这一新趋势的中心位置,开发过程变得更加高效、创造性和创新性。任何需要大量权力的新技术都需要完整的风险评估和正确的实施程序才能开始运营。
通往完全代理式开发环境的旅程仍处于早期阶段,但前进方向是明确的。软件工程领域将演变为一种协作实践,将人类开发人员与人工智能系统聚集在一起,以创建创新的未来产品。当前时间是开发人员创造新工作方法的机会,而不是专注于变得过时。
参考文献
[1] A. Karpathy, “Vibe Coding,” X, 2025年2月6日。[在线]。可用:https://twitter.com/karpathy/status/18868A7B
[2] “新研究揭示AI编码助手将开发人员生产力提高26%,” IT Revolution。[在线]。可用:https://itrevolution.com/articles/new-research-reveals-ai-coding-assistants-boost-developer-productivity-by-26-what-it-leaders-need-to-know/
[3] S. Thummala, “AI驱动的编码助手的崛起:像GitHub Copilot这样的工具如何改变软件,” Medium。[在线]。可用:https://medium.com/@sreekanth.thummala/the-rise-of-ai-powered-coding-assistants-how-tools-like-github-copilot-are-changing-software-0e31c34490e2
[4] “Github Copilot采用趋势:来自真实数据的见解,” Opsera.io。[在线]。可用:https://www.opsera.io/blodg/github-copilot-adoption-trends-insights-from-real-data
[5] G. Orosz, “作为软件工程师的氛围编程,” The Pragmatic Engineer, 2025年6月3日。[在线]。可用:https://newsletter.pragmaticengineer.com/p/vibe-coding-as-a-software-engineer
[6] “Semantic Kernel介绍,” Microsoft Learn, 2024年6月24日。[在线]。可用:https://learn.microsoft.com/en-us/semantic-kernel/overview/
[7] “AutoGen,” Microsoft, 2025。[在线]。可用:https://microsoft.github.io/autogen/stable//index.html
[8] S. Willison, “并非所有AI辅助编程都是氛围编程(但氛围编程很棒),” Simon Willison的博客, 2025年3月19日。[在线]。可用:https://simonwillison.net/2025/Mar/19/vibe-coding/
[9] J. Spracklen, “包幻觉:LLM如何发明包,” USENIX, 2025。[在线]。可用:https://www.usenix.org/publications/loginonline/we-have-package-you-comprehensive-analysis-package-hallucinations-code
[10] F. Liu等人, “探索和评估LLM驱动的代码生成中的幻觉,” arXiv, 2024。[在线]。可用:https://arxiv.org/abs/2404.00971