一年前,Andrej Karpathy 提出了“vibe coding”(直译为“氛围编程”)这个概念,描述了一种编程方式:你输入提示,交给 AI 处理,接受它输出的所有内容,不检查代码差异,通过粘贴错误消息来迭代。这是一个很好的标签,描述了一个真实的现象——使用纯 AI 自动驾驶来构建快速原型或最小可行产品(MVP)。
问题在于,“vibe coding”已经变成了一个万能词汇。人们现在用它来描述从周末黑客马拉松到有纪律的工程工作流程,其中 AI 代理在人类监督下处理实现。这些活动根本不同,将它们混淆在一起会造成真正的混乱——以及真正的损害。
Vibe coding 意味着 跟随感觉 和 不审查代码。这是决定性的特征。你输入提示,你接受,你运行,你看看它是否有效。如果不行,你粘贴错误信息然后再试一次。你不断输入提示。人类是提示 DJ,而不是工程师。
这对于以下情况真正有用:
如果 vibe coding 能够让数百万人拥有创建自定义软件的能力,那么这是一场真正的胜利。这种技术在工具箱中占有合理的位置。
但是这种方法的失败模式已经被充分记录。模式始终相同:它演示得很好,然后现实到来了。你尝试修改它、扩展它或保护它,你会发现没有人真正理解代码在做什么。正如一位工程师所说,“这不是工程,这是希望”。
事情是这样的:许多经验丰富的工程师现在通过 AI 获得了巨大的生产力提升——2 倍、5 倍,甚至更多——同时保持代码质量。但是他们的工作方式与 vibe coding 完全不同。他们在输入提示之前编写规范。他们审查每个代码差异。他们运行测试套件。他们将 AI 当作快速但不可靠的初级开发人员,需要不断的监督。我个人喜欢“AI 辅助工程”(AI-assisted engineering),并讨论了它如何描述人类在回路中保持的那一端。
Simon Willison(我非常喜欢他的工作)提出了“vibe 工程”——它重新使用“vibe”一词,同时添加“工程”以表明纪律。但是在观看社区辩论这个问题几个月后,我认为“vibe”这个词带来了太多的负面含义。它表明了一种随意性。当你告诉一位首席技术官你正在“vibe 工程”他们的支付系统时,你可以看到他们脸上的担忧。
Andrej Karpathy 本周建议使用“代理工程”(agentic engineering),我认为我喜欢它。
以下是它为什么有效的原因:
它描述了实际发生的事情。你正在编排 AI 代理——可以执行、测试和完善代码的编码助手——同时你扮演架构师、审查者和决策者的角色。你可能只会手写一小部分代码。其余的代码来自在你指导下的代理。这是代理的特征。而且你在整个过程中应用工程学的纪律。这是工程学的特征。
它在专业上是可读的。“代理工程”听起来像它实际上是什么:一个涉及自主代理的严肃工程学学科。你可以在不感到尴尬的情况下告诉你的工程副总裁。你可以把它放在工作描述中。你可以围绕它建立团队实践。
它画了一条清晰的界线。Vibe coding = YOLO。代理工程 = AI 处理实现,人类拥有架构、质量和正确性。术语本身强制执行了这种区别。

工作流程并不复杂,但它需要 vibe coding 明确放弃的纪律:
你从计划开始。在输入任何提示之前,你编写设计文档或规范——有时使用 AI 辅助。你将工作分解为明确定义的任务。你决定架构。这是 vibe 编码器跳过的部分,也是项目脱轨的原因。
你指挥,然后审查。你给 AI 代理一个来自计划的明确定义的任务。它生成代码。你以与审查人类同事的 PR 相同的严谨性审查代码。如果你无法解释一个模块的作用,它就不会被加入。
你无情地测试。代理工程和 vibe coding 之间的最大区别是测试。使用一个扎实的测试套件,AI 代理可以迭代直到测试通过,从而让你对结果有很高的信心。没有测试,它会高兴地宣布“完成”在破碎的代码上。测试是你将不可靠的代理转变为可靠系统的方式。
你拥有代码库。你维护文档。你使用版本控制和 CI。你监控生产。AI 加速了工作,但你对系统负责。
做得好的团队经常报告更快的开发速度——这些收益来自于增强了一个扎实的流程,而不是放弃了一个流程。AI 处理样板和繁琐的工作。人类专注于架构、正确性、边缘情况和长期可维护性。
讽刺的是,AI 辅助开发实际上比传统编码更奖励良好的工程实践。你的规范越好,AI 的输出越好。你的测试越全面,你就越有信心委托。你的架构越干净,AI 就越不会产生奇怪的抽象。正如一项分析所指出的,“AI 没有引起问题;跳过设计思考才是问题所在”。
这是一个令人不舒服的真相:代理工程不成比例地造福了高级工程师。如果你有深厚的基础——你理解系统设计、安全模式、性能权衡——你可以将 AI 用作巨大的倍增器。你知道什么是好的代码,所以你可以高效地审查和纠正 AI 输出。
但是如果你是初级工程师,并且在构建基础知识之前依赖于 AI,你就有可能面临危险的技能萎缩。你可以在不理解代码的情况下生成代码。你可以在不了解为什么存在某些模式的情况下发布功能。几位工程领导人已经将其标记为一个正在出现的危机:一代开发人员,他们可以提示但不能调试,他们可以生成但不能推理他们所生成的内容。
这不是对 AI 辅助开发的反对。这是对它的要求的诚实。代理工程并不比传统工程更容易——它是不同的一种难度。你正在用输入时间换取审查时间,用实现努力换取编排技能,用编写代码换取阅读和评估代码。基础知识变得更加重要,而不是变得不那么重要。
轨迹很明确:AI 代理变得更加强大,代理工程工作流程正在成为越来越多专业开发人员的默认选择。这将会加速。
我们需要:
AI 编码的崛起并没有取代软件工程的工艺——它提高了软件工程的标准。那些将会茁壮成长的开发人员不是那些提示最快的人,而是那些对他们正在构建的内容和为什么构建有最清晰的思考的人,然后使用所有可用的工具——包括 AI 代理——来正确地构建它。
Vibe coding 向我们展示了什么是可能的,当你放弃所有惯例时。
现在是时候把工程带回来了。让我们称之为它的真实名称。
我已经与 O'Reilly 合著了一本新书,超越 vibe coding,它更深入地探讨了 AI 辅助(和代理)工程的实用框架。如果你已经在自己的工作流程中解决了这个问题,我很想听听什么对你有效。