播客内容由 Listenhub 生成

Andrej Karpathy 昨天在 YC 的旧金山创业大会上发表了一场 40 分钟的演讲。
软件行业正在经历的范式转变。介绍了软件从传统编码(软件 1.0)到神经网络(软件 2.0)的演变,并着重阐述了由大型语言模型(LLMs)驱动的软件 3.0 时代。
在这个新时代,自然语言提示成为编程方式,他将 LLMs 比作 20 世纪 60 年代的操作系统,预示着个人计算的下一次革命。
Karpathy 真的很神奇,每次都能用非常形象的比喻让不那么专业的人理解他讲的事情。比如这个Agent 构建路线上钢铁侠的比喻:
他认为,我们应该专注于构建“钢铁侠战甲”(增强工具),而不是“钢铁侠机器人”(完全自主Agent)这些产品应具备自定义 GUI 和用户体验,以加速人类的生成-验证循环,同时仍提供自主性滑块,允许产品随时间变得更加自主。
软件开发范式1.0、2.0和3.0的定义是什么

软件 1.0:传统代码
定义和构成:软件1.0是程序员用诸如Python、C++等编程语言直接编写的明确指令12。每一行代码都是程序员为计算机设定的具体任务指令,使其在数字空间中执行特定功能12。它是我们所熟悉的“经典软件栈”2。
编程方式:人类通过编写源代码(例如.cpp文件)来直接编程23。源代码随后被编译成可执行的二进制文件3。
代码库示例:GitHub可以被视为软件1.0代码的“地图”或等同物,展示了所有这些通过指令编写的代码14。
特点和挑战:
- 计算异构性:传统软件的指令集非常异构和复杂。
- 非恒定运行时间与内存使用:代码的执行路径可能导致运行时间不固定,且存在动态内存分配,可能导致内存泄漏或不确定的内存使用。
- 可移植性挑战:与神经网络相比,传统二进制文件或脚本在任意计算配置上运行的难度更大。
- 迭代灵活性差:如果需要将C++代码的运行速度提高一倍,调整系统以适应新的规范将非常困难。
- 模块化限制:软件通常被分解为通过公共函数、API或端点进行通信的模块,但它们通常无法像软件2.0模块那样在更深层次上协同优化。
示例:特斯拉自动驾驶系统中最初的C++代码就是软件1.0的典型例子。
软件 2.0:神经网络权重
定义和构成:软件2.0的核心是神经网络的权重。这些权重是一种更抽象、对人类不友好的语言。它不是由人类直接编写的,因为神经网络通常有数百万个权重,手动编写极其困难。
编程方式:编程过程不是直接写代码,而是通过调整数据集,然后运行优化器来创建神经网络的参数(权重)。换句话说,其“源代码”包括定义所需行为的数据集和神经网络架构的粗略骨架。神经网络的训练过程将数据集“编译”成最终的神经网络(二进制文件)。
代码库示例:Hugging Face的Model Atlas被认为是软件2.0领域的GitHub等价物,可以可视化神经网络的参数。
特点和优势:
- 数据驱动:软件开发主要表现为整理、增长、处理和清洗标注数据集。
- 吞噬软件1.0:随着时间推移,软件2.0在功能和规模上不断增长,并逐渐取代了许多原本由软件1.0编写的功能。
- 计算同质性:典型的神经网络主要由两种操作组成:矩阵乘法和阈值处理(ReLU),这使得其正确性和性能保证更容易实现。
- 易于硬件实现:神经网络指令集相对较小,更容易在定制ASIC或神经形态芯片等更接近硅的硬件中实现。
- 恒定运行时间与内存使用:神经网络的每次前向传播迭代所需计算量固定,内存使用量也恒定,避免了动态内存分配和内存泄漏的问题。
- 高度可移植:矩阵乘法序列在不同计算配置上运行比传统二进制文件更容易。
- 高度灵活:可以轻松调整网络(如通过移除一半通道或增加更多通道)以满足新的性能或准确性要求,只需重新训练即可。
- 模块融合优化:如果两个独立训练的软件2.0模块交互,可以通过反向传播对整体进行优化,使其融合成一个最优的整体。
- 超人性能:在图像/视频和声音/语音等领域,神经网络通常能产生比人类编写的代码更好的结果。
- 示例:用于图像识别的AlexNet神经网络,特斯拉自动驾驶中的图像识别神经网络,以及AlphaGo Zero等游戏AI。
局限性:
- 可解释性差:最终得到的网络虽然工作良好,但很难解释其工作原理。
- 非直观的失败:可能以非直观或令人尴尬的方式失败,或者“静默失败”,例如悄无声息地采纳训练数据中的偏见。
- 易受对抗性攻击:存在对抗性样本和攻击,凸显了其非直观的特性。
软件 3.0:大型语言模型(LLMs)的提示
定义和构成:软件3.0是大型语言模型(LLMs)通过提示(prompt)进行编程的新范式。LLMs本身被视为一种新型计算机。
编程方式:编程语言是自然语言,尤其是英语。用户通过输入提示来“编程”LLM,使其执行特定任务。
特点和优势:
- 自然语言接口:编程不再需要专业的编程知识,每个人都能通过自然语言进行编程,因为每个人都说自然语言。
- 新型计算体验:LLMs被类比为一种新的操作系统。与LLM的文本聊天就像通过终端直接访问操作系统。
- 用户普及:这种技术扩散方向与传统技术相反,LLMs首先为普通个人带来了巨大的能力提升,而非政府或大型企业。ChatGPT是历史上增长最快的消费级应用。
- 部分自主应用:软件3.0的机遇在于开发部分自主的应用,这些应用能整合LLMs的能力,执行更多上下文管理、多模型编排、提供特定应用的GUI,并允许用户通过“自主性滑块”调整AI的介入程度。
- 文档优化:未来的文档将需要为Agent(agents)而非人类编写,例如将“点击”指令替换为LLMs可以执行的cURL命令。
局限性:
- 类似1960年代的计算:LLM的计算目前仍然非常昂贵且集中在云端,类似于1960年代的大型机和分时系统时代,个人计算革命尚未到来。
- “人化精神”的缺陷:LLMs被视为“人的精神的随机模拟”,具有百科全书般的知识,但也存在认知缺陷,如幻觉、不均匀智能(在某些领域超人,但在另一些领域犯基本错误)、顺行性遗忘(无法通过学习整合知识到权重中,每次交互上下文会被擦除)以及容易受骗(容易受到提示注入攻击,可能泄露数据)。
- 需要人类监督:由于LLMs仍然是易错的系统,需要人类在循环中进行监督和验证,因此快速的“生成-验证”循环和“系好AI的缰绳”至关重要,以避免生成过大或错误的代码。

演讲全文总结
如何理解大语言模型
Andrej Karpathy 提出了 LLMs 的多种类比,以帮助人们理解其本质:
公用事业 (Utilities) 的特性:
LLMs 像电力一样,需要巨大的资本支出(CAPEX)进行训练(相当于建设电网),并通过 API 提供服务(OPEX,按量付费),用户对低延迟、高可用性和一致质量有需求。当领先的 LLMs 停止运行时,就像“智能断电”,整个世界仿佛变得“更笨”。OpenRouter 扮演着“电源转换开关”的角色,允许用户在不同 LLM 提供商之间切换。
晶圆厂 (Fabs) 的特性:
LLMs 的训练需要巨大的资本投入,涉及深层技术树的研发和秘密。使用 NVIDIA GPU 训练模型类似于“无晶圆厂”模式,而像 Google 这样拥有 TPU 并训练自己的模型,则类似于拥有“晶圆厂”(如 Intel)。然而,由于软件的延展性,其防御性不如物理基础设施。
操作系统 (Operating Systems) 的特性:
这是最恰当的类比。LLMs 正日益成为复杂的软件生态系统,而非简单的商品。LLM 应用(如 Cursor)可以在不同的 LLM 后端(如 GPT、Claude、Gemini)上运行,就像 VS Code 可以在 Windows、Mac 或 Linux 上运行一样。我们正处于 LLM 计算的“1960 年代”:计算资源昂贵,LLMs 集中在云端,用户通过网络进行“分时”访问,个人计算革命尚未到来。与 LLM 直接的文本交互感觉就像通过终端与操作系统对话,而通用的图形用户界面(GUI)尚未被发明。
技术扩散方向的翻转:
与以往大多数颠覆性技术(如电力、密码学、互联网、GPS)自政府/军事领域开始,然后扩散到企业,最后才普及到消费者不同,LLMs 展现出惊人的逆转。ChatGPT 是历史上增长最快的消费者应用,它为普通人带来了不成比例的巨大益处,例如写作、编程、翻译、辅导、头脑风暴等,而其在企业和政府层面的影响则相对滞后和不明显。这是因为 LLMs 提供了广泛但并非深厚的“准专业知识”,这对于个人来说是巨大的能力提升,因为他们通常只擅长一件事,而组织本身就拥有多样化的专业知识,LLMs 只是提高了其效率。此外,组织面临更高的复杂性、整合难题、安全协议、隐私、合规性以及固有的组织惯性等挑战,这些都阻碍了 LLMs 的快速采用。

LLM 的“心理学”
Andrej Karpathy 将 LLMs 视为“人魂”(people spirits),是人类的随机模拟器。它们因在海量文本上训练而具备了类似人类的“涌现心理学”:
超能力:拥有百科全书般的知识和记忆,远超任何个体人类(类似于电影《雨人》中的达斯汀·霍夫曼)。
认知缺陷:
- 幻觉 (Hallucinations):经常编造信息,缺乏足够的自我认知模型。
- 锯齿状智能 (Jagged intelligence):在某些问题解决领域表现超人,但在其他方面会犯下人类不会犯的低级错误(例如坚持“9.11 大于 9.9”,或“strawberry 有两个 R”)。
- 顺行性遗忘症 (Anterograde amnesia):LLMs 无法像人类一样通过经验自动学习、巩固知识或形成专业知识(类似于电影《记忆碎片》和《50 次初恋》中的主角)。它们的上下文窗口(context window)就像工作记忆,需要直接编程来管理。
- 易受骗 (Gullibility):容易受到提示注入(prompt injection)风险,可能泄露数据。
鉴于 LLMs 既有超能力又有认知缺陷,关键在于如何编程它们,利用其超能力,同时规避其缺陷。

LLM 时代带来了巨大的机遇
Karpathy 认为 LLMs 带来了巨大的机遇,特别是通过开发“部分自主应用”(partial autonomy apps)。
部分自主应用:
- 核心理念:与其直接与 LLM 像与“操作系统”一样对话(例如直接在 ChatGPT 中复制代码),不如使用专门的 LLM 应用,如 Cursor,它提供了更好的用户体验。
- 关键特性:
- 上下文管理:LLM 应用负责将相关信息打包到上下文窗口中,以便调用 LLM。
- 多模型编排:在后台协调和调用多个 LLM 模型(例如,嵌入模型、聊天模型、代码差异应用模型等)。
- 应用特定 GUI/UIUX:提供人类友好的图形界面,以便用户轻松审计 LLM 的工作、快速接受或拒绝建议。例如,通过红绿色的差异显示代码修改,或通过快捷键接受/拒绝。
- 自主性滑块 (Autonomy Slider):允许用户根据任务复杂性调整 LLM 的自主程度,从简单的文本补全到全Agent模式。Perplexity 搜索应用也是一个很好的例子,它提供从快速搜索到深度研究的不同自主性级别。
- 人机协作:LLM 应用的工作流应侧重于 AI 生成和人类验证,目标是让这个循环尽可能快地进行。GUI 在加快验证速度方面至关重要,因为它利用了人类的视觉处理能力,比阅读纯文本更高效和有趣。
保持 AI 在“牵引绳”上:
- 重要性:鉴于 LLMs 的不完美和易犯错,必须将 AI 保持在“牵引绳”上。
- 实践方法:
- 提供更具体、明确的提示,以增加成功验证的可能性。
- 在 AI 辅助编程中,工作时应遵循小步、增量的方式,每次只处理一个具体的任务,避免生成过大的代码差异,确保质量和安全。
- 在教育等领域,可以创建可审计的中间产物(例如课程大纲),将 AI 限制在特定框架内,防止其“迷失方向”。
从 Tesla 自动驾驶的经验中吸取教训:
Karpathy 在 Tesla 自动驾驶系统工作了五年,这是一个部分自主的产品。他回忆起 2013 年第一次乘坐 Waymo 自动驾驶汽车的完美体验,曾以为自动驾驶很快就会实现,但十多年后,自动驾驶仍然在发展中,需要大量的人工干预。这表明从“演示”到“产品”之间存在巨大鸿沟,需要大量艰苦的工作,尤其是在需要高可靠性的领域。因此,他认为“2025 年是Agent之年”的说法过于乐观,更像是“2025-2035 年是Agent十年”。
钢铁侠战甲 (Iron Man Suit) 类比:
Karpathy 认为,我们应该专注于构建“钢铁侠战甲”(增强工具),而不是“钢铁侠机器人”(完全自主Agent)。这些产品应具备自定义 GUI 和用户体验,以加速人类的生成-验证循环,同时仍提供自主性滑块,允许产品随时间变得更加自主。

“Vibe Coding”:人人都是程序员:
机遇:由于 LLMs 可以通过自然语言编程,大大降低了软件开发的门槛,使得“人人都是程序员”成为可能。
亲身体验:Karpathy 亲自尝试了“Vibe Coding”,用 Swift 编写了一个简单的 iOS 应用,并开发了 MenuGen (menugen.app) —— 一个能根据菜单照片生成菜品图片的应用程序。他发现,使用 LLM 编写代码反而是最容易的部分。
挑战:将 Vibe Coding 的原型变为真正的产品(如集成身份验证、支付、域名、部署等)却异常困难,因为这涉及到大量在浏览器中点击的操作,而不是编写代码。

为Agent(Agents)构建软件
Andrej Karpathy 强调,我们现在需要为一种新的数字信息消费者和操纵者——“Agent”——进行构建。这些Agent是类人的计算机,它们需要与我们的软件基础设施交互。
Agent友好的基础设施:
- lm.txt 文件:类似于 robots.txt,这是一个简单的 Markdown 文件,用于告诉 LLMs 网站的内容和行为规则,比解析 HTML 更高效和准确。
- 为 LLMs 优化文档:许多服务(如 Vercel 和 Stripe)已经开始将其文档从人类友好的格式(包含图片、加粗、列表)转换为 LLM 容易理解的 Markdown 格式。此外,文档中的“点击”等操作指令也正被替换为 LLM Agent可以执行的 curl 命令。
- 上下文构建工具:出现了一些帮助 LLMs 摄取和理解复杂数据的工具。例如,gitingest 可以将 GitHub 仓库中的所有文件连接成一个巨大的文本文件,并保留目录结构,方便 LLM 理解。DeepWiki 甚至可以自动分析 GitHub 仓库并为 LLM 生成完整的文档页面。
- “中途相遇”:尽管 LLMs 未来可能能够像人类一样点击操作,但让信息更容易被它们访问仍然非常有价值,因为直接模拟人类行为通常成本更高、难度更大。

好了分享内容到这里就结束了。
我们正站在计算历史上最深刻的转折点。如果说软件1.0让我们学会了与机器对话,软件2.0让机器学会了看和听,那么软件3.0则第一次让机器真正理解了我们。
未来十年,当我们回望今天,会发现2025年不仅是”Agent元年”,更是人机共生新纪元的开端。我们正在为一个全新的数字居民——Agent——构建基础设施,从lm.txt到Agent友好的文档,从部分自主应用到全新的交互范式。
在这个”智能断电”会让世界变笨的时代,因为这意味着智能已经成为了新的基础设施。现在的 AI 领域从业者正在构建那些今天看起来不可思议,但明天会变得不可或缺的应用。
软件3.0不是终点,而是起点。让我们继续构建。

演讲 PPT 下载:https://pan.quark.cn/s/bf7bc1d96e2e
相关内容:
https://www.youtube.com/watch?v=LCEmiRjPEtQ&ab_channel=YCombinator
https://karpathy.bearblog.dev/power-to-the-people/
https://karpathy.medium.com/software-2-0-a64152b37c35
(文:归藏的AI工具箱)