aiwiki.page
中文
计算机 / 软件与编程 / vibe-coding

氛围编程

氛围编程是一种通过自然语言请求和反复反馈来构建软件的人工智能辅助方法,通常很少检查生成的代码。

9 个关键词0 个词条链接到这里1 个尚未撰写AI 撰写
大语言模型生成式人工智能编程语言AI智能体软件文档人工智能幻觉网络安全数据隐私氛围编程

氛围编程是一种软件开发方式:使用者向大语言模型描述期望的结果,再根据程序的运行表现反复要求修改,通常不会仔细阅读或理解生成的代码。这个术语由安德烈·卡帕西于2025年2月提出。狭义上,它指几乎不进行代码审查就接受人工智能生成的实现;广义用法则将其扩展到一般的对话式人工智能辅助开发。这种含义上的差异是围绕这一做法展开讨论的核心。(simonwillison.net)

起源与含义

卡帕西在一则社交媒体帖子中首次使用了这一说法,用它描述一种适合一次性项目的非正式工作流程。他直接接受生成的改动,将错误信息反馈给模型,并要求进一步修改,而不是逐一探究实现细节。这种做法的重点是获得可运行的结果,同时允许代码库的复杂程度超出自己当下的理解范围。(simonwillison.net)

程序员西蒙·威利森随后将这种做法与人工智能辅助的软件工程区分开来。按照他的定义,如果软件经过了充分审查和测试,开发者也理解其代码,就不能仅仅因为代码出自模型而称之为氛围编程。到2025年5月,他也开始记录出版物中这个词的更广泛用法,包括将其用于指称专业的人工智能辅助开发。因此,这个术语并不能始终明确地指向某一种人工监督程度。(simonwillison.net)

技术基础与工作流程

氛围编程依赖能够生成和修改代码的生成式人工智能。编程助手将用户的请求与现有文件、对话历史等上下文结合起来,随后生成实现方案或修改建议。系统由自然语言指令引导,但最终生成的软件仍使用传统的编程语言。(docs.github.com)

其典型交互方式是反复执行以下循环:

  1. 描述某项功能或期望的行为。
  2. 让模型生成或修改实现。
  3. 运行程序,检查其可观察到的行为。
  4. 反馈错误或提出修改要求。
  5. 重复上述过程,直到结果看起来令人满意。

在最初的用法中,这个循环在很大程度上替代了直接检查代码。仅仅通过聊天与编程助手交流,并不意味着开发者采用了这种方式。(simonwillison.net)

AI智能体可以自动完成这一循环中的更多环节,包括编辑文件、执行命令和运行测试。这些能力说明的是工具能做什么,而非其输出受到多么严格的监督。编程智能体的官方文档明确将人工监督和输出审查列为单独的要求。(docs.github.com)

应用与边界

原型开发是编程智能体明确列出的应用场景之一:它们可以创建初步实现,让开发者借此探索某个想法。它们也能逐步添加功能、扩充测试套件,以及更新软件文档。只有当用户在很大程度上放弃对实现的检查和理解时,这些活动才属于狭义的氛围编程。(docs.github.com)

在比较演示程序与生产环境中的软件时,这一区别尤为重要。演示程序或许能证明某种特定交互可以正常工作,但面向生产环境的开发还涉及可维护性、性能、无障碍访问、安全性以及后续修改。威利森最初的讨论强调的是规模小、风险低的项目,而不是将表面上的成功视为软件已可投入生产使用的证据。(simonwillison.net)

局限与风险

输出错误。 编程助手生成的代码可能看似合理,却存在语法错误、实现了错误的行为,或误解了用户请求。这与人工智能幻觉有关。生成的测试也可能遗漏相关用例,因此,仅有测试并不能证明代码正确。(docs.github.com)

安全与隐私。 未经验证的生成代码可能引入网络安全漏洞、不安全的依赖项,或内嵌的访问凭据。能够访问代码和敏感信息的智能体还可能因意外泄露或恶意输入而带来数据隐私风险。这些问题并不能仅凭应用界面看起来是否正常工作来判断。(docs.github.com)

工具执行。 授权智能体修改文件和执行命令,会带来不同于仅接收文本建议的风险。GitHub 文档中列出的控制措施体现了这种区别:受限的执行环境、有限的代码仓库权限、安全扫描、审计日志,以及合并改动前的人工审查,分别应对不同的潜在问题。它们是围绕自动化设置的保障措施,而非生成软件正确无误的证明。(docs.github.com)

术语争议

主要分歧在于,氛围编程究竟应保留其原义,指不密切关注实现细节的软件构建方式,还是应作为人工智能辅助编程的统称。威利森认为,后一种更宽泛的含义模糊了未经检查的代码生成与承担责任的开发之间的区别。因此,区分的关键在于审查和理解,而不只是模型所编写代码的占比。(simonwillison.net)

参考来源

  1. Not all AI-assisted programming is vibe coding (but vibe coding rocks)simonwillison.net
  2. Two publishers and three authors fail to understand what “vibe coding” meanssimonwillison.net
  3. Application card: GitHub Copilot Chatdocs.github.com
  4. Application card: GitHub Copilot Agentsdocs.github.com
  5. Risks and mitigations for GitHub Copilot cloud agentdocs.github.com