← 返回列表

AI系列面试14:vibe coding和spec coding区别?

这是大多数程序员都会面临的问题。Vibe CodingSpec Coding 是当前借助大语言模型(LLM)编程时两种截然不同的工作范式。它们的核心区别在于:你给 AI 的“输入”是模糊的感觉,还是精确的规约


一、以做饭为例来简单描述下vibe coding和spec coding区别

  • Vibe Coding = 你和朋友说“我想吃辣的”,朋友凭感觉炒了一盘菜,你尝一口说“再咸一点”,他又加盐。味道可能惊艳,但换个朋友炒出来完全不同。
  • Spec Coding = 你写好菜谱:“郫县豆瓣 20g,牛肉片 150g,芹菜段 50g,大火爆炒 2 分钟,起锅前加糖 3g”。不同厨师按菜谱做,口味高度一致。

二、两者的定义

维度 Vibe Coding Spec Coding
别名 感觉驱动编程、提示即兴 规格驱动编程、文档先行
输入形式 “帮我做一个好看的登录页,要有科技感” “登录页需包含邮箱/密码输入框、记住我复选框、提交按钮;前端使用 React + Tailwind;表单校验规则:邮箱格式、密码长度≥8;失败时显示红色提示……”
AI 使用方式 对话式、迭代式:给出大致方向 → 看输出 → 再微调 工程化:先写详细 PRD/技术规范 → AI 基于规范生成代码
人类参与度 低:依赖 AI 发挥创意,人只负责“感觉对不对” 高:人先完成设计/架构,AI 主要做执行
典型场景 快速原型、个人小工具、UI 探索、创意写代码 生产级系统、团队协作、需要可维护/可测试的代码

三、两者工作流对比

Vibe Coding 流程

  1. 模糊想法:“我想写个爬虫,抓知乎热榜。”
  2. 写第一段 prompt:直接让 AI 生成代码。
  3. 运行 → 报错 → 把报错粘回去 → AI 修改。
  4. 感觉界面丑 → “把那个按钮变圆一点,背景改成渐变蓝” → AI 改。
  5. 功能缺 → “再加个保存到 CSV 的功能” → AI 加。
  6. 循环 3-5 直到“感觉差不多了”。

Spec Coding 流程

  1. 编写规格文档:明确输入/输出、数据结构、错误处理、性能要求、非功能性需求(如日志、限流)。
  2. 将规格拆分为任务:例如任务1:实现 fetch_hot_topics() 函数,遵守 spec 中的 API 签名。
  3. 逐个任务让 AI 实现:prompt 中包含函数签名、注释、测试用例预期。
  4. 人工审查和验证:确保符合规约,运行单元测试。
  5. 集成与回归

四、优缺点对比

特性 Vibe Coding Spec Coding
上手速度 极快,几分钟出原型 慢,需要写文档、拆任务
代码质量 低(可能冗余、不一致、隐藏 bug) 高(可读、可测、符合架构)
可维护性 差,后来者看不懂“为什么这么写” 好,规约即文档
对 LLM 依赖 极高,换模型可能输出彻底不同 中等,只要规约清晰,不同模型也能产出类似结构
调试难度 困难,不知道代码哪来的逻辑 容易,按 spec 逐条检查
适合团队协作 几乎不可能 可以(spec 作为沟通契约)
产出确定性 低,每次对话结果可能漂移 高,相同 spec 产生稳定输出

五、现实中的使用建议

“在工作中,vibe coding和spec coding不会二选一,而是混合使用,在合适的场景使用合适的方案:
- 在探索阶段(不确定技术选型或 UI 样式时),用 Vibe Coding 快速验证不同方案,比如‘用 Tailwind 写一个卡片组件看看效果’。
- 一旦方案确定,就立即切换到 Spec Coding:把成功原型反向整理成清晰的规格(输入输出、边界条件、错误处理),然后让 AI 或人工严格按照 spec 重写生产级代码。
纯 Vibe 模式只适合一次性脚本或内部小工具;对于要长期维护、多人在用的系统,Spec Coding 是硬要求。”

评论

暂无已展示的评论。

发表评论(匿名)