氛围编码 vs. 代理编码:代理式AI的基础与实践启示
作者: Ranjan Sapkota, Konstantinos I. Roumeliotis, Manoj Karkee
发表时间: 2025-05-26
摘要
本综述全面分析了人工智能辅助软件开发中的两种新兴范式:氛围编码(vibe coding)与代理编码(agentic coding)。尽管两者都利用大语言模型(LLM),它们在自主性、架构设计以及开发者的角色上存在根本差异。氛围编码强调以人为中心的直觉式交互,通过基于提示(prompt)的对话式工作流支持构思、实验和创意探索。相比之下,代理编码能够通过目标驱动的代理实现自主软件开发,这些代理能够在最小人工干预下规划、执行、测试和迭代任务。我们提出了一套详细的分类体系,涵盖概念基础、执行模型、反馈循环、安全机制、调试策略以及实际工具生态系统。通过对比工作流分析和20个详细用例,我们展示了氛围系统如何在早期原型设计和教育领域发挥作用,而代理系统则在企业级自动化、代码库重构和CI/CD集成中表现出色。我们进一步探讨了混合架构中的新兴趋势,即自然语言界面与自主执行流水线相结合。最后,我们阐述了代理式AI的未来路线图,概述了构建可信、可解释和协作系统所需的基础设施。我们的研究结果表明,成功的AI软件工程将不依赖于选择某一范式,而是要在以人为中心的统一开发生命周期中协调两者的优势。
全文
Ranjan Sapkota‡, Konstantinos I. Roumeliotis†, Manoj Karkee‡
*康奈尔大学,生物与环境工程系,美国
†伯罗奔尼撒大学,信息与电信系,特里波利,希腊
‡通讯作者:rs2672@cornell.edu, mk2684@cornell.edu
摘要——本文对人工智能辅助软件开发中的两种新兴范式:Vibe Coding(氛围编码)和Agentic Coding(代理式编码)进行了全面分析。尽管两者都依赖于大语言模型(LLMs),但在自主性、架构设计以及开发者角色方面存在根本性差异。Vibe Coding强调通过基于提示的对话工作流实现直观的人机互动,支持构思、实验和创意探索。相比之下,Agentic Coding通过目标驱动的代理实现自主软件开发,这些代理能够在最少人工干预的情况下规划、执行、测试和迭代任务。我们提出了一种详细的分类体系,涵盖概念基础、执行模型、反馈循环、安全机制、调试策略以及实际工具生态。通过对比工作流分析和20个详细用例,我们展示了氛围系统在早期原型设计和教育领域的优势,而代理系统则在企业级自动化、代码库重构和CI/CD集成方面表现出色。我们进一步探讨了混合架构的新兴趋势,其中自然语言界面与自主执行管线相结合。最后,我们提出了Agentic AI的未来路线图,概述了构建可信、可解释和协作系统所需的基础设施。我们的研究结果表明,成功的AI软件工程将不依赖于选择单一范式,而是在统一、以人为中心的开发生命周期中协调它们的优势。
索引词——Agentic AI(代理式AI),Vibe Coding(氛围编码),代码生成,自主代理,开发者工具,软件工程,大语言模型(LLMs),AI代码助手。
I. 引言
“Vibe Coding(氛围编码)”指的是一种新颖、新兴的软件开发模式,其中人类程序员(1a)不再作为代码的直接实现者,而是作为高级协调者,通过迭代提示和战略指导与大语言模型(LLMs)协作[1]。该术语由Andrej Karpathy提出(Andrej Karpathy WikiPage,1,2),体现了思维和方法论的转变:开发者通过自然语言指令、概念概述和逐步优化来描述期望的结果(即“氛围”),而不是通过句法细节来指定逻辑。传统范式强调对语法[2]–[4]和底层操作[5]–[7]的掌握,而Vibe Coding则将焦点重新转向意图描述、架构愿景和交互式调试[1]。其核心融合了提示工程、敏捷设计和人机共创的原则,同时将大部分语言负担抽象到LLM上[8]。
这种由指导、AI响应、人类评估和纠正反馈组成的交互循环产生了一个动态的编码过程,既富有表现力、生成性,又具有即兴性。它引发了一个问题:软件工程行为能否变得更加直观、协作、与人类推理相一致,而不仅仅是形式逻辑到文本的转录?Vibe Coding对此给出了肯定回答,提出了人类思维与生成机器之间一种新的符号契约。
Vibe Coding的兴起与基础模型的快速发展以及基于LLM的开发平台(如ChatGPT [9]、GitHub Copilot、Claude、Gemini和Cody)的日益普及密切相关。这些工具使开发者能够用自然语言(NL)描述任务,生成代码片段,调试逻辑,甚至通过多模态输入(如图像或文档)生成整个应用程序。因此,Vibe Coding代表了一种范式转变:从书写代码转向指导代码生成;从手动调试转向协作式、AI辅助的修正。
(a)
(b)
图1:俯视图展示了(a)Vibe Coding(氛围编码)与(b)Agentic Coding(代理式编码)的对比说明。在(a)中,人类开发者使用自然语言指导代码生成,随后进行手动测试;在(b)中,AI代理在执行环境中执行自主行动,实现独立测试。这突出了两种范式在输入模态、执行自主性和测试工作流方面的关键差异。
这一指导、AI响应、人类评估和纠正反馈的交互循环产生了一个动态的编码过程,既富有表现力、生成性,又具有即兴性。它引发了一个问题:软件工程行为能否变得更加直观、协作、与人类推理相一致,而不仅仅是形式逻辑到文本的转录?Vibe Coding试图给出肯定答案,提出了一种人类思维与生成机器之间新的符号契约。
Vibe Coding的兴起与基础模型的快速进步以及基于LLM的开发平台(如ChatGPT [9]、GitHub Copilot、Claude、Gemini和Cody)的日益普及相平行。这些工具使得开发者能够用自然语言(NL)描述任务,生成代码片段,调试逻辑,甚至通过多模态输入(如图像或文档)生成整个应用程序。因此,Vibe Coding代表了一种范式转变:从书写代码转向指导代码生成;从手动调试转向协作式、AI辅助的修正。
arXiv:2505.19443v1 [cs.SE] 2025年5月26日
标题:Vibe Coding 与 Agentic Coding:Agentic AI 的基础与实践意义
Replit、Replit AI 和 Cursor。传统软件工程强调严格的语法[10]-[12]、算法结构[13],[14]和确定性逻辑[15],[16]。相比之下,现在 LLM(大语言模型)允许开发者使用自然语言生成连贯且具有上下文感知的代码,将代码创作转变为与机器的对话[17],[18]。Karpathy关于“拥抱指数级增长”的概念反映了这种范式转变——规模、抽象和表现力正在重新定义编程实践(Andrej Karpathy, Notion)。
虽然 Vibe Coding(氛围编码)代表了开发人员生产力和人机交互的飞跃,但 Agentic Coding(自主编码)则标志着 AI 辅助编程更高级、更自主的进化。其核心在于,Agentic Coding(图1b)基于 Agentic AI 系统的部署——这些软件代理能够独立解释高层目标、将任务分解为子任务、规划执行策略,并根据实时反馈和结果调整行为[19],[20]。与 Vibe Coding 的提示-响应动态不同,Agentic Coding 最大限度地减少了持续人工监督的需求。它引入了一种范式,其中 AI 代理可以发起行动、访问工具和 API、检索和处理外部数据,并通过自我评估循环迭代改进输出。这些代理表现出代理(agency)的标志性能力,包括意向性、远见和适应性,这与认知系统和通用人工智能研究中提出的定义相一致。这种自主性使得 Agentic Coding 系统能够处理复杂的多步骤工作流,使其适用于流程自动化、业务运营以及动态、数据驱动的环境。在架构上,Agentic Coding 采用强化学习和模块化规划[21],通常整合专门的子代理来协作完成更广泛的任务[22]。与 Vibe Coding 注重表现力和流畅性不同,Agentic Coding 面向结果、具有韧性且自主驱动。如果说 Vibe Coding 为开发者配备了一位高速副驾驶,那么 Agentic Coding 则赋予他们一位能够独立驾驶飞机的智能协作者。这种区别不仅凸显了工具上的差异,更体现了对软件编写、执行和演进方式的根本性重新思考。
理解 Vibe Coding 与 Agentic Coding 之间的区别对于驾驭 AI 辅助软件开发的未来格局至关重要。这些范式不仅在其技术机制上有所不同,而且在对人类开发者的角色、代理(agency)的所在以及编码过程中的控制本质的基本假设上也存在差异。Vibe Coding 维持了一种以人为中心的模式,开发者是全神贯注的指挥者,引导 AI 的输出——这种模式非常适合创意构思、探索性开发和快速迭代。另一方面,Agentic Coding 引入 AI 代理作为半自主协作者,将人类角色转变为定义目标和评估结果的监督者。这种转变具有深远影响:它重新配置了工作流程,挑战了传统的作者身份和问责制概念,并需要新的界面来监控、调试以及使代理行为与人类意图保持一致。此外,Agentic 系统的日益普及引发了对在极少人工监督下生成或管理的软件的安全性、可靠性和可信度的关键问题。
随着组织、开发者和研究人员接受这些技术,对每种范式的边界、可供性和用例的动态理解变得至关重要。通过开发 Vibe Coding 和 Agentic Coding 的形式化分类法——正如本文所旨在做到的——我们不仅能描绘 AI 在编程中的演变,还能为更好的工具、更清晰的期望以及当前和未来系统中更强大的人机协作奠定基础。
二、概念基础
A. Vibe Coding:直觉驱动、以开发者为中心的代码生成
Vibe Coding,这一术语由 Andrej Karpathy 推广,描述了一种以开发者对 LLM 的直观意图表达为中心的软件开发方法论,LLM 随后充当高度响应的副驾驶来生成代码。“氛围”(vibe)指的是期望的结果、功能,甚至软件组件的美学感受,开发者通常通过自然语言传达这些,由 LLM 转换为可执行代码。这一范式通过抽象大量语法细节和样板代码,从根本上改变了传统的编码过程,使开发者能够专注于高层设计和快速迭代。
1) Vibe Coding 的符号学:其核心在于,Vibe Coding 在编程中引入了一个新的符号学层[23],[24]。传统上,开发者使用编程语言作为直接、正式的计算机指令手段[25]-[27]。
标题:Vibe Coding vs. Agentic Coding: Fundamentals and Practical Implications of Agentic AI
在情感编码(Vibe Coding)中,自然语言、高层次描述,甚至示例或视觉草稿都作为主要输入,传递给一个智能中介系统(即LLM(大语言模型))[28]。而LLM则解释这些多模态“符号”,并合成相应的形式化代码 [29], [30]。这一过程并非单向翻译,而是迭代式的对话:开发者提供初始提示(prompt);LLM生成一份代码产物(artifact);开发者审查、批评并完善提示词,或直接编辑代码,如此循环,直到达成所需“情感氛围”[31], [32]。这种迭代精炼循环是其定义性的特征。
反映出人机之间意义共建的共构模型[33]。
信息提供
协作错误解决
版本控制
架构意识
战略问题制定
图2:Vibe Coding 中的基本技能与认知转变。此图展示了实现与 LLM 有效协作的五项核心能力:思考(Thinking)、框架(Framework)、检查点(Checkpoints)、调试(Debugging)和上下文(Context)。它们共同代表了从语法密集型实现到高层次概念指导以及与 AI 智能体迭代共创的认知转变。
2) 基本技能与认知转变:从哲学角度看,Vibe Coding 通过增强开发者的认知能力来赋能他们。它卸载了底层实现细节的负担,使得可以更专注于创造性问题解决、用户体验设计和系统架构。因此,“vibe”不仅仅是一种审美偏好,而是开发者意图的整体体现,涵盖功能、可用性和设计。有效的 Vibe Coding 需要开发者技能的转变,强调概念阐述和战略互动,而不是死记硬背语法[34][35]。五项基本技能如图2所示,每项技能解释如下:
• 思考(战略问题制定):这涉及为 LLM 定义问题的多层次方法。它从逻辑思维(核心的“是什么”)[36][37]开始,进展到分析思维(用户如何交互、高级组件)[38]–[40],然后到计算思维[41](将问题结构化成为 AI 可理解的模块、规则和数据流)[42][43],最后到过程思维(考虑最优执行、最佳实践和详细功能)[44][45]。一份精心制作的产品需求文档(PRD)通常源于这一严谨的思考过程,作为 LLM 的详细上下文蓝图。
• 框架(架构意识):虽然 LLM 处理大部分实现,但开发者必须对相关软件框架(如 React、Node.js、Django)、库和架构模式有所了解[46]。这些知识使开发者能够引导 LLM 使用适当、稳健且符合行业标准的技术,从而约束解决方案空间,提高代码质量和可维护性[47]。开发者还可以学习