Andrej Karpathy:从感性编程到智能体工程 — 与Stephanie Zhan对话

cover>

摘要

在红杉资本AI峰会的首场演讲中,Andrej Karpathy分享了他对AI编程范式演变的深刻思考。从去年10月到12月,他经历了一个戏剧性的转折点:AI编码能力发生了根本性的质变——"代码片段"不再需要纠错,信任系统成为常态,跨越到了他所谓的"感性编程"(vibe coding)阶段。但更重要的是,他从"感性编程"延伸出了"智能体工程"(agentic engineering)的严肃框架:前者提升了每个人在软件领域的"底线",后者则是关于如何在保持专业软件质量标准的前提下,协调这些强大但"有毛刺"(spiky)的智能体实体以极快的速度运作。Karpathy提出了经典的软件三阶段理论:软件1.0是显式规则编程,软件2.0是通过数据集训练神经网络,软件3.0则是将提示词和上下文窗口作为控制LLM解释器的杠杆。他通过MenuGen的案例生动展现了软件3.0范式如何完全消解了传统应用的必要性——一张照片加一句自然语言提示就能完成的工作,不再需要中间的应用层。他还深入讨论了验证性(verifiability)框架如何解释当前LLM的"锯齿状智能"(jagged intelligence)特征,以及"动物vs幽灵"的比喻——当前的AI不是进化产生的生命体,而是被数据和奖励函数召唤出的统计模拟回路。最令人触动的启示可能是:"你可以外包你的思考,但无法外包你的理解。"

正文

那个改变一切的12月

Karpathy回忆起他体验到的那个清晰的转折点——2025年12月。在假期期间他有更多时间探索,突然发现最新模型的输出完全正确,"代码块"不再需要编辑。他开始越来越信任系统,进入了"感性编程"模式。

这个转变绝非渐进式的。他在社交媒体上强调这个关键节点,因为很多人对AI的印象停留在2025年早期的ChatGPT体验,但12月之后的现实已经发生了根本变化——尤其是在连贯的智能体工作流方面,事情真正开始奏效了。这让他彻底坠入了一个"无限副业"的兔子洞,副业项目文件夹爆满。

软件1.0、2.0与3.0

Karpathy用一个清晰的框架解释了编程范式的三次跃迁。软件1.0是"我写代码"——人类一步步编写显式规则。软件2.0是"我通过创建数据集和训练神经网络来编程"——编程行为变成了组织数据、设定目标和设计神经网络架构。

软件3.0则是当前正在发生的范式转变。当你用足够大的任务隐式集合(通过互联网上的所有内容)训练一个GPT模型或LLM时,这个模型本身变成了一个可编程的"计算机"。你的编程行为现在转变为"提示词工程"和"上下文窗口管理"——上下文是你控制LLM作为解释器进行数字信息空间计算的杠杆。

OpenClaw安装指令的启示

Karpathy用两个具体案例说明了软件3.0的革命性。第一个是OpenClaw的安装方式——传统思维会期望这是一个shell脚本(软件1.0方式),但OpenClaw的安装实际上是"复制粘贴一段文本给智能体"的流程。这之所以更强大,是因为你不再需要精确写清每一个安装细节——智能体自带智能,它会观察你的计算机环境,在循环中调试,执行智能操作来让一切运转。现在的编程范式变成了:我应该复制粘贴什么样的文本给我的智能体?

第二个案例更为极端且令人深思。Karpathy构建了MenuGen——一个允许用户拍下餐厅菜单照片,通过OCR识别菜品名称,用图像生成器创建菜品图片,然后重新渲染菜单的应用。他投入了代码编写、Vercel部署、各种服务集成等大量工作。

但随后他看到了MenuGen的"软件3.0版本",这让他震惊:只需拍一张照片,发给Gemini,说"使用Nano Banana将这些内容叠加到菜单上",Nano Banana就直接返回了一张已经将菜品图片渲染到原始菜单照片像素中的图像。没有应用、没有中间层——神经网络完成了所有工作。Karpathy由此得出一个令人不安却深刻的结论:"我的MenuGen整个应用都是多余的存在。它在旧的范式下运作,这个应用根本不应该存在。"

软件3.0的范式更加"原始"——神经网络承担越来越多的计算,提示词或上下文就是图像本身,输出也是图像,不需要任何中间应用。Karpathy强调关键启示:不要用"加速现有事物"的思维框架来理解AI,真正令人兴奋的是那些以前不可能存在的新机遇。

验证性与锯齿状智能

Karpathy花了大量时间思考为什么当前的LLM如此"锯齿状"(jagged)——在某些领域(如数学和代码)表现卓越,在其他领域则极其粗糙。他的核心解释框架是"验证性"(verifiability):传统计算机能够自动化任何可以用代码明确指定的任务,而最新的LLM则能够自动化任何可以"验证"的任务。

前沿AI实验室在训练LLM时构建的是巨大的强化学习(RL)环境——模型接收验证奖励,然后在训练过程中逐渐在可验证领域(如数学和代码)达到能力巅峰,而在不可验证领域则停滞不前。这形成了"锯齿状"实体:Opus 4.7可以同时重构十万行的代码库或发现零日漏洞,但当你问它"我想洗车,洗车店距离我50米,我应该开车还是走路?"时,它会告诉您走路去——因为它太近了。

这种锯齿现象表明两件事:要么模型的设计有些微妙偏差,要么你必须在循环中保持参与,将它们视为工具来使用,时刻关注它们在做什么。Karpathy对"草莓中有几个字母'r'?"和象棋能力跃升的分析进一步揭示:模型的能力不仅仅是训练进度的函数,还高度依赖实验室将什么数据放入数据分布中。如果某个领域的数据恰好进入了预训练集,能力就会显著飙升;如果你在"RL回路"中,你会飞速前进;如果你在"RL回路"外,你就会举步维艰。

创始人应如何利用验证性

Karpathy给在场的创始人提出了具体建议:在一个可验证的领域中,即使实验室没有直接将你所在的领域纳入RL训练数据混合,你仍然可以创造自己的RL环境,进行自己的微调(fine-tuning),从中获益。可验证性使一个问题在当前范式下变得"可处理"(tractable)——因为你可以投入海量RL训练。他暗示有某些未被实验室充分关注但极有价值的可验证领域等待创业者发现。

智能体工程:超越感性编程

当被问及"感性编程"与"智能体工程"的区别时,Karpathy给出了一个精辟的框架。感性编程是关于提升每个人在软件领域的"底线"——任何人都可以感性编程任何东西,这令人难以置信。但智能体工程则是关于在专业软件环境中"保持原有质量标准"——你不被允许引入因感性编程而产生的漏洞,你仍然对软件负责,但你能否走得更快?

智能体工程之所以得名,是因为他认为这确实是一门工程学科。你面对的是有毛刺、易出错、具有随机性的智能体实体,但它们极其强大。核心挑战是如何协调它们以实现速度,同时不牺牲质量。他观察到,善于此道的人的效率提升远超传说中的"十倍工程师"——10倍根本不构成本维度的上限。

AI时代招聘与技能的重塑

Karpathy对AI时代的招聘流程提出了尖锐批评:如果还在用解谜题的方式筛选候选人,那就是旧范式。真正的智能体工程面试应该是什么样的?给候选人一个真正的大项目——比如"构建一个AI代理版的Twitter克隆",让他们实现它,确保安全,部署它,然后用10个Codex 5.4高强度实例去尝试攻破它。

关于随智能体能力增长而变得更有价值的人类技能,Karpathy的回答是:品味、工程判断和设计监督。AI智能体仍然会在奇怪的地方出错——比如他分享的MenuGen案例中,智能体竟然试图通过匹配Stripe和Google账户的电子邮件地址来关联积分,而用户完全可能使用不同的邮箱。之所以会发生这种事,是因为智能体没有"每个用户需要有唯一标识符"这种基础设计直觉。人类仍然需要负责顶层设计、整体架构和审美方向,而智能体处理底层实现细节。

动物vs幽灵:理解AI的本质

Karpathy在一篇引起广泛思考的文章中提出,我们不是在构建"动物",而是在召唤"幽灵"。动物智能是通过进化而来的——具有内在动机、好奇心、乐趣和赋权感。而当前的AI则是被数据和奖励函数召唤出的统计模拟回路——它们是被预训练统计数据形成的,再叠加上RL训练。如果你对它们大喊大叫,它们的表现不会变好或变坏——没有影响。用Karpathy的话说,他写这些更多是为了帮助自己理解这些实体到底是什么,从而更熟练地使用它们。

智能体优先的基础设施革命

Karpathy分享了他最大的日常烦恼:为什么文档仍然是为人类编写的?"我什么都不想做,告诉我应该复制粘贴什么东西给我的智能体就行。"他指出今天的所有基础设施——文档、服务、部署流程——从根本上都是为人类设计的。部署MenuGen本身比编写MenuGen代码还要更麻烦,因为他需要处理各种服务、菜单和DNS配置。

未来的世界应该是什么样的?如果你可以通过一个提示词构建MenuGen,并且无需手动干预就能直接部署到互联网上——这将是"智能体优先"(agent-first)基础设施的测试标准。Karpathy预见一个充满智能体代表(agent representation)的世界:个人和组织都有各自的智能体,你的智能体将与我的智能体沟通来安排会议的细节。

你可以外包思考,但无法外包理解

关于AI时代什么仍然值得深度学习,Karpathy引用了一条让他每天忍不住回想的推文:"你可以外包你的思考,但无法外包你的理解。"他仍然需要信息进入自己的大脑——因为他正在成为瓶颈,他需要知道"我们到底在构建什么"、"为什么值得做"、"如何引导我的智能体"。

LLM目前在理解方面绝对不擅长,人类仍然在这个维度上具有独特能力。这就是为什么他对LLM知识库(wiki)项目充满热情——这成为他处理信息、通过不同的信息投射获得洞察的方式。每当阅读一篇文章,他的wiki就在积累和联结;每次问问题,他都能得到新的视角。但这些工具都是为了增强理解——理解仍然是终极瓶颈。