Andrej Karpathy认为软件开发正在从“vibe coding”(提升底线)转向“agentic engineering”(保持质量标准)。核心在于,Prompting已等同于编程,但模型存在“锯齿状智能”(Jagged Intelligence),即在可验证领域(如代码)能力极强,在常识推理等不可验证领域则可能犯错。因此,专业开发者需驾驭这些强大但易错的Agent,在提升效率的同时,守住安全与质量的底线。
从 Vibe Coding 到 Agentic Engineering:Andrej Karpathy 的最新观点
前OpenAI联合创始人Andrej Karpathy近期的一场访谈,为我们描绘了人工智能辅助软件开发的下一个阶段。他不仅重新定义了我们与AI编程工具的协作方式,更指出了从“随性编码”(Vibe Coding)迈向“代理工程”(Agentic Engineering)的必然路径。这些观点为使用 Claude Code 等工具的开发者提供了深刻的框架,帮助理解我们手中的工具究竟是什么,以及如何正确地使用它们。
软件3.0:Prompting 即编程
Karpathy将软件范式划分为三个时代。软件1.0是编写明确的规则代码;软件2.0是通过数据集和神经网络架构进行“编程”;而软件3.0的核心是Prompting即编程。此时,上下文窗口(Context Window)成为你操控LLM这个“可编程计算机”的杠杆。传统软件处理结构化数据,而软件3.0则能处理更通用的信息,完成以往不可能的任务。
一个生动的例子是安装软件。传统方式是编写复杂的跨平台Shell脚本(软件1.0思维),而软件3.0的方式是将一段说明文本“复制粘贴”给你的Agent。Agent利用其内在的智能,会检查你的环境、执行操作、在循环中调试问题,最终完成任务。这不再是精确指定每一步细节,而是向一个智能体描述目标。
Karpathy用自己开发的菜单图片应用MenuGen进一步说明:在软件3.0范式下,用户只需将餐厅菜单照片交给像Gemini这样的模型,并提示“使用工具为菜单项添加配图”,模型便能直接输出渲染好图片的菜单图像。整个应用程序(MenuGen)本身在新范式下显得多余。这迫使我们思考,如何利用这些新能力去创造前所未有的事物,而不仅仅是让旧流程跑得更快。
“锯齿状智能”与可验证性框架
理解了“Prompting即编程”,下一步必须认识到当前大语言模型的一个根本特性:锯齿状智能(Jagged Intelligence)。Karpathy解释,由于训练方式(基于海量强化学习环境与奖励),模型在可验证领域(如数学、编程)能力极强,峰值能力远超人类想象——例如能重构十万行代码库或发现零日漏洞。然而,它们在常识推理等不可验证领域则表现不佳,甚至会建议你步行50米去洗车。
这种“锯齿状”源于训练数据的分布。前沿实验室为了提升模型在代码等高经济价值领域的能力,会投入大量经过验证的强化学习环境数据,导致这些“电路”被强化。而其他未被覆盖的“电路”,模型就可能犯下基础错误。
这引出了可验证性(Verifiability)框架:AI将优先、更快地自动化那些输出易于验证的领域。代码天然具备可验证性(编译、运行、测试),因此成为AI能力的高地。对于开发者而言,这意味着在利用AI编程时,你必须清醒地认识到其能力边界。你不能盲目信任,而应将其视为需要监督的强大工具。
从 Vibe Coding 到 Agentic Engineering:两条不同的道路
在访谈中,Karpathy明确区分了这两个概念:
- Vibe Coding(随性编码):核心是提升底线。它让更多人能够通过自然语言描述来创造软件,极大地民主化了软件开发,这是革命性的进步。
- Agentic Engineering(代理工程):核心是保持质量标准。它是在专业软件工程的背景下,利用强大但“锯齿状”的Agent来加速开发,同时绝不允许因使用AI而引入安全漏洞或降低代码质量。这是一个需要精深技艺的工程学科。
两者并非演进关系,而是不同场景下的不同方法。Vibe Coding适用于快速原型、个人项目或内部工具;而构建面向生产环境、需要高可靠性、安全性和可维护性的系统,则必须采用Agentic Engineering。后者要求工程师深入理解AI工具的能力与缺陷,负责系统的架构设计、质量规范和最终验收,将Agent视为能力极强但需要明确指引的“实习生”。Karpathy指出,精通Agentic Engineering的人所获得的加速效果,远超过去的“10倍工程师”。
人类在循环中的角色:品味、判断与理解
当Agent承担越来越多的细节实现时,什么人类技能变得更宝贵?Karpathy的回答是:品味(Taste)、判断力(Judgment)和理解(Understanding)。Agent会生成代码,但可能包含笨拙、臃肿或脆弱的抽象。你需要负责顶层设计、用户体验、美学风格,并做出关键的工程决策。
一个关键比喻是:“你可以外包思考,但不能外包理解。” 信息必须进入你的大脑,你才能有效地指挥Agent。你必须理解系统底层的原理、正在构建什么、为何有价值,以及如何将复杂任务分解。例如,在神经网络中,你无需再记忆PyTorch和NumPy的每一个API细节差异(这些可以交给Agent),但你必须理解张量、视图、存储和内存布局的核心概念,以避免设计出低效的系统。
因此,未来开发者最重要的能力之一,将是与Agent协作,共同设计出详尽、明确的技术规格(Specification),并对其进行验证和监督。Agent负责执行,而人类负责理解、规划和决策。
对开发者的启示与最佳实践
Karpathy的观点为我们使用Claude Code等先进工具提供了清晰的路线图:
- 拥抱范式转变:将你的工作视为“向Agent编程”。高效利用Claude Code的 Commands 和 Skills 来定义可复用的任务模式,这本身就是一种新的编程活动。
- 驾驭锯齿,设立护栏:利用Claude Code的 Subagents 来隔离和专业化处理不同任务,并通过 Hooks 和严格的工作流(如编排工作流)设立自动化检查点,确保代码质量、安全性和风格一致性,守住“代理工程”的质量底线。
- 投资于理解与设置:花时间深入理解AI编程工具的原理和边界,并精心配置你的开发环境。投资于你的
.claude/settings.json配置、定义清晰的技能和命令,这将带来长期的效率回报。 - 负责设计与架构:让Agent处理API细节、样板代码和繁琐配置,而你专注于系统设计、核心逻辑、用户体验和长期维护性。你的角色正从“编写者”更多地转向“架构师”和“指挥官”。
FAQ
Q: Vibe Coding和Agentic Engineering到底有什么区别? A: Vibe Coding旨在降低编程门槛,让更多人能快速创造应用,重在提升能力底线。Agentic Engineering则是在专业软件开发中,利用AI代理加速工作,同时严格维持甚至提升软件的安全、可靠与质量标准,它是一项严肃的工程纪律。
Q: 什么是“锯齿状智能”,对开发者使用AI工具意味着什么? A: “锯齿状智能”指大语言模型在编程等可验证任务上能力超强,但在常识推理等不可验证任务上可能表现不佳。这意味着开发者不能盲目信任AI的所有输出,尤其是在设计、逻辑判断和非代码领域,必须保持监督和验证,将其作为需要审慎使用的强大工具。