软件3.0时代:程序员从"写代码"变成"指挥AI"|附Karpathy最新洞察
软件3.0时代:程序员从”写代码”变成”指挥AI”|附Karpathy最新洞察
软件3.0时代:程序员从”写代码”变成”指挥AI”
Karpathy 说,他从未如此觉得自己作为程序员「落后了」。
这话从别人嘴里说出来可能不算什么。但 Karpathy 是 OpenAI 联合创始人、Tesla AI 负责人——整个深度学习时代最具影响力的人物之一。
他说出这句话,分量就不一样了。
Software 1.0 → 2.0 → 3.0:三代软件演进史
要理解现在发生了什么,先回头看看软件的进化历程。
Software 1.0:人写代码
这是我们最熟悉的模式。程序员用 Python、C++、Java 写代码,每一行都是明确指令:如果 A 则执行 B,否则执行 C。
逻辑是人写的,bug 也是人造的。
从 1950 年代到现在,绝大多数软件都属于这个范畴。好处是确定性强、可调试、可解释。但根本局限是:扩展性受限于人类的智力和时间。
你写不出一个算法,让计算机从照片里认出一只猫。因为这个任务本身的规则,人类自己都说不清楚。
Software 2.0:训练即编程
2017 年,Karpathy 在 Medium 发了一篇博客,提出了 Software 2.0 的概念。
核心观点:神经网络不只是新工具,它代表了一种全新的编程范式。
在 Software 1.0 里,程序员写代码。在 Software 2.0 里,程序员准备数据和目标函数,让优化算法(梯度下降)去搜索出一组神经网络权重。
换句话说:训练过程就是编程过程,数据集就是源代码。
Software 2.0 已经「吃掉」了大量 Software 1.0 的领域:图像识别、语音识别、机器翻译、围棋……
Software 3.0:prompt 就是代码
Karpathy 自己承认,Software 2.0 的文章写得太早了——当时 GPT 还没出现,Transformer 才刚发表。他没有预见到大语言模型。
而 Software 3.0 的编程方式,完全不同:
你写一段 prompt,给模型上下文,它就执行了。不需要训练,不需要梯度下降,不需要标注数据。
你用自然语言「编程」,用 context window 作为「内存」,用工具调用作为「系统调用」。
LLM 成了一个新型的计算解释器,而 prompt 就是它的源代码。
Karpathy 在 AI Ascent 2026 大会上做了个精辟总结:
-
Software 1.0:人写代码
-
Software 2.0:神经网络用数据训练出来
-
Software 3.0:通过 prompt、上下文、Agent、工具、记忆和验证来编程
MenuGen :一个中间层消失的案例
Karpathy 举了一个他自己做的项目:MenuGen。
场景:你走进餐厅,拍了一张菜单照片,App 自动识别菜名、搜索图片、重新排版生成带图的菜单。
传统方式做这件事:OCR 识别 → NLP 提取 → 图像搜索 API → 前端排版。至少几百行代码,一两天工作量。
而 Karpathy 发现:直接把照片扔给 Gemini,让它在原图上叠加菜品图片,整个中间层的 App 都变得多余了。
这就是 Software 3.0 最具颠覆性的地方:
有些应用不是被做得更快了,是直接被模型的原生能力吞掉了。
Vibe Coding vs Agent Engineering:地板与天花板
「Vibe Coding」这个词是 Karpathy 自己在 2025 年初造的。
当时 AI 编程工具刚起步,他用这个词形容一种新开发方式:不看代码细节,凭直觉和自然语言跟 AI 协作,「感觉对了就行」。
然后这个词火了,火到他自己都没想到。
但 Karpathy 这次想说的是:Vibe Coding 仅仅只是热身,而已。
2025 年 12 月,他经历了一个「翻转」:从自己写 80% 代码、Agent 写 20%,变成了 20/80。
在 2026 年,这个比例还在继续倾斜。他甚至因此患上了「AI 精神病」:每天对着 Agent 说话 16 个小时,Agent 跑完一个任务就想立刻开下一个。
他在演讲中把这种转变拆成两个层次:
Vibe Coding 抬高了地板。
任何人,哪怕完全不懂编程,都能用自然语言描述需求,让 AI 生成一个可用的应用。设计师可以做原型,产品经理可以做内部工具,学生可以做自己的项目。门槛被拉到了接近零。
Agent Engineering 抬高了天花板。
专业开发者使用 Agent 的方式完全不同。他们在设计一整套系统:Agent 生成方案、编码、测试、相互检查。这套流程要保证没有安全漏洞,架构要干净,系统要稳健。
Vibe Coding 抬高的是所有人能做软件的下限。Agentic Engineering 要保住的是专业软件过去已有的质量门槛。
Harness:每犯一个错,就工程化一个解决方案
Karpathy 还聊到了一个热门概念:Harness(套件/脚脚手架)。
这个词最早是 HashiCorp 联合创始人 Mitchell Hashimoto 提出的。他在用 AI 做 Ghostty 项目时总结出一条原则:
每当你发现 Agent 犯了一个错误,你就花时间去工程化一个解决方案,让它再也不会犯同样的错。
后来 Cursor、OpenAI、Anthropic 等都发表了关于 Harness 的工程博客。
而 Karpathy 的观点更为激进:未来的软件应该为 Agent 重写,完全不用考虑人类用户。
Agent 需要的是:机器可读的接口、明确的权限声明、可分解的工作流、清晰的指令格式。
他甚至说:为什么还要写复杂的 .sh 安装脚本?完全可以用一个 .md 文件,用英文把安装步骤写清楚,然后告诉用户「把这个文件给你的 LLM 看就行」。
用 .md 替代 .sh,替代 .py 和 .go——这也是 Karpathy 最近的用法。
人的位置:理解力不可外包
说了这么多 AI 和 Agent,Karpathy 倒也没忘了说回人类自己。
他的判断是:理解力是不可外包的。
Agent 可以调 API、可以写代码、可以做测试。但有三件事它确实还做不了:
系统规格设计:比如用户系统应该用稳定的 user ID 而不是邮箱地址来关联资金——这种判断需要理解业务逻辑,需要经验,需要对后果的预见。
概念理解:你需要真正懂张量是什么、内存视图怎么工作、存储机制背后的原理,而不只是知道 API 的名字。否则你无法判断 Agent 写的代码是不是在做正确的事。
品味:Agent 写的代码经常「能跑但很丑」。它通过了所有测试,功能也对,但架构一团糟、命名一塌糊涂、复杂度失控。你需要知道什么是好的设计。
你可以外包你的思考,但不能外包你的理解。
如果你不理解系统在做什么,你就没办法在 Agent 犯错的时候知道它错在哪里。而 Agent 一定会犯错。
三代软件演进:作者→教练→指挥官
回看这三代软件范式的演进,主线是:人类参与的方式在不断变化。
-
Software 1.0 时代:程序员是作者。每一行代码都是他亲手敲出来的,逻辑是他设计的,bug 是他修的。他对整个系统有完全的控制权,也承担全部的责任。
-
Software 2.0 时代:程序员变成了教练。他不再直接写逻辑,而是准备训练数据、设计网络结构、调整超参数,然后让优化算法去搜索解决方案。他的工作从「告诉机器怎么做」变成了「给机器看该怎么做」。
-
Software 3.0 时代:程序员变成了指挥官。他不需要准备数据,不需要训练模型,他只需要用自然语言描述意图,给出上下文,然后指挥一群 Agent 去执行。他的工作从「给机器看」变成了「告诉机器要什么」。
从 how,到 show,到 what。
每一代转移,人类失去的是执行细节的控制,获得的是更高层次的杠杆。
就像 Karpathy 说的:以前焦虑的是 GPU 空闲,现在焦虑的是 token 没花完。以前的瓶颈是计算资源,现在的瓶颈是人。
你控制多少 token 吞吐量,决定了你能做多少事。
就在当下
Software 3.0 并非只是一个概念,也不是一个预测。
如果你能看到这篇文章,你很可能早已置身其中,感同身受了。
Anthropic 在《2026 Agentic Coding Trends Report》中提到:2025 年 agentic AI 改变了大量开发者写代码的方式,而 2026 年将是这种变革开始重构整个软件开发生命周期的一年。
而 Karpathy 本人,大概从 2025 年下半年开始,就没再手写过一行代码了——每天对着 Agent 说话数分钟甚至数小时……
Software 3.0 时代,并非即将到来、马上要来。
而是,就在当下。
夜雨聆风