SDD 规范驱动开发:用自然语言重塑全栈开发流程
从需求描述到前后端交付,AI 仅用 60 分钟完成全栈开发。这不是科幻,这是 SDD(Specification-Driven Development,规范驱动开发)的真实实践。
一、什么是 SDD?
SDD(Specification-Driven Development,规范驱动开发) 是一种以"规范"为核心的开发范式。
它的核心理念是:先用自然语言描述需求,由 AI 生成规范文档,再基于规范自动生成代码。
传统开发流程是:
需求评审 → 接口设计 → 后端开发 → 前端联调 → Bug 修复
SDD 流程是:
自然语言描述 → AI 撰写规范提案 → 自动生成前后端代码 → 填充业务逻辑
本质区别:开发者不再是"代码搬运工",而是"规范设计者"。AI 负责把规范翻译成可运行的代码。
二、SDD vs 传统开发:本质区别在哪?
| 维度 | 传统开发 | SDD 模式 |
|---|---|---|
| 时间成本 | 一个简单功能 2~3 个工作日 | 60 分钟极速交付 |
| 沟通成本 | 前后端反复对齐,接口设计成本高 | 基于 Proto 契约,一次定义,两端同步 |
| 类型安全 | 前端手写类型易出错 | Proto 自动生成,100% 类型安全 |
| 代码质量 | 每一层都在手写重复 CRUD | 自动生成标准代码,质量一致 |
| 知识沉淀 | 需求文档散落,新人接手困难 | 每次变更自动沉淀为 Spec 文档 |
核心痛点:传统模式下,开发者把大量时间花在"翻译"上——把需求翻译成接口设计、把接口设计翻译成 DAO/Logic/Service、把接口字段翻译成 TypeScript 类型。每一层翻译都可能出错,每一层都在重复劳动。
SDD 破局点:让 AI 承担"翻译"工作,开发者专注于业务逻辑和架构设计。
三、OpenSpec 体系如何落地?
OpenSpec 是一套完整的规范体系,包含以下核心文件:
1. project.md — 项目级规范
定义项目的技术栈、架构、代码目录结构。
示例:
markdown
复制
# 项目技术栈
- 前端:React 19 + TDesign + TypeScript
- 后端:tRPC-Go + GORM + MySQL
- 协议:Protocol Buffers (proto3)
# 架构分层
- 前端:pages → components → services → types
- 后端:service → logic → dao
作用:让 AI 理解项目上下文,生成的代码符合团队规范。
2. AGENTS.md — AI 决策工作流
定义 AI 的三阶段决策流程:
- 理解阶段:阅读 project.md,理解业务背景
- 设计阶段:生成规范提案(proposal.md),定义接口和数据模型
- 实现阶段:基于规范生成前后端代码
作用:约束 AI 的行为边界,避免"自由发挥"导致的不可控。
3. WORKFLOW.md — 前后端协作标准
定义前后端如何通过 Proto 协作:
- 后端定义 Proto IDL
- 前端基于 Proto 生成 TypeScript 类型
- 接口变更时,两端同步更新
作用:消除前后端联调的类型不一致问题。
4. changes/ — 变更提案目录
存放 AI 生成的任务清单和变更提案(proposal.md)。
每次新需求,AI 会先在这里生成一个提案,包含:
- 需求拆解
- 接口设计
- 任务清单
作用:可审查、可追溯、可回滚。
5. specs/ — 知识沉淀目录
存放固化的功能规范文档。
每次功能完成后,规范会从 changes/ 归档到 specs/,成为项目的知识资产。
作用:新人接手项目时,阅读 specs/ 即可快速理解业务逻辑。
四、实战效果:60 分钟交付一个功能
案例:成员管理功能
需求描述(自然语言):
实现一个成员管理功能,支持添加、删除、查询空间成员,需要有权限校验。
AI 执行过程
Step 1:需求理解
- 阅读 project.md,理解技术栈
- 将模糊描述转化为明确的任务清单
Step 2:接口设计
- 自主设计 Proto IDL
- 生成 Request/Response 模型
- 定义权限校验逻辑
Step 3:后端实现
- 遵循 tRPC-Go 框架
- 实现 DAO 层(数据库操作)
- 贯通 Logic → Service 层
Step 4:前端实现
- React 19 + TDesign 组件
- 实现列表、添加、删除交互
- 自主修复编译错误
惊人的自主修复能力
场景 1:发现并修复缺失的 Mock 方法
❌ MockPermissionLogic does not implement PermissionLogic
AI 精准识别:检测到测试文件遗漏了新增接口的 Mock 实现。 自主决策:自动补充 AddSpaceMembers 等 3 个存根方法,确保编译通过。
场景 2:瞬间修正前后端字段映射
⚠️ 网关转换致使首字母小写:UserID → userid
用户反馈:"接口字段会变成小写"。 AI 瞬间行动:重构 TypeScript 定义,更新所有组件引用层,同时保留请求的 PascalCase 规范。
最终结果
- 开发耗时:60 分钟(传统模式需 2~3 天)
- Bug 数量:前后端联调阶段 0 个类型相关 Bug
- 知识沉淀:自动生成成员管理功能的 Spec 文档
五、优点与局限(客观分析)
✅ 优点
| 维度 | 说明 |
|---|---|
| 降本增效 | 开发耗时从几天降至分钟级,消除重复 CRUD 敲码时间 |
| 类型安全 | Proto 契约 100% 保证类型一致,显著降低联调 Bug 率 |
| 资产沉淀 | 每次变更自动沉淀为 Spec 文档,新人/AI 极速理解上下文 |
| 质量一致 | 自动生成标准代码,避免手写代码的风格差异 |
| 角色转变 | 开发者从"代码搬运工"回归"设计者" |
⚠️ 局限
| 维度 | 说明 |
|---|---|
| 学习成本 | 需要理解 OpenSpec 规范体系,初期有上手门槛 |
| 适用场景 | 更适合 CRUD 类型的业务功能,复杂算法场景仍需人工介入 |
| AI 能力依赖 | AI 的理解能力和代码生成质量直接影响最终效果 |
| 团队协作 | 需要团队统一采用该模式,否则规范文件可能成为摆设 |
| Proto 维护 | 接口变更时需要同步更新 Proto 文件,有一定维护成本 |
适用场景建议
| 场景 | 推荐程度 |
|---|---|
| CRUD 类业务功能 | ⭐⭐⭐⭐⭐ 强烈推荐 |
| 前后端协作频繁的项目 | ⭐⭐⭐⭐⭐ 强烈推荐 |
| 新人接手的老项目 | ⭐⭐⭐⭐ 推荐 |
| 复杂算法/高性能场景 | ⭐⭐ 需谨慎 |
| 小型个人项目 | ⭐⭐ 可能过度设计 |
六、谁适合用?怎么开始?
适合人群
- 全栈开发者:一人负责前后端,希望提升效率
- 前后端协作频繁的团队:厌倦了反复对齐接口文档
- 新人接手老项目:缺少文档,难以理解业务逻辑
- 追求工程质量的团队:希望代码质量一致、类型安全
如何开始?
第一步:建立规范文件
在项目根目录创建以下文件:
.openSpec/
├── project.md # 项目技术栈和架构
├── AGENTS.md # AI 决策流程
├── WORKFLOW.md # 前后端协作标准
├── changes/ # 变更提案
└── specs/ # 知识沉淀
第二步:用自然语言描述需求
不要直接写代码,先用自然语言描述你想要的功能。
第三步:让 AI 生成规范提案
AI 会基于你的描述,生成 proposal.md,包含接口设计和任务清单。
第四步:审查提案,确认后让 AI 生成代码
审查接口设计是否合理,确认后让 AI 生成前后端代码。
第五步:填充业务逻辑
AI 生成的是标准代码框架,你需要填充具体的业务逻辑。
总结
SDD 不是让你躺平,而是让你干得更聪明。
它的核心价值在于:
- 把重复劳动交给 AI:翻译需求、生成代码、维护类型
- 把创造力留给自己:架构设计、业务逻辑、问题解决
Proto 契约保证类型安全,Spec 文档保证知识可追溯,AI 保证代码质量一致。
如果你也在探索 AI 辅助开发,不妨试试 SDD 模式——从写规范开始,而不是从写代码开始。