一、两种范式的碰撞2025年AI编程工具全面爆发。Cursor、Claude Code、GitHub Copilot、Windsurf……开发者们从未如此高产——一个曾经需要两周的登录模块现在两小时就能跑起来。但与此同时另一种声音也开始出现AI写的代码看是能看但改起来真费劲。跑了两周突然发现整个架构方向都是歪的。功能实现了但边界条件全没考虑。这两种声音恰好对应了当前AI编程的两种范式Vibe Coding和Spec Driven Development规格驱动开发。前者追求速度与直觉后者追求严谨与可维护性。它们不是非此即彼的对立关系而是AI编程光谱的两端。理解它们各自的定位学会让它们协同工作是每个AI时代的开发者都必须掌握的技能。二、Vibe Coding编程的自由式2.1 什么是 Vibe CodingVibe Coding这个词由前特斯拉AI总监、OpenAI联合创始人Andrej Karpathy提出。他的原话是The hottest new programming language is English.换成中文也一样——最热门的编程语言是自然语言本身。在实际操作中Vibe Coding的工作流是这样的不满意满意 灵感/想法✍️ 写一句Prompt AI生成代码 满意吗 调整Prompt✅ 交付整个过程就像一场对话你描述想法AI给你结果你来来回回调整直到差不多能用。2.2 Vibe Coding 的魔力为什么Vibe Coding让开发者如此上头极低的启动门槛。不需要写详细的设计文档想到什么说什么AI立刻给你反馈。这种感觉就像画画时先用铅笔打草稿——快速、自由、不设限。探索效率极高。当你想验证一个想法、测试一个API、或者快速搭建一个Demo时Vibe Coding是最佳选择。传统方式需要先设计、再编码、再调试Vibe Coding可以让你在30分钟内看到可运行的原型。创造力解放。因为你不用纠结于实现细节所以可以把更多精力花在想要什么而不是怎么做上。这种体验特别适合前端页面、工具脚本、数据分析等探索性工作。2.3 Vibe Coding 的暗面然而Vibe Coding的自由是有代价的而这个代价会随项目规模呈指数级增长问题表现模糊性累积做个登录功能——AI默认选了最简单的实现而你忘了说要支持验证码边界条件缺失能跑通Happy Path但错误处理、限流、降级策略一概没有架构一致性差每次对话都是独立的AI不知道你项目的整体架构约束可维护性黑洞代码能用但重构成本极高——因为没有人真正理解全部逻辑幻觉放大AI擅自在代码里加戏引入你从未要求的功能或依赖Karpathy本人也承认这一点。他在提出Vibe Coding的同时也调侃说自己在Vibe Coding时经常全盘接受AI的建议因为懒得去深究。问题不在于模型不够强大。问题在于我们是在凭感觉进行开发。因此Vibe Coding也可以称之为意识流编程。三、SDD编程的规范派3.1 什么是 SDDSpec Driven Development规格驱动开发并不是一个新概念。它的思想根源可以追溯到契约式设计Design by ContractBertrand Meyer在1986年提出的概念强调软件模块之间应该通过明确的契约来交互行为驱动开发BDD用自然语言描述系统行为然后驱动开发测试驱动开发TDD先写测试再写代码SDD的核心思想很简单在写代码之前先用结构化的规格说明Spec定义清楚系统应该做什么。这听起来像是回到了瀑布模型的需求文档先行但实际上完全不同——SDD的规格说明是活的它直接驱动AI生成代码、测试、文档并且随项目演进持续迭代。3.2 SDD 的工作流不清晰清晰 编写Spec文件 AI评审Spec Spec是否清晰 人工修正Spec 根据Spec生成测试 根据Spec生成代码 根据Spec验证结果 Spec即为文档与Vibe Coding的关键区别在于你不再只是描述想法而是在定义行为与约束。3.3 一份好的 Spec 长什么样SDD的Spec可以用Markdown文件来写清晰、可版本控制、可直接喂给AI。来看一个例子## 任务用户认证功能 ### API 定义 - 端点POST /api/user/login - 输入格式JSON - 输出格式JSON ### 行为规约 1. 输入用户名支持手机号/邮箱/普通用户名 密码 2. 连续登录失败 ≥ 3 次时额外要求4位图形验证码 3. 登录成功返回 200响应体包含 - access_tokenJWT有效期2小时 - refresh_tokenUUID有效期14天 - user_id、角色列表、scope 4. 认证失败返回 401响应体包含错误码和错误描述 ### 安全约束 - 同一IP每分钟限流10次 - 连续10次失败后锁定账户 - 首次锁定15分钟每次递增15分钟上限12小时 - 密码存储使用 bcryptcost12 ### 可观测性 - 记录登录日志请求时间、IP、User-Agent、来源APP/Web - 暴露 Prometheus 指标login_total、login_failure_total、login_latency ### 技术栈 - 语言Python 3.12 - 框架FastAPI - 数据库PostgreSQL - 缓存Redis注意这份Spec里没有一行代码但定义了一切。AI拿到它之后可以生成符合约定的API实现生成对应的单元测试和集成测试生成API文档在重构时验证行为一致性四、正面交锋Vibe Coding vs SDD 全方位对比4.1 核心差异一览维度Vibe CodingSDD规格驱动开发思考方式反应式边做边想结构式先想再做输入自然语言Prompt结构化SpecMarkdown/YAML/JSON驱动因素直觉 对话反馈行为规约 约束条件AI的角色主力编码者协作执行者人的角色提示词工程师产品经理 架构师文档事后补救大概率没有Spec即文档测试手动验证为主Spec驱动自动生成可追溯性弱谁知道AI为什么这么写强Spec是唯一可信来源4.2 一个具体案例的对比假设需求是构建一个商品推荐API。Vibe Coding 的做法你用嵌入向量构建一个推荐API AI好的这是代码... 你加上分页 AI已添加... 你排除同品牌商品 AI已排除... 你好像没做超时处理 AI抱歉我来加上...结果功能能用但你很可能漏掉了相似度阈值推荐了完全不相关的商品怎么办冷启动策略新商品没有嵌入向量怎么办降级方案向量搜索服务挂了怎么办评估机制你怎么知道推荐效果好还是差SDD 的做法在写一行代码之前先定义## 推荐API行为规约 ### 输入 - product_id: string必填 ### 处理流程 1. 根据 product_id 从向量库检索嵌入向量 2. 执行余弦相似度搜索 3. 过滤规则 - 排除同品牌brand_id 相同 - 相似度阈值 0.82 的视为不相关 - 排除已下架商品 4. 结果排序相似度降序 5. 限制返回 top 10 ### 降级策略 - 向量库不可用时 → 回退到基于标签的规则推荐 - 匹配结果 3 时 → 自动回退到热门商品推荐 ### 性能要求 - P99延迟 200ms - 需要 Redis 缓存TTL: 30分钟 ### 可观测性 - 记录每次推荐请求的延迟和相似度分布 - 提供离线评估脚本基于标注数据集拿到这份SpecAI可以一次性生成完整的推荐服务实现单元测试覆盖正常流程、降级策略、边界条件评估脚本监控面板配置4.3 适用场景矩阵场景推荐范式原因快速原型/ HackathonVibe Coding速度优先明天就可能扔掉个人工具脚本Vibe Coding你一个人用知道所有隐式假设探索性数据分析Vibe Coding需求在不断变化Spec跟不上前端UI快速迭代Vibe Coding肉眼可见调就完了生产级后端APISDD边界条件多出问题影响大多服务协作系统SDD契约不清晰 下游全崩金融/医疗等合规系统SDD可审计性是不可妥协的多人协作的大型项目SDDSpec是团队的共同语言需要长期维护的核心模块SDD代码会换人Spec会留下五、最佳实践如何让两者协同工作这才是本文最重要的部分。Vibe Coding和SDD不是二选一而是可以根据项目阶段交替使用。以下是我在实践中总结的组合策略。5.1 三阶段混合工作流阶段三Spec 驱动实施阶段二Spec 固化阶段一Vibe 探索不对对了 模糊想法 Vibe Coding快速出原型 体验 验证可行性 方向对吗 沉淀为Spec草稿 完善Spec AI评审Spec 补充边界条件 团队Review✅ Spec定稿 生成测试 生成实现 验证 部署 迭代更新Spec阶段一Vibe 探索快速试错这个阶段的目标是验证想法的可行性不是写出完美代码。用Vibe Coding快速搭建MVP大胆尝试不同的技术路线不要纠结代码质量——这段代码大概率会被重写把重点放在这样做的用户体验对吗而不是代码写得优雅吗产出物一个能跑的原型 对需求的初步理解阶段二Spec 固化沉淀共识一旦确认方向正确立刻刹车转入Spec模式。把探索阶段积累的理解整理成结构化的Spec让AI帮你Review把Spec发给AI让它指出模糊之处团队ReviewSpec是团队的共同语言必须达成共识特别关注边界条件错误处理、降级策略、性能约束、安全要求产出物一份经过Review的Spec文件建议放在项目仓库的/specs/目录下阶段三Spec 驱动实施严谨交付先让AI根据Spec生成测试用例TDD SDD的组合拳再让AI生成实现代码用Spec验证产出跑测试、做Code Review、对照Spec逐条检查随着需求变化先更新Spec再更新代码——保持Spec永远是唯一可信来源产出物可交付的代码 测试 文档Spec本身就是文档5.2 Vibe中写Spec——反向操作另一个非常实用的技巧是用Vibe Coding的方式来帮你写Spec。比如你想做一个支付模块自己不确定要考虑哪些边界条件直接把需求丢给AI你我准备做一个支付模块的Spec帮我brainstorm一下需要考虑哪些方面特别是容易遗漏的边界条件 AI列出几十个要点包括幂等性、回调重试、分布式事务、对账、退款流程…… 你很好基于这些帮我生成一份初始Spec草稿。Vibe Coding负责发散SDD负责收敛。这个组合非常强大。5.3 按模块粒度灵活切换不是整个项目只能选择一种范式。同一个项目里可以按模块粒度灵活切换项目/ ├── specs/ │ ├── user-auth.spec.md ← SDD安全敏感边界条件多 │ ├── payment.spec.md ← SDD金融合规不能出错 │ └── recommendation.spec.md ← SDD算法行为需要精确控制 ├── src/ │ ├── admin-dashboard/ ← Vibe Coding内部工具快速迭代 │ ├── analytics-reports/ ← Vibe Coding探索性需求频繁变化 │ └── landing-page/ ← Vibe Coding营销页面视觉驱动判断标准问自己如果这个模块出bug影响有多大影响小 → Vibe Coding影响大 → SDD5.4 Spec 的恰到好处原则SDD最大的陷阱是过度规约Over-Specification。记住Spec不是写作文不需要面面俱到。它只需要定义做什么和不做什么的边界。好的Spec像篱笆划定边界而非规划每一寸土地。Spec层级包含内容示例必须API契约、数据模型、安全约束、降级策略同一IP每分钟限流10次建议推荐的技术方案、性能目标P99 200ms缓存TTL 30分钟避免具体实现细节、类结构、内部算法使用工厂模式创建PaymentProcessor当发现自己在Spec里写请使用XXX设计模式时停笔。那是AI该操心的事情。六、给团队的实践路线图如果你所在的团队正在引入AI编程以下是一个循序渐进的路线图第一步从Vibe Coding开始第1-2周让团队成员先用Vibe Coding的方式感受AI编程的魅力。建立对AI能力的直觉什么它能做好什么它容易搞砸。第二步引入轻量Spec第3-4周选一个中等复杂度的模块尝试写一份Spec再让AI实现。对比一下Vibe Coding的产出和SDD的产出让团队自己感受到差异。第三步建立Spec模板与规范第5-8周沉淀团队的Spec模板明确什么该写、什么不该写。把Spec文件纳入代码仓库和代码一起做版本管理。第四步将Spec融入CI/CD第9周起Spec变更 → 自动触发AI评审代码提交 → 自动检查是否符合SpecSpec文件成为Code Review的必备输入关键原则Spec是唯一可信来源。任何时候Spec和代码有冲突先对齐Spec。先Spec后代码。需求变更时先改Spec再让AI重新生成。Vibe探索Spec交付。用Vibe Coding找到方向用SDD确保质量。不做过度规约。Spec定义行为边界不是替代AI思考。七、结语回到文章开头的问题当代码可以像聊天一样生成我们还需要规格说明吗需要比以往任何时候都需要。不是因为代码质量下降了——AI生成的代码在语法层面几乎不会出错。而是因为
Godot引擎入门:从节点场景到Hello World的完整开发流程 1. 项目概述:为什么是“Hello World”?如果你已经跟着前两期内容,成功安装了 Godot 引擎,并且熟悉了它的编辑器界面,那么恭喜你,你已经跨过了最枯燥的“准备”阶段。现在,我们终于要开始动手创造…
AI教材生成新趋势:低查重AI写教材,快速打造专业教材! 教材的初稿终于完成,但在修改和优化的过程中让我感到无比“煎熬”。通篇阅读时,发现逻辑不严密和知识点错误需要耗费大量的时间和精力。即便是调整一个章节的结构,也常常会影响到后续的部分,导致修改的工作量迅速增加。收集反馈后…
WebODM技术深度解析:分布式无人机图像处理架构与算法实现 WebODM技术深度解析:分布式无人机图像处理架构与算法实现 【免费下载链接】WebODM User-friendly, commercial-grade software for processing aerial imagery. ✈️ Download it for free! 项目地址: https://gitcode.com/gh_mirrors/we/WebODM 1. 系统架构…
Python 同步与异步 你是否遇到过这样的场景:用 Python 写了一个下载图片的脚本,它却要一张下载完才能开始下一张,效率低得让人着急;或者写了个简单的 Web 服务,一个慢请求就能卡住后面所有用户?其实,这背后藏着 Py…
薄膜分选的困境与突围:高光谱助力从混合垃圾到纯净再生资源 薄膜塑料,如购物袋、农用地膜、食品包装膜,因其轻便、廉价和良好的防护性能而广泛应用于现代生活。然而,当它们完成使命成为废弃物时,其本身轻薄、柔软、易缠绕的特性,加上成分复杂、杂质繁多,使得回收分选…
Biotinyl-Met-Enkephalin ;Bio-YGGFM 一、基础信息中文名称:N 端生物素修饰甲硫氨酸脑啡肽(Met - 脑啡肽)英文全称:Biotinyl-Met-Enkephalin三字母序列:Biotin-Tyr-Gly-Gly-Phe-Met单字母简写:Bio-YGGFM氨基酸总数:5 aa分子式&#…
SpringBoot+Vue 当代中国获奖知名作家信息管理系统管理平台源码【适合毕设/课设/学习】Java+MySQL 博主介绍:👨💻 专业背景 资深全栈架构师,深耕技术领域多年,致力于为开发者提供专业技术指导。拥有丰富的企业级项目经验,全网技术分享累计影响超过10万名开发者。 荣誉认证 CSDN特邀作者 & 技术专家 …
大学生在线租房平台信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】 博主介绍:👨💻 专业背景 资深全栈架构师,深耕技术领域多年,致力于为开发者提供专业技术指导。拥有丰富的企业级项目经验,全网技术分享累计影响超过10万名开发者。 荣誉认证 CSDN特邀作者 & 技术专家 …
Windows键鼠手柄映射革命:QKeyMapper让输入设备自由转换 Windows键鼠手柄映射革命:QKeyMapper让输入设备自由转换 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄映射到键鼠ÿ…
免费文件夹加密软件全攻略:从VeraCrypt到7-Zip,构建个人数字保险柜 1. 项目概述:为什么我们需要文件夹加密? 在数字生活和工作场景中,我们每个人的电脑里都或多或少存放着一些“敏感”文件。这些文件可能是尚未公开的个人财务记录、工作项目的核心设计方案、私密的家庭照片,或者是一些重要的账号密…
WMIC命令失效排查:Windows 11 22H2后获取ProcessorID等信息的3种替代方案 Windows 11 22H2后获取硬件标识的现代方案:告别WMIC的全面指南当你在Windows 11 22H2或更新版本中尝试使用熟悉的WMIC命令获取ProcessorID或MachineGUID时,突然弹出的"不是内部或外部命令"错误提示是否让你措手不及?微软已正式将WM…
Oracle数据库安全漏洞修复与主动防范实战指南 1. 项目概述:为什么Oracle数据库安全是运维的“必修课” 最近在梳理团队内部的数据库运维规范,发现一个老生常谈但又极易被忽视的问题:Oracle数据库的安全漏洞修复。这话题听起来有点“硬核”,但只要你手头有Oracle数据库在跑&…
3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略 3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾为Windows右键菜单中那些…
GXDE OS下Wayland兼容性实战:从deepin-mutter原理到VMware Tools修复 如果你正在用 GXDE OS 或者任何基于 Deepin 的发行版,并且遇到了“检测到窗口系统采用 Wayland 协议,程序即将退出”这类弹窗,或者发现 VMware Tools 在 Ubuntu 24.04 这类默认 Wayland 的系统上启动失败,那这篇文章就是为你准备的…
企业AI落地困境与AgenticOps实践指南 1. 企业AI落地的现实困境与破局之道过去两年,大模型技术呈现爆发式增长,从GPT-3到GPT-4,从LLaMA到DeepSeek,模型参数规模从百亿级跃升至万亿级,多模态能力从单一文本扩展到图文音视频的综合处理。然而在企业应用层面&a…
[C++]内存管理:串顺序存储的内存回收 在串(字符串)的顺序存储中,内存回收的方式取决于字符串的存储方式以及所使用的编程语言和相关库。以下以 C 为例进行说明,因为 C 对内存管理有较为直接的控制。 1. 基于 char 数组的串顺序存储 如果使用普通的 char 数组来存储字…
移动端游戏功耗测试实战:电流、功率、亮度和场景对比 移动端游戏功耗测试:先控制变量,再比较优化是否真的省电 摘要:功耗测试最容易犯的错误,是拿两次不同温度、不同亮度、不同场景的平均功率直接比较。本文给出一套可复现的游戏功耗测试方法,覆盖引擎特性验证、版本回归和黑盒体验测试,并说明如何把功耗与帧率、温控、CPU/G…
足球口袋教练 HarmonyOS 离线应用实战(03/20):ArkUI 首页仪表盘搭建 本文是“足球口袋教练 HarmonyOS 离线应用实战”系列第 3 篇。示例项目是一个 HarmonyOS / ArkTS / ArkUI 编写的离线足球训练助手,围绕真实页面、真实截图和可复现操作展开。 本篇要解决的问题 训练 App 的首页不能只展示欢迎语,它要解决“我现在该点哪…