“大模型”技术专栏 | 和鲸CTO蒋仕龙:聊聊“氛围编程(Vibe Coding)”
编者按:
人工智能正以前所未有的渗透力重塑生产与生活图景。作为国内领先的数据智能科技企业,和鲸科技自 2015 年成立以来,深耕人工智能与数据科学,历经十年发展,已在气象、教育、医疗、航空航天、金融、通信、能源、零售等领域,与众多高校、科研机构、企业等单位展开了深度合作。
大模型技术正掀起新一轮产业变革浪潮。在此背景下,和鲸科技 CTO 蒋仕龙结合丰富研发经验,解析“氛围编程”这一最新突破传统编程范式的革命性方法论。
分享嘉宾
蒋仕龙 和鲸科技CTO
负责公司大研发团队管理、路线统筹与技术方案设计。主导 ModelWhale 数据科学协同平台的算力调度、网络、存储等技术难点攻关,以及其在各领域应用场景的落地,推动公司在数据科学领域的竞争力提升。
什么是 Vibe Coding
“氛围编程”这一概念最早由 OpenAI 联合创始人、前特斯拉 AI 负责人 Andrej Karpathy 于今年 2 月在 X 平台提出,目前该概念在开发者群体中热度极高。
在“氛围编程”模式下,若代码运行出现错误,开发者只需将错误信息提供给 AI,接受 AI 提出的修改建议后继续执行。Karpathy 对此形象地描述为:“这并非传统意义上的编码——我不过是看看内容、说说想法、运行代码、复制粘贴代码,在大多数情况下,代码都能正常运行。”
不过,尽管“氛围编程”降低了编程的门槛,但其效果并非对所有人一视同仁。经验丰富的开发者指出,开发者至少需要对代码功能具备高层次的理解能力,否则新手在面对复杂问题时可能会陷入困境。“氛围编程”代表着一种编程范式的转变,它并非强调对代码的绝对掌控和精准操作,而是让开发者更专注于编程流程本身。
因此,“氛围编程”实际上构建了这样一套开发者与 AI 的交互流程:
明确需求 -> 向 AI 描述意图 -> AI 开发 -> 调试并向 AI 反馈问题 -> 迭代
没有银弹
凡事都有两面性。“氛围编程”也不例外。尽管它目前展现出变革软件开发的潜力,但也面临诸多挑战和限制,这些因素可能影响其在未来软件开发领域的地位。
首先是代码质量与可维护性难题。目前,直接将“氛围编程”应用于实际生产环境存在一定风险。软件开发不仅需要创造新功能,还需维护和改进现有系统,这要求开发者对代码有深入理解。如果开发者长期依赖 AI 提供的解决方案,而不主动理解代码逻辑,代码中难以理解的部分会逐渐增多,最终导致代码库难以维护。
在 Reddit 上,针对这一问题甚至衍生出“氛围调试”这一略带调侃的说法:“花 20 分钟编写 2 万行代码,却要花 2 年时间进行调试。”虽然这只是调侃,但却直指核心问题:当代码超出开发者的理解范围时,调试工作将难以开展。如果开发者对数据流动和转换缺乏清晰认识,一旦出现问题,将很难定位问题根源。
找到协作方式
最近一些编码重构工作中我深刻体验了与 AI 协作。那么 “与 AI 协作” 与 “氛围编程(Vibe Coding)” 是什么关系,为什么我没有使用 Vibe Coding?
目前毋庸置疑的是 AI 对于确定性问题的编码能力:为 AI 提供清晰的设计思路、问题解决路径后,AI 能够交付的代码质量超过了开发者的平均水平。我们既要充分拥抱 AI 为我们提供的巨大效率提升,但作为工程师,也要基于自己的经验向 AI 提供更业务知识特化的技术指导,来避免 AI “走上歪路”,产出相对错误的设计或实现。
更具体来说,是使用氛围编程还是结对编程,可以从以下几个角度考虑:
1、当前问题域是否收敛,实现路径是否确定:
问题范围已经非常确定,处于你的能力的子集且边界非常受控时,可以只做代码审查和调试(氛围编程),产出部分交给 AI。
超出你的能力范围、不收敛、具备很强的创新性、复杂度非常高、难度非常高、难以清晰描述,当问题属于这几类时,氛围编程的产出非常趋近于失控、难以掌握,大概率会导致前面提到的理解、调试、安全性等等一系列问题。当这类代码集成进大型项目的代码库后会成为一个非常隐蔽的炸弹。这类问题推荐使用与 AI 结对编程协作方式,相互沟通方案、进行技术设计、相互帮助解决难题、审查代码并提升代码质量。这非常像拥有一个24小时可联络、具备充分编码经验的 partner。
2、当前项目是创新型还是成熟项目的迭代:
如果是新的创意、开发独立的新产品、原型搭建等情况,氛围编程非常起作用。在这种情况下代码质量与审查不再重要,可以做到“忘记代码”而直接进入描述--效果验证--反馈的循环。能帮助你迅速搭建原型进行demo尝试,使用熟练后一天能完成10倍到100倍的工作量。
当你面对已经成熟的产品项目上的需求,应该较少使用氛围编程:任何 AI 生成的代码在这类项目中都需要经过严格审查、测试,也需要你有足够强的能力才能掌握这些代码的设计和调试工作,这就已经不再属于氛围编程的范式了。当然,结对编程是完全可行的。
3、自身能力与发展计划
这与第一点的角度比较相似:当你是一名技术初学者,你应该尽量投入到协作开发工作中,避免情况超出你的控制,除非你只想摘果子。但考虑到个人发展,我非常推荐在这个时代尽可能多地去与 AI 进行交互、协作做一些项目,通过这种方式快速学习和提升自己的编码能力,并且吸取大量 AI 在技术设计上的成熟经验。
如果你已经有了充分的开发与技术设计经验,你对于代码的控制和审核能力非常强,那么你可以尝试在一些情况下进行氛围编程,这能大大节约时间。
如果你不是技术人员,我也推荐你去尝试氛围编程:根据自己的一些痛点或灵光一现,将想法转化为实际产品,体验这个时代下的技术民主化。
总结
AI 的革命让技术和创新的门槛再一次降低,我们不应该再把目光过多关注在过程细节上,也不应该固守已有经验而拒绝拥抱变化。我们要去掌握更有效率的工作范式、加速自身知识积累和对于新时代 knowhow 理解的速度、通过各方面的成长来驾驭 AI 让其充分为我们所用。
无论是氛围编程还是结对编程,背后的核心还是那个与 AI 交互的 “人”。即使猴子学会用 AI 加快敲出了莎士比亚全集,人类估计也不会雇佣它来做出版社主编。
*本文部分内容参考自https://zhuanlan.zhihu.com/p/32476516386