如何理解 Vibe Coding 与 Spec Coding?
未标记
考查重点:快速反馈与规格约束。Vibe偏运行效果快速迭代,Spec先明确约束验收,按局部/跨模块风险组合,二者都要真实运行验证
本题目录
参考答案
核心回答
Vibe Coding强调用自然语言描述意图、快速生成并运行代码,再根据效果反复调整;Spec Coding强调先把目标、关键约束和验收行为表达清楚,让AI围绕这些约定实现。两者的差别主要是如何减少需求理解与实现之间的偏差,而不在于是否使用AI。
原型探索适合快速试错;已有业务系统、跨模块协作或需要长期维护的功能,更需要明确接口、状态和边界。实际开发可以先用原型发现需求,再补齐必要约定;简单修改也可以只用几条清楚要求,不必为采用Spec Coding创建一整套文档。
两种方式怎样影响开发
Vibe Coding反馈快,能把抽象想法变成可讨论的界面或行为,但“运行起来像预期”可能漏掉异常输入、权限和兼容问题。如果开发者不理解关键代码,后续定位问题会更困难。日常认真审读、测试AI代码的做法,也不必都叫Vibe Coding。
Spec Coding把容易产生分歧的信息显式化。例如“导出订单”要说明导出对象、字段、时间范围、权限、空结果和失败表现;技术实现再沿现有框架与代码模式展开。规范可以是简短任务说明、接口契约或验收例子,重点是能用来判断实现是否偏离。
GitHub Spec Kit提供规范、技术计划和任务分解等工作流,是一种可参考实现;文件名和阶段数量并非所有团队统一标准。有了规范也不意味着代码自动正确,仍需根据运行结果发现规范遗漏与实现错误。
同一个需求怎样处理
假设做一个内部造数工具,先用AI生成可运行原型,验证字段选择和预览体验。准备供团队持续使用时,再明确数据类型、关联约束、随机种子、规模上限和导出格式,用固定输入验证输出数量与一致性。
如果只是已有页面增加一个展示字段,读清现有列定义后直接修改、检查显示及排序就足够;如果要改订单状态机,则应先把合法状态转换和异常处理讲清。流程重量取决于影响与错误代价,不取决于术语。
常见追问
Spec是否会限制创造力? 可以固定用户目标和不可破坏的约束,同时允许AI比较实现方案;原型与规范还可以交替迭代。
如何衡量提效? 看从需求到可用结果的时间、返工、缺陷和维护成本,不能仅看AI生成代码比例。
参考资料
- 国内:JavaGuide:Spec Coding规范驱动编程:借鉴轻量规范中的目标、约束与验收例子,说明正文中 Spec 如何减少接口和业务边界的理解偏差。
- 国内:zero2Agent:Vibe Coding的适用条件:参考快速试错及生成后验证的讨论,说明正文中 Vibe Coding 的反馈方式与原型探索的适用条件。
- 国内:WeThinkIn:编码Agent运行架构:借鉴编码 Agent 的运行环境与反馈职责,说明正文中规范仍需借助实际运行检查实现正确性的原因。
- 国外:GitHub:Specification-Driven Development:依据规范、计划与任务的衔接,说明正文中 Spec Kit 把开发意图转成实现活动的做法。
- 国外:Anthropic:Best practices for Claude Code:参考测试、构建和界面结果等可观察验证,说明正文中原型与规范需要落实到固定输入和真实输出检查的方式。
