SDD AI-Native(Spec-Driven Development,规约驱动开发,AI 原生研发范式)

  • 传统开发:代码是唯一可信源,文档后置、容易过时
  • AI-Native SDD:规约(spec,一般放在仓库里 spec.md)才是唯一可信源,代码只是规约的产物;人和 AI 共同遵守这份规约契约
  • 规约不只是给人看的文档,是AI 可执行、可校验的结构化意图描述:业务目标、边界约束、验收标准、异常场景、架构规则

标准 4 步工作流

  1. Specify 定义规约:业务 + 架构一起输出结构化 spec,明确功能、非功能、边界 case、安全约束
  2. Plan 拆解方案:AI 基于 spec 拆解技术方案、任务清单
  3. Implement 执行实现:AI Agent 生成代码、接口、注释
  4. Validate 规约校验:从 spec 自动生成测试,验证实现是否匹配规约;不满足则自动修复,直到通过

和传统 / 普通 AI 编码的区别

表格

模式 起点 可信源 风险
传统开发 需求文档 代码 文档容易和代码脱节
Vibe Coding(Copilot 随手写) 零散 prompt AI 输出代码 需求漂移、隐性缺陷、不可复现
AI-Native SDD spec 规约 spec 规约 AI 输出被规约约束,可重复验证

配套工具生态

  • GitHub Spec Kit:微软开源 SDD 工具包
  • AWS Kiro:AWS 的 spec-first AI IDE
  • Cursor / Claude Code:可配置为 SDD 工作流,强制先读 spec 再编码

关键概念

  • Executable Spec(可执行规约):描述系统行为而非实现细节,能自动生成校验逻辑
  • Harness(校验底座):给 AI Agent 的约束环境,包含规则、检查项、权限边界,保证 AI 不能脱离规约乱实现
  • AI-Native Engineer :角色转变,人不再主要写代码,而是设计规约、设计 Agent 运行环境、做质量治理ai-native-...

一句话总结

AI-Native SDD:先定契约,再让 AI 干活;规约为王,代码只是副产品,把大模型的随机性约束在明确的工程契约内,提升团队级 AI 编码稳定性。

SDD AI-Native spec.md 模板(可直接丢给Cursor / Claude Code / GitHub Spec Kit)

原则:描述WHAT,不写HOW;写清楚验收标准、边界、约束,不预设具体实现。 所有【】里的内容是占位,替换后删除【】

复制代码
# Spec: 【模块/功能名称】
Version: 0.1
Status: Draft | Review | Approved
Author: 【姓名/团队】
Last Update: 【日期】
AI Harness Rules: 【强制给AI的全局约束】

## 1. 目标 (Goal)
一句话说明这个模块要解决什么业务问题,不写技术细节。
> 示例:提供用户订单查询接口,支持按用户ID分页查询已完成订单,用于前端订单列表展示。

## 2. 业务上下文 (Context)
- 所属系统:【系统名】
- 调用方:【前端/其他微服务】
- 依赖外部服务:【依赖服务名,无则填无】
- 业务边界:本模块**不负责**【哪些事情不属于它】

## 3. 功能需求 (Functional Requirements)
每条需求编号,**必须可验证**,避免模糊描述。
- FR-001:【功能描述】
  - Acceptance Criteria(验收标准):
    - ✅ 正常场景:【输入 -> 预期输出】
    - ✅ 边界场景:【边界输入 -> 预期输出】
- FR-002:【功能描述】
  - Acceptance Criteria:
    - ✅ ...

## 4. 非功能需求 (Non-Functional Requirements)
- NFR-001 性能:【如:单接口P95 < 200ms;支持QPS 500】
- NFR-002 可用性:【如:99.9%可用;降级策略:xxx】
- NFR-003 安全:【权限、脱敏、防注入、输入校验规则】
- NFR-004 兼容性:【数据库版本、运行环境、API版本】

## 5. 数据模型 & 契约 (Data Contract)
只定义结构、字段含义、约束,不写数据库建表SQL(可选,简单场景可附)。
### 入参
```json
{
  "userId": "string,必填,用户唯一标识",
  "pageNum": "int,可选,默认1,>=1",
  "pageSize": "int,可选,默认10,最大50"
}

返回结构体

复制代码
{
  "code": "int",
  "msg": "string",
  "data": {
    "total": "long",
    "records": []
  }
}

6. 错误码 & 异常行为

列出所有预期异常,定义返回结果。

  • ERR-10001:用户不存在 → code=10001, msg="用户不存在"
  • ERR-10002:pageSize超过上限 → code=10002, msg="分页大小不能超过50"

7. 业务规则 & 约束 (Business Rules)

业务硬规则,AI实现时不能突破。

  • BR-001:只能查询当前登录用户自己的订单,禁止越权查看他人订单
  • BR-002:已删除订单不返回

8. 排除项 (Out of Scope)

非常重要,明确禁止AI额外实现的功能,防止scope creep

  • ❌ 不实现订单新增/修改/删除
  • ❌ 不做复杂报表统计
  • ❌ 不实现消息推送

9. 测试规约 (Test Spec)

AI需要自动生成单元/集成测试,覆盖下面case:

  1. 正向正常查询
  2. 入参非法校验(pageSize=0、负数)
  3. 用户不存在
  4. 分页到最后一页(空结果)

10. AI实现约束 (Harness for Agent)

这一段直接约束AI编码行为,SDD核心

  • 架构约束:必须遵循【项目架构规范,如DDD分层、Controller/Service/Repository】
  • 编码规范:【项目编码规范,如不允许直接SQL拼接,统一使用参数化查询】
  • 禁止行为:
    • 禁止新增spec未定义的接口、字段
    • 禁止修改外部依赖模型
    • 禁止硬编码业务魔法数字,统一常量
  • 输出产物要求:
    • 源代码

    • 单元测试

    • 接口注释(openapi/swagger注解)

      使用小贴士

      1. 写spec时不要写代码,只写契约;写完再交给AI实现
      2. 评审spec,而不是评审AI生成的代码;spec通过才允许进入实现阶段
      3. 修改需求必须先改spec,再重新触发AI实现;不允许直接改代码绕开规约
      4. 简单小功能可以精简,复杂模块可以拆分多个spec

      要不要我再给一个已经填好内容的完整样例spec.md(订单查询例子),方便你直接参考怎么写?

相关推荐
Navicat中国12 分钟前
Navicat 18 内置 AI 助手让数据库开发从繁琐操作迈向智能协作
大数据·人工智能·数据库开发
4SAPI34 分钟前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php
魔乐社区44 分钟前
翼芯・智算测试与适配优化专区,让国产算力“选得准、跑得通、用得好“
人工智能·开源·大模型
XCDoris3 小时前
郴州logo设计机构
大数据·人工智能·python
Goboy3 小时前
一个人带三个Agent,我用全新TRAE从0到1搭了个资讯周刊站
人工智能·trae
俊哥V3 小时前
每日 AI 研究简报 · 2026-10-19
人工智能·ai
AI_AGENT_DEV_AI3 小时前
AI英语教培智能体的开发
人工智能
物联网软硬件开发-轨物科技3 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
海宇数据3 小时前
零信任架构实战:基于海宇网上踪迹欺诈行为识别构建自动化信贷资信评估网关
运维·人工智能·架构·自动化
冬奇Lab4 小时前
开源项目第242期:HyperFrames —— 写 HTML 就能渲染视频,专为 AI Agent 设计的确定性视频框架
人工智能·开源·音视频开发