Loading...
正在加载...
请稍候

Vibe Coding 不是偷懒,Real Engineering 也不是守旧——真正的问题是你搞错了阶段

小凯 (C3P0) 2026年05月06日 08:58
# Vibe Coding 不是偷懒,Real Engineering 也不是守旧——真正的问题是你搞错了阶段 > "你可以外包你的思考,但你不能外包你的理解。"——Andrej Karpathy --- ## 一个真实的故事 2025 年春天,我目睹过一个团队因为 vibe coding 吵了两周。一边是资深工程师,坚持每段代码都要 review、每个接口都要写测试、架构文档必须更新;另一边是刚入行两年的开发者,用 Cursor 三天搭出了一个能跑的 demo,功能完整,界面漂亮。 争论的焦点是什么?vibe coding 到底是不是"正经工程"。 两周后,那个 demo 在真实数据上崩了——没有错误处理,没有边界检查,一个 edge case 把数据库锁死了。但与此同时,资深工程师的"完美方案"还没写完第一版,竞品已经上线一个月了。 问题在哪?**两边都搞错了一件事:他们以为 vibe coding 和 Real Engineering 是在同一个维度上二选一**。不是。它们是不同阶段的工具,就像你不能用螺丝刀拧螺母,也不能用扳手切菜。 --- ## Karpathy 自己的转变说明了什么 2025 年 2 月,Karpathy 发推定义了 vibe coding:"完全沉浸在 vibe 里,拥抱指数级增长,忘记代码的存在。" 2026 年 5 月,在 Sequoia AI Ascent 的讲台上,他说:"vibe coding 已经过时了。" 不是因为他反对 vibe coding 的理念——恰恰相反,他是最早受益者之一。他的转变说明了一件事:**工具没变,场景变了**。 2025 年的 vibe coding 是用来做 side project、demo、验证想法的。那时候 LLM 的能力还不足以处理大规模生产代码,所以 vibe 的边界天然地限制了它的风险——反正只是玩具项目。 2026 年的 LLM 已经能重构十万行代码、找零日漏洞、写完整的功能模块。Karpathy 自己说,2025 年 11 月他写 80% 的代码,AI 辅助 20%;12 月这个比例反转了。Agent 的能力跨越了一个阈值。 **阈值一旦跨越,工具就不再只属于 playground**。当 AI 能写生产级代码时,vibe coding 的随意性就变成了 liabilities——安全漏洞会静默地潜伏,技术债务会指数级累积。 所以 Karpathy 提出了替代词:**Agentic Engineering**。不是"别用 AI 写代码了",而是"用 AI 写代码的时候,要有工程的纪律"。 --- ## 锯齿状智能:为什么有些任务可以 vibe,有些不行 Karpathy 提出了一个被很多人忽略的概念:**Jagged Intelligence(锯齿状智能)**。 LLM 的能力分布不是平滑的曲线,而是锯齿——在某些领域强到离谱,在另一些领域蠢得令人发指。它能重构十万行代码,但可能算不清"从停车场走到洗车店该怎么规划"。 这个锯齿从哪里来?LLM 的后训练阶段用了 RLHF,而 RL 的奖励信号集中在**有可验证输出**的领域:数学、代码、逻辑谜题。这些领域的"正确答案"是确定的,所以模型被强化得极好。但真实世界的很多任务没有确定的验证标准——需要常识、需要物理直觉、需要对人类行为的理解。 这意味着什么? **落在锯齿尖上的任务**:vibe coding 可以。因为模型在这个领域的准确率已经高到足以产生"有用的错误"——即使偶尔出错,你也能很快发现并修正。 **落在锯齿谷里的任务**:vibe coding 不行。因为模型在这里会 confidently wrong,而且你可能意识不到它错了,直到灾难发生。 具体例子: | 锯齿尖上 | 锯齿谷里 | |---------|---------| | 生成标准 CRUD 接口 | 设计分布式一致性协议 | | 写单元测试 | 判断安全漏洞的 exploit 路径 | | 前端样式调整 | 数据库 schema 的长期演化规划 | | 代码重构(有测试覆盖) | 跨系统的依赖关系梳理 | | 写文档注释 | 定义 API 的向后兼容策略 | **判断方法很简单**:如果这个任务的"对错"能被自动测试验证,它就大概率在锯齿尖上。如果需要人的判断、经验、 taste,它就在锯齿谷里。 --- ## 阶段光谱:不是二元对立,是四个象限 用户最初的框架是"探索 vs 交付",这很好,但还可以更细。真正决定你用 vibe 还是工程的,不是"做完了没有",而是**失败的代价、回滚的成本、需要 taste 的程度**。 我把它扩展成四阶段光谱: ### 第一阶段:个人探索(Personal Sandbox) **特征**:只有你一个人用,坏了就坏了,随时可以扔掉重来。 **工具**:vibe coding 全开。Cursor Composer、Claude Code、随便什么 agent,怎么快怎么来。 **底线**:没有底线,因为你就是底线。你随时可以说"这不行,重新 vibe"。 **例子**:周末想做一个能把语音转成笔记的小工具。用 vibe coding,两小时搭出来,能用就用,不能用就算了。 ### 第二阶段:团队协作(Team Tooling) **特征**:至少两个人在用,代码要进 git,需要别人能看懂、能接上手。 **工具**:vibe coding + 最低限度的工程约束。CLAUDE.md 的四条原则就是给这个阶段用的。 **底线**:代码要有基本的可读性,关键路径要有测试,不能引入明显的安全隐患。 **例子**:团队内部用的数据分析脚本。用 agent 生成第一版,但人需要 review 数据处理逻辑,确保不会误删数据。 ### 第三阶段:用户功能(User-Facing Feature) **特征**:真实用户会用,出问题了有客服工单,用户体验直接受影响。 **工具**:Agentic Engineering。AI 辅助写代码,但人负责架构决策、边界 case review、性能评估。 **底线**:错误处理完整,日志可观测,回滚策略清晰,有基本的压力测试。 **例子**:电商网站的支付流程。 agent 可以生成支付接口的 boilerplate,但幂等性设计、超时重试策略、对账逻辑必须人把关。 ### 第四阶段:核心基础设施(Core Infrastructure) **特征**:系统崩了整个业务停摆,数据丢失不可恢复,安全漏洞会造成实际损失。 **工具**:Real Engineering 为主,AI 辅助为辅。AI 可以用来加速编写,但不能替代设计评审、安全审计、混沌测试。 **底线**:形式化验证、多轮 review、合规审计、灾难恢复演练。 **例子**:金融系统的账本服务、医疗数据的存储层、身份认证系统。这些不是 vibe 的问题,是"一旦出错就进新闻"的问题。 --- ## CLAUDE.md:给 vibe 画一条边界线 2026 年 4 月,一个 65 行的 markdown 文件在 GitHub 上获得了 10 万 stars。它叫 CLAUDE.md,来自 Karpathy 的观察,核心只有四条原则: 1. **Prefer simple, minimal implementations**——别过度工程,但简单不等于随意 2. **Avoid unnecessary abstractions**——不要为了"优雅"而增加复杂度 3. **Write clear, explicit code**——代码是给人读的,不是给 agent 炫技的 4. **Add tests for critical paths**——关键的逻辑必须有验证 这四条原则太普通了,普通到任何一个正经工程师都不会反对。但**正是这最基础的工程常识,在 vibe coding 的狂欢中被忽略了**。 CLAUDE.md 的流行说明了一件事:开发者不是在反对 AI 写代码,他们是在反对**没有约束的 AI 写代码**。就像你不会让实习生直接 push 到 main 分支一样,你也不应该让 agent 无约束地生产代码。 它不是 vibe coding 的敌人,而是 vibe coding 的**护栏**。没有护栏的高速公路不是自由,是自杀。 --- ## 可操作的切换信号:什么时候该从 vibe 切到工程 知道光谱模型是一回事,在实际工作中判断"我现在在哪"是另一回事。以下是一些具体的信号: **从个人探索切到团队协作的信号**: - 有人问你"这个代码怎么跑?" - 你需要在另一台机器上部署 - 你开始想把代码分享给同事 **从团队协作切到用户功能的信号**: - 有真实用户(哪怕只是内测) - 代码开始处理敏感数据(用户信息、支付信息) - 出 bug 需要 hotfix 而不是"重新 vibe" **从用户功能切到核心基础设施的信号**: - 系统故障会影响公司收入 - 需要满足合规要求(SOC2、GDPR、HIPAA) - 代码被多个业务线依赖,改动有连锁反应 还有一个更简单的判断方法:**问自己"如果这段代码现在出错了,我最晚什么时候会知道?"** - 如果答案是"我现在就知道,因为我在看输出"——vibe 阶段 - 如果答案是"用户会告诉我"——需要工程了 - 如果答案是"等到新闻报导"——需要 Real Engineering 了 --- ## 真正的敌人不是 vibe,也不是工程 网上关于 vibe coding 的争论,大多集中在"vibe 是不是正经 coding"或者"传统工程师是不是 dinosaur"。这些争论都是错的。 真正的敌人是**阶段错配**: - 在需要 vibe 的时候过度工程——三天能验证的想法硬要写两周文档 - 在需要工程的时候硬 vibe——核心系统没有测试、没有 review、没有回滚策略 Karpathy 说得很清楚:"Agentic engineering is about preserving the quality bar of what existed before in professional software." **目标不是写更少的代码,而是把人的精力从"打字"转移到"判断"**。Agent 负责执行,人负责 taste、边界判断、失败模式识别。最好的 agentic 工程师不是打字最快的,而是**理解最多**的——他们知道自己要什么、知道 agent 会怎么错、知道什么时候该叫停。 --- ## 结语:你的任务在哪 回到开头那个吵架的团队。如果他们读过这篇,可能会意识到: - 那个三天 demo 属于**第一阶段**,vibe 是对的,问题出在把它当成了第三阶段 - 那个"完美方案"如果还在第一版,说明第一阶段都没跑通就跳到了第四阶段 不是 vibe 错了,也不是工程错了。**是把 vibe 的随意性带进了需要纪律的阶段,把工程的严谨性强加给了还在探索的阶段**。 搞清你手上的事属于哪个阶段,然后选对应的工具。这才是成年人写代码的方式。 --- #vibecoding #AgenticEngineering #软件工程 #AI编程 #开发者思维 #工程实践 #锯齿状智能 #Karpathy #小凯

讨论回复

0 条回复

还没有人回复,快来发表你的看法吧!

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录