2025年2月,OpenAI的研究人员Andrej Karpathy在社交媒体上首次使用了“vibe 编码”这个词。在他的帖子中,他描述了自己在不亲自编写任何代码的情况下开发一个小项目的过程。
说起“vibe coding”这个概念的起源。
为了构建他的“好玩的临时周末小项目”,Karpathy甚至不需要碰键盘。他使用了superwhisper,一个AI驱动的语音转文本转录器,口述应用需求给Cursor Composer。Cursor Composer,一个多文件代码编辑器,也是个应用生成器,接着将口述的指令转换成一个完整的网页应用。Karpathy通过使用最简单的命令调整应用程序,比如“将侧边栏的填充减少一半”,并直接接受了这些修改,没看diffs。当Karpathy遇到Cursor解决不了的问题时,这位OpenAI的联合创始人就会要求做出随机更改,直到问题解决。
“这其实不算编程,”他承认道,“我只是看看、说说、运行运行、复制粘贴东西,基本上都能用。”
看这,妈——不用输入!卡帕蒂的编程氛围栈。(注:这里的“编程氛围栈”指的是卡帕蒂特定的编程环境和工具栈。)
不过,这种氛围对 EnrichLead 的 CEO Leonel Acevedo 来说一点也不好。2025 年 3 月,他在社交媒体上发帖 说他用“零手写代码”打造了一个 SaaS 应用程序,并表示其他人可以“继续抱怨,或者开始动手制作”。Acevedo 的 AI 使用方式与 Karpathy 的“一次性”项目形成了对比,Acevedo 则赞扬了自己生产就绪的 SaaS 应用程序,并暗示了不一样的可靠性和实际应用水平。
几天之后,Acevedo 发帖称 EnrichLead 正在遭受攻击,出现问题,如 API 密钥被耗尽,订阅被绕过,数据库被破坏等。由于 Acevedo 不是技术人员,调试代码的时间比他预期的要长。在一番努力之后,他最终发现,他的代码泄露了重要的 API 密钥,这使得他的应用更容易受到攻击。
最糟糕的实时调试经历。
不经意地推送硬编码的密钥可以被视为开发者的一种入门考验。这种错误如此普遍,以至于GitHub已经有了自动告警和修复无意中泄露的密钥和令牌的功能;在Sonar,我们把这项检查提前了,通过在你的集成开发环境(IDE)中高亮潜在的漏洞_直接在IDE中_来进行。随着“氛围编码”的出现,像EnrichLead遇到的情况可能会变得更加常见。虽然现在还不能确定“氛围编码”是否会继续下去,但有一件事我们可以确定,那就是由AI生成的代码已经到来,并且将会长期存在。
这只不过是软件开发生命周期不断演化的又一个阶段而已。
💡 本文适合各种学习和阅读风格,所以你可以随意跳到你感兴趣的地方。
什么是氛围编码?包括它的定义、相关的工具以及好处和坏处.
作为开发者,如何在AI环境中生存?有氛围还是没氛围?
-
不只是感觉:AI如何帮我们成为更好的开发者,
- 试试看:用于应对氛围编码技术的工具和资源
注:原文中的 "vibe coding" 直译为“振动编码”可能不太符合中文习惯表达,若上下文是关于编程或技术术语,建议根据具体语境考虑更贴切的翻译,如“氛围编码”若更符合特定上下文。此处根据一般理解进行了调整。
Vibe 编码——或者如果你觉得这个称呼不太合适,可以称为“AI 编码”——是“一种依赖于 AI 的编程技术,一个人用几句话描述一个问题作为提示给专门用于编码的大型语言模型(LLM)”。Vibe 编码完全依靠 LLM 根据需求生成整个应用程序。
哪些工具用于情感编码?
当前最流行的编码工具是 Cursor 和 Windsurf。这两款 IDE 内置了 Claude 3.5 Sonnet AI,但各自拥有不同的特性和用户体验。
Cursor 和 风帆冲浪虽然用的是同一个 LLM(大型语言模型),但各自都有自己独特的氛围。
vibe coding 有哪些好处?
-
更低的入门成本: 没有编程知识也没问题!只要你的想法不错,还能写出质量不错的提示,代码本身已不再是一个障碍。
-
更快的开发速度: 当你让IDE处理所有代码时,原型设计和迭代过程会更快更简单。
-
更多空间用于处理复杂和创新的问题: 摆脱了编写样板代码、设置类、执行基本 CRUD 操作和其他繁琐任务的负担,开发人员可以将更多精力集中在更高层次的逻辑上。
- 知识桥梁: 即使是经验最丰富的开发者也会遇到学习新技术的挑战——AI编码可以通过提供基础知识来加速上手。
Prompting Cursor to generate a Pokédex Flask app …
… and it worked!
vibe 编码有哪些缺点?
-
代码的一致性和可预测性不足:这一点很重要:因为 LLM 生成的代码不是固定的,这会导致代码风格、结构和方法多样化,使得代码更难理解、维护和调试。
-
更多的 bug、错误和安全漏洞: 由于 AI 并不具备真正的“理解”能力,生成的代码可能会包含这些问题,而更有经验的开发者会避免这些错误。
-
长期可维护性和扩展性方面的挑战: 在没有上下文的情况下生成的代码可能不一致且不具备一致性,且未考虑未来的优化需求。
- 开发者生产力下降: AI生成的代码可能缺乏良好文档,增加开发负担,在重构、调试或扩展代码时会更加耗时。此外,尝试调整提示以获得更理想的结果甚至可能比直接手动编写代码还要花更多时间。
关于vibes的问题:你知道最好不要在HTML模板文件中包含所有样式,但AI可能不会这么考虑。
要和AI合拍吗?作为一名软件开发者如何在AI时代生存软件开发生命周期(SDLC)指的是设计和构建软件的结构化流程。这是一个快速变化的领域,每次迭代中,开发者的角色会随着变化,以应对软件工程中的最新挑战。
在最早的“代码和修正”时代,开发人员更像是一个独立的程序员,直接解决出现的问题,几乎没有任何正式流程。瀑布模型的出现将开发人员转变为线性过程中的专家,专注于定义需求后的特定环节,比如编码或测试。迭代和增量模型则要求开发人员更加灵活多变,工作在更小的周期内,并更频繁地整合反馈。
面向对象方法的兴起使开发人员的角色转向架构师和组件构建者,强调模块化和可重复使用。敏捷革命要求开发人员成为团队中的协作伙伴,频繁交流,灵活应对不断变化的需求,并参与冲刺过程中的各个阶段。最后,在精益和DevOps的时代,开发人员成为整个交付流程中不可或缺的一部分,参与自动化、部署和运维,承担更广泛的效率和可靠性的责任。
AI编码为SDLC开启了新的篇章,而新的时代到来,开发者也迎来了新的机遇——只要我们准备好迎接这些机遇。
唯一不变的就是“变化”:软件开发过程的演变过程。
开发者之路
通过了解人工智能的好处和缺点,你将更好地准备自己继续发展成为更好的开发者。毕竟,你是开发者。你擅长学习新技术,这是你最拿手的事情。
-
熟悉一下开发者常用的AI编码工具。 无论你称之为“智能编码”或“AI编码”,都看看大家都在用哪些工具。没有什么比亲自尝试更能让你学到东西的了。
-
氛围要好,但要核实。 养成仔细检查AI工作的习惯。虽然AI已经承担了大部分繁重的工作,你的任务更多的是勤勉地监督和审查代码这部分工作,而不是手动编写代码。使用像SonarQube这样的代码质量工具本来可以避免EnrichLead的秘密被泄露。
-
抓住更系统化思考的机会。 有了AI来处理这些细节,你可以专注于解决更复杂的问题,并提出更创新的解决方案。你可以更自由地成为架构师,不必成为每个组件的专家。
- 学习如何精炼你的提示。 类似于Claude这样的大型语言模型更擅长回应那些清晰、简洁且明确说明了要求和预期输出的提示。更战略性地思考这些方面,比如你的需求、你想要遵循的设计模式(design pattern)、你将如何测试你的代码、以及这些方面将如何部署和维护,这将帮助你更好地完善和改进你的提示。
不仅仅是氛围感:AI如何帮助我们成为更棒的开发者💡 你怎么编写提示才能不暴露秘密呢?你会包含哪些内容?
瀑布模型、敏捷开发、临时开发、DevOps、沉浸式编程——无论我们使用什么样的软件开发生命周期(SDLC)或工具,作为开发者,我们都关注效率、优化、可靠性和可维护性。我们希望开发出有用的软件,并且不希望半夜因为故障被叫起来。人工智能可以成为一种有价值的工具,帮助我们去除开发过程中一些繁琐的任务,让我们有更多时间进行创新思考;AI潜在的缺点也意味着我们可以更加谨慎和有目的地开展工作。
虽然我们无法确切预测人工智能将如何改变软件开发生命周期,但我们知道无论它朝哪个方向发展,代码质量和安全性始终是编写有意义、稳健和可靠软件的关键。
只要问一下 EnrichLead 的那个人就好了。
自己动手试试:生存所需的工具和资源共同学习,写下你的评论
评论加载中...
作者其他优质文章