今年初 Karpathy 在 X 上造了一个词:Vibe Coding。
原文大意是:我现在写代码的方式变了,我完全拥抱 AI,不再手动写任何东西。我看到代码就接受,不太仔细看差异,它报错了我就把错误信息粘回去让它修。代码在成长,已经超出了我通常愿意手动理解的范围,但它能跑就行。
这段话在开发者社区引起了巨大争议。有人觉得这是编程的未来,有人觉得这是在教人写 bug。
几个月后,Karpathy 做了一个演讲把这个概念升级了。标题是「From Vibe Coding to Agentic Engineering」。
Vibe Coding 是什么
Vibe Coding 的核心特征:
- 你不写代码,只描述你想要什么
- AI 生成代码,你不逐行检查
- 出了 bug,把报错丢回给 AI
- 代码库快速增长,你不完全理解它的内部结构
- 判断标准是「能跑」而不是「写得好」
这听起来很疯狂,但在特定场景下确实有效:快速原型、一次性脚本、个人工具、黑客马拉松。这些场景下代码的生命周期很短,维护性不重要,速度才重要。
Karpathy 自己说得很清楚:Vibe Coding 适合「周末项目」,不适合「你要维护 10 年的核心业务系统」。
问题出在哪
Vibe Coding 最大的问题不是代码质量低,而是它没有办法处理复杂性。
当项目超过一定规模(大约几千行),Vibe Coding 开始崩溃。AI 开始重复生成之前已经有的功能,不同模块之间出现不一致,修一个 bug 引入两个新 bug。你不理解代码,所以你也无法有效地引导 AI。
这是一个结构性限制:当人类完全退出理解循环,系统就失去了方向感。AI 很擅长写符合局部要求的代码,但它缺乏对整体架构的把握。
Agentic Engineering 的升级
在演讲里 Karpathy 提出了进化路径。不是「Vibe Coding 的改进版」,而是质的变化:
Vibe Coding:人描述需求 → AI 写代码 → 人不看代码 → AI 修 bug
Agentic Engineering:人设计系统架构和约束 → Agent 自主执行 → Agent 自己验证 → 人审查关键决策点
区别在三个地方:
1. 人的角色不同。 Vibe Coding 里人是需求描述者。Agentic Engineering 里人是架构师和审核者。你不是告诉 AI「帮我做一个登录页面」,而是定义「系统的认证层应该满足这些约束,你来实现」。
2. 验证方式不同。 Vibe Coding 里验证是「能跑就行」。Agentic Engineering 里验证是系统化的:自动测试、类型检查、lint、性能基准。Agent 自己跑测试,不通过就自己修,不需要人把报错粘回去。
3. 知识积累不同。 Vibe Coding 每次从零开始。Agentic Engineering 里 Agent 维护自己的知识库(就是上一篇讲的 LLM Wiki 思路),每个项目积累的经验可以传递给下一个项目。
实际操作的样子
用一个具体的例子。假设你要给一个 Web 应用加用户权限系统。
Vibe Coding 的做法: 「帮我加一个权限系统,有管理员和普通用户两种角色,管理员能删除帖子。」 → AI 生成代码,可能塞到了错误的文件里,可能和现有的认证逻辑冲突,可能硬编码了角色名。你不在意,能跑就行。
Agentic Engineering 的做法: 你先写一个约束文档(类似 program.md):
- 权限模型使用 RBAC
- 角色和权限的映射存在数据库里不要硬编码
- 所有 API endpoint 必须经过权限中间件
- 新增 endpoint 必须有对应的权限测试
- 不能破坏现有的测试套件
然后让 Agent 去实现。Agent 自己读现有代码理解架构,自己写代码,自己跑测试,测试不过自己修。你在最后审查一下关键的设计决策(比如权限模型的 schema 设计)。
为什么这很重要
这个演进路径揭示了一个更深层的趋势:编程正在从「写代码」变成「设计约束」。
之前几篇文章里的案例都在印证这个趋势:
- Forge 的 guardrails:不是让模型变聪明,而是设计约束让笨模型也能可靠工作
- Co-Scientist 的锦标赛:不是让一个 Agent 想出完美假说,而是设计对抗机制让一群 Agent 互相淘汰
- autoresearch 的 program.md:不是手动做实验,而是定义规则让 Agent 自主实验
模式是一样的:人类从执行者退到规则制定者的位置。执行交给 Agent,人负责定义什么是对的、什么是不允许的。
编程技能不会消失,但形态会变。以前的核心技能是「写正确的代码」。以后的核心技能可能是「定义正确的约束」和「审查 Agent 的输出」。
这两个技能需要的知识基础是一样的(你得懂系统设计、懂安全、懂性能),但产出方式完全不同。一个像工匠,一个像建筑师。
这是 AI Agent 系列的第十一篇。前几篇:
- AI Agent 到底是什么?和 ChatBot 有什么本质区别
- MCP 协议实战指南:从原理到自己动手写一个 MCP Server
- AI 编程 Agent 进化史:从代码补全到自主开发
- AI Agent 失控了:它写了篇文章攻击自己的维护者
- Google 让 AI 像科学家一样辩论:Co-Scientist 的多 Agent 协作架构
- 一个 8B 模型怎么从 53% 干到 99%:Forge 的 Guardrails 架构
- Agent 也需要遗忘:hermes-agentmemory 的拉取式记忆设计
- Karpathy 加入 Anthropic:为什么顶级研究者选择了 Claude
- Karpathy 的 autoresearch:让 AI 自己做 AI 研究
- LLM Wiki:Karpathy 提出的 Agent 知识库方案为什么火了