Vibe Coding(氛围编程),现如今成了硅谷最时兴的词汇。
AI大神Karpathy首次提出了这一概念。他再度分享了自己的编程新方式。此次是用Swift编写首个完整的卡路里追踪iOS应用。
令人惊奇的是 他根本没有Swift编程方面的经验 并且也未曾翻阅过任何文档
Karpathy与GPT进行了多轮对话。他仅用1小时就完成了整个开发过程。之后成功将其部署到手机上。
不仅如此氛围编程爆火后各路网友纷纷开发各类应用比如各种游戏网页等甚至科技公司也挂出招聘「氛围编程师」的职位
一则YC招聘启示明确提出,工作内容里50%的代码由AI完成,这份工作年薪高达120k美金,也就是87万元。
职位介绍中,每天工作12-15小时,却成为了全网的华点。
要是AI切实提升了生产力,那为何还有人每日拼命工作12至15个小时呢?
400行代码,GPT化身编程导师
Karpathy如何用嘴,迅速完成一个iOS应用的开发?
推文中,他具体分享了自己与GPT对话的四次过程。一是启动应用。二是功能增强。三是使用AppStorage持久化数据。四是部署到手机。
在启动应用阶段 Karpathy 从 0 开始 告诉 GPT 自己的需求 他刚刚下载了 Xcode 希望用 SwiftUI 构建一个 iOS 应用
GPT在接下来开启了「手把手」教学。
首先安装并启动Xcode。此环节细致入微,要打开并点击具体某个选项。接着配置项目,涵盖命名、界面、编程语言等方面的选择。
接下来 GPT 提供了基础代码 包含 SwiftUI 的界面布局 以及逻辑实现 助力 Karpathy 迅速搭建起一个可运行的原型
上下滑动查看
有了原型之后 便开始实操 要构建一个APP 这个APP用于体脂追踪 是个计时器
Karpathy如同产品经理一般,提出自身具体要求。“计时器”要展现随时间自然消耗的热量。其需用大号数字于屏幕中央显示。并且每秒更新一次消耗的热量。
GPT按照指令,给出了分布构建过程,以及下一步建议。
上下滑动查看
接下来 Karpathy 还要求其给出不同按键对应的功能代码搭建过程 以及每秒更新的配置
第二部分,在基础版本完成之后,就是去做功能增强。
比如,GPT提供了支持明暗模式切换的具体代码片段和实现建议。还提供了简单的加减按钮、触觉反馈和动画等的具体代码片段和实现建议。
上下滑动查看
为使数据在应用关闭后仍能保存,Karpathy向GPT询问如何使用AppStorage
GPT详细讲解了AppStorage的使用办法。GPT帮他把卡路里数据存到UserDefaults里。
上下滑动查看
最后一步是将这款应用部署到iPhone上。Karpathy进行这项操作时,GPT为他提供了指导。GPT指导他完成了Xcode配置。GPT还指导他完成了证书设置。GPT也指导他完成了设备部署的步骤。最终这款应用成功运行在手机上。
经过1小时的对话,卡路里计时器的应用完成了。
还有一些简单的逻辑
第二天 Karpathy 又进行了与GPT的3次对话 借此为应用增添新功能 有动画环 还有将固定值显示在 [-3500, 3500] 区间内
刚刚 他为其添加了日志 为+100/-100添加了小字说明 还隐藏了BMR这个功能
截至目前,这款应用代码也仅有400行。
网友疯狂整活
总结了一批效果出色的案例
开发者Luke Van In构建了一款游戏。他用Claude编写的代码。代码大约有1万行。
他觉得,当下代码库的复杂程度已快要达到可控的上限。Claude有能力重构百分之二十的代码。并且自动增添了武器后坐力以及镜头抖动的效果。
对于贴花系统,Luke又借助了Grok进行了一些手动调整。
xAI工程师kache设定了一种方式。此方式能够动态重新加载客户端逻辑。还能动态重新加载服务器逻辑。无需用户刷新页面。便可实现实时更新。也能实现实时迭代。
他还特意着重指出。要是自己明晰想要做什么。氛围编程才可发挥出其优势。
还有一位开发者Louie Bacaj。他仅使用Claude 3.7+o1 Pro。在几个小时内。通过氛围编程做出了一个益智游戏。
还有角色扮演的小游戏,也是通过氛围编程就能完成。
还有人用两条提示,就能让游戏中NPC驾驶飞机。
不是所有AI辅助编程都是「氛围编程」
需要留意的是并非所有运用了AI辅助的编程都可被称作「氛围编程」。
在近期一篇博客里 知名web框架Django共同作者Simon Willison 对这一概念作出了极为详尽的阐释
并且,还获得了「发明人」Karpathy的大加赞赏:
就个人体验来说 当我处于类似下面这条狗的状态 就会把它称作「氛围编程」 比如昨晚开发iOS应用时的那种情形
但在实际开发里 我很少完全任由AI自行发挥 更多时候是进行渐进式迭代 先审阅生成的代码 再分阶段增加复杂度 还通过持续提出澄清问题 逐步理解模块间的交互逻辑
氛围编程正当时
Andrej Karpathy于2月3日首次提出「氛围编程」。此后这一概念登上各大主流媒体。还引发无数线上讨论。
而是在不审查大语言模型产出代码的情形下构建软件
“氛围编程”能让你充分沉浸于氛围里,实现指数级进步,甚至忘却代码自身的存在。原因在于LLM(比如Cursor Composer搭配Sonnet)已足够出色。我仅用SuperWhisper就能与Composer对话,几乎不用触碰键盘
我会提出最基本的要求,像「把侧边栏的内边距减半」。总是点击「全部接受」,不查看代码差异。碰到报错,直接复制到对话框让LLM修复。代码复杂程度超出我日常认知,真要理解得逐行细读。有时LLM无法修复bug,就直接绕过或随机调整直至问题消失。
对于周末随意开展的项目而言 它充满趣味 只需进行观察 口述 运行 复制粘贴 结果大部分竟然都能成功运行
Andrej是天赋极高的资深程序员。他本不需要AI辅助。他选择这种编程方式。是因为尝试疯狂创意很有趣。还因为LLM的代码生成速度比最厉害的人类程序员快很多。
对于低风险的原型开发,何不放手让它发挥?
使用LLM写代码≠氛围编程
有着本质差异
首先软件工程师要构建符合多重标准的系统。这个系统要可验证运行。还要具备人类可读性以及机器可解析性。并且能支撑长期迭代开发。
其次 软件工程师要同时考虑显性需求和隐性约束 从数十种潜在方案里筛选出最优解 以此实现性能 可访问性 安全性 可维护性 成本效益等指标间的平衡
第三,软件工程师要对代码审查。生产环境AI辅助开发有铁律。即任何代码若无法向他人精确解释工作原理。都不准进入版本库。
可以明显看出,当LLM生成代码后,软件工程师会开展完整的审查流程。软件工程师会进行完整的测试流程。软件工程师会确保代码具有可解释性。这一系列流程都要执行。也就是说,这本质上依旧是传统软件开发范式。工具链里是否有LLM,不会改变工程实践的属性。
氛围编程的价值
虽然氛围编程和用LLM进行编程不一样,但这并不表明它是不负责任的开发方式
这种突破性编程形式蕴含改变世界的潜能。能让数百万普通人借助工具。这些普通人没有计算机学位也没经过编程培训。可让计算机完成高度定制化任务。还能打造属于自己的个性化工具。
这样一来 那些原本与编程没什么关联的人 可能会因此燃起热情 并最终成长为专业开发者 这个行业最大的壁垒 如同攀登悬崖般的初始学习曲线 将被氛围编程彻底消除
资深工程师们也能够借此训练自身对模型能力边界的认知。就像之前论述的那样,使用LLM编码好似在暗藏技术雷区的迷宫里探索,这需要持续积累直觉经验。
无论开发者处于何种「段位」
参考资料: