layout: post keywords: SDD description: 对SDD的理解以及在生产环境下落地的思考 title: 规范驱动开发(SDD)在生产环境下的落地实践 categories: [测试] tags: [SDD] group: archive icon: google —
文档版本: v1.1
编写日期: 2026年1月
适用对象: 软件开发工程师、技术负责人、架构师
随着生成式AI在软件开发领域的深度渗透,传统的”提示-生成-修补”式开发模式(业界称为Vibe Coding)在生产级项目中暴露出严重的可维护性和一致性问题。规范驱动开发(Specification-Driven Development, SDD)作为一种将规范置于工程核心的方法论,正在成为AI辅助开发从”玩具”走向”生产级工具”的关键路径。本文系统阐述SDD的核心概念、产生背景、解决方案,并基于实际工程落地经验,深入分析当前主流工具的适用场景与局限性,最后提出面向生产环境的改进思路。
关键词: 规范驱动开发; SDD; AI辅助编程; spec-kit; 上下文工程; 生产级软件
软件工程正处于一个关键的转折点。
2024年以来,以GitHub Copilot、Claude Code、Cursor为代表的AI编程助手已深刻改变了开发者编写代码的方式。然而,当这些工具从个人项目、快速原型走向企业级生产系统时,一个根本性问题逐渐浮出水面:AI擅长生成代码片段,但缺乏对项目整体架构、业务上下文和技术约束的深度理解。
这种局限性在小型项目中尚可接受,但在涉及数十万行代码、多团队协作、复杂业务逻辑的生产环境中,会导致代码风格不一致、架构设计偏离、技术债务快速累积等严重问题。
规范驱动开发(SDD)正是在这一背景下应运而生。它不是对AI能力的否定,而是对AI使用方式的系统性升级——通过将规范(而非代码)置于开发流程的核心,为AI提供充分的上下文和明确的约束,从而实现可控、可预测、可维护的AI辅助开发。
本文旨在为软件开发人员提供一份关于SDD的系统性认知材料,帮助读者理解其核心理念、评估其适用场景,并为生产环境落地提供实践参考。
规范驱动开发(Specification-Driven Development, SDD)是一种将规范(而非代码)视为软件开发主要产物的方法论。在SDD范式下,代码被视为严格定义的规范的”最后一公里”实现,是规范在特定技术栈中的具体表达。
核心命题: 规范是新的源代码。代码是规范的编译产物。
这一理念与传统软件工程中”文档先行”的思想有本质区别。传统的需求文档和设计文档往往是一次性产物,在开发过程中逐渐与实际代码脱节。而SDD中的规范是活文档(Living Document),它贯穿整个开发生命周期,是人类开发者与AI代理共享的唯一真实来源(Single Source of Truth)。
SDD建立在以下四个基础原则之上:
原则一:规范作为通用语言
规范成为项目沟通的通用语言,代码只是该语言在选定框架中的具体表达。软件维护从”修改代码”转变为”迭代规范”。这意味着当需求变更时,首先更新规范,然后由AI(或人工)重新生成相应代码。
原则二:可执行规范
为了弥合意图与实现之间的差距,规范必须精确、完整且无歧义——足以让AI代理在最小人类干预下生成可工作的系统。这要求规范不仅描述”做什么”,还要明确”为什么”以及关键的”如何”约束。
原则三:上下文工程作为基石
SDD的核心功能是为AI代理提供稳健、持久的上下文。无论是constitution.md(项目宪章)、spec.md(功能规范)还是plan.md(技术计划),这些产物都是上下文工程的输出。它们为AI行为设置明确的护栏,将输出与项目目标、架构约束和编码标准对齐。
原则四:开发者角色转型
人类开发者从代码生产者转变为架构师、AI向导和输出验证者。开发者的核心工作变成在规范阶段定义”什么”和”为什么”,在计划阶段定义高层次”如何”,将语法和实现细节留给AI处理。
参考Martin Fowler的分析框架,SDD的采用可分为三个成熟度级别:
| 级别 | 名称 | 特征 | 典型实践 |
|---|---|---|---|
| Level 1 | 规范优先 | 为特定任务编写规范,开发完成后可能丢弃 | 单次AI辅助开发任务 |
| Level 2 | 规范锚定 | 规范是活文档,在功能生命周期中持续维护 | 大多数SDD工具的目标级别 |
| Level 3 | 规范即源 | 规范是人类编辑的唯一产物,代码完全由AI生成 | 未来愿景,当前尚未完全实现 |
当前大多数SDD工具和实践处于Level 1到Level 2之间的过渡阶段。
2023-2024年间,随着AI编程工具的普及,一种被称为”Vibe Coding”(氛围编程)的开发模式迅速流行。其典型特征是:
这种模式在以下场景中表现出色:
然而,当项目规模扩大、复杂度提升时,Vibe Coding的问题开始显现:
项目初期(2周内):
✓ 快速推进,功能快速实现
✓ 感觉像发现了"编码作弊码"
项目中期(1-2月):
✗ AI开始犯"昂贵的错误"
✗ 错误地重写整个文件
✗ 创建已存在的函数
✗ 添加新功能时破坏现有功能
项目后期:
✗ 代码库像"没人相互交流的小组项目"
✗ 不一致的状态管理、样式、API模式
✗ 技术债务快速累积
Vibe Coding失效的根本原因在于当前AI编程工具的几个核心局限:
局限一:上下文窗口的物理限制
即使是最先进的大语言模型,其上下文窗口也存在物理限制(通常为128K-200K tokens)。对于大型代码库,AI无法同时”看到”所有相关代码,导致生成的代码与现有架构不一致。
局限二:缺乏项目级语义理解
传统AI编程工具主要基于当前编辑器中有限上下文的文本分析来生成建议。它们缺乏对项目整体结构的理解,在涉及复杂类型系统、跨文件引用、项目特定配置时,建议往往不够精准。
局限三:无状态性导致的上下文丢失
LLM本质上是无状态的。每次对话都是独立的,之前建立的项目理解、架构决策、编码约定都需要重新注入。这导致:
局限四:幻觉问题
AI可能生成语法正确但逻辑或语义上错误的代码——即”幻觉”(Hallucination)。在缺乏充分上下文约束的情况下,这种问题尤为严重。
SDD的出现标志着软件开发范式的根本转变:
| 维度 | 传统模式 | SDD模式 |
|---|---|---|
| 真相来源 | 代码 | 规范 |
| 人类核心工作 | 编写代码 | 定义意图和约束 |
| AI角色 | 代码补全助手 | 规范执行者 |
| 维护方式 | 修改代码 | 迭代规范 |
| 质量保障 | 代码审查 | 规范审查 + 输出验证 |
这一转变的驱动力是:AI使规范变得可执行。当规范能够自动转化为可工作的代码时,规范本身就决定了构建什么。
SDD旨在解决AI辅助开发中的以下核心问题:
┌─────────────────────────────────────────────────────────────┐
│ SDD解决的问题域 │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 上下文丢失 │ │ 输出不一致 │ │ 架构偏离 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 意图模糊 │ │ 知识孤岛 │ │ 可追溯性差 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
问题一:上下文丢失与重复注入
在Vibe Coding模式下,开发者需要在每次AI交互中重复提供项目背景、架构约束、编码规范等信息。这不仅效率低下,还容易遗漏关键信息,导致AI输出偏离预期。
问题二:输出一致性难以保障
缺乏统一的规范约束,AI在不同时间、不同上下文下生成的代码可能采用完全不同的模式、风格和架构决策。这导致代码库逐渐变成”拼凑的怪物”。
问题三:架构设计与实现脱节
AI倾向于生成”通用解决方案”,而非与现有架构深度集成的代码。特别是在棕地项目(Brownfield Project)中,AI生成的代码往往与存量代码的架构风格不匹配。
问题四:意图传递的模糊性
自然语言提示本身具有模糊性。”为我的应用添加照片分享功能”这样的提示,迫使AI猜测成千上万个未声明的需求——存储方式、权限控制、UI风格、性能要求等。
问题五:团队知识的孤岛化
在传统开发中,关于安全策略、合规规则、设计系统约束、集成需求等知识往往存在于:
AI无法访问这些隐性知识,导致生成的代码违反团队约定。
问题六:变更的可追溯性
当需求变更时,如何追溯变更对设计、代码、测试的影响?Vibe Coding模式下,这种追溯几乎不可能实现。
SDD的核心解决思路可以概括为:将AI视为一个有能力但缺乏经验的队友——技术熟练但需要适当方向和上下文的人。
这意味着:
以GitHub spec-kit为代表的SDD工具,通常采用四阶段门控工作流:
┌──────────────────────────────────────────────────────────────┐
│ SDD四阶段工作流 │
├──────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Specify │ -> │ Plan │ -> │ Tasks │ -> │Implement│ │
│ │ 规范 │ │ 计划 │ │ 任务 │ │ 实现 │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ │ │ │ │ │
│ v v v v │
│ 定义什么 技术约束 可执行单元 代码生成 │
│ 和为什么 和架构 和验收标准 和验证 │
│ │
└──────────────────────────────────────────────────────────────┘
阶段一:Specify(规范)
使用/spec命令创建功能规范,高层次定义”什么”和”为什么”。规范应包括:
阶段二:Plan(计划)
使用/plan命令生成技术实施计划,定义”如何”实现。计划应包括:
阶段三:Tasks(任务)
使用/tasks命令将计划分解为小的、可审查的、可测试的执行单元。每个任务应该:
阶段四:Implement(实现)
AI代理按照任务列表逐一实现,生成代码并进行验证。
上下文工程是SDD的核心技术支撑。其目标是构建一套机制,使AI在每次交互中都能获得充分、准确、相关的项目上下文。
实践一:项目宪章(Constitution)
创建constitution.md或类似文件,以AI可读的格式编纂项目的核心约束:
实践二:活文档体系
建立一套随项目演进而持续更新的文档体系:
project/
├── .spec/
│ ├── constitution.md # 项目宪章
│ ├── architecture.md # 架构设计
│ ├── features/
│ │ ├── feature-001/
│ │ │ ├── spec.md # 功能规范
│ │ │ ├── plan.md # 技术计划
│ │ │ └── tasks.md # 任务列表
│ │ └── ...
│ └── knowledge/
│ ├── api-patterns.md # API模式
│ └── testing.md # 测试约定
实践三:增量上下文注入
根据当前任务的需要,选择性地将相关上下文注入AI提示。避免一次性注入过多信息导致上下文窗口溢出或信息稀释。
有效的上下文工程需要建立在对大语言模型工作机制的深刻理解之上。基于Anthropic等机构的研究成果,上下文管理面临两个核心挑战:
挑战一:上下文腐蚀(Context Rot)
研究表明,随着上下文窗口中token数量的增加,模型准确回忆和利用信息的能力会呈现梯度下降。这种下降并非断崖式的,而是渐进的——信息检索精度和长程推理能力持续降低。
上下文腐蚀会导致恶性循环:
加载更多信息 → 窗口膨胀 → 信息检索精度下降 → AI行为异常
↓
人工发现问题 → 追加更多上下文纠正 → 窗口进一步膨胀 → 问题加剧
挑战二:注意力预算耗尽(Attention Budget Exhaustion)
Transformer架构的固有约束决定了LLM存在”注意力预算”:
这意味着:
核心指导原则
找到最小可能的高信号token集合,最大化期望结果的可能性。
基于上述理论,有效的上下文工程应遵循以下策略:
| 策略 | 传统方式 | 推荐方式 |
|---|---|---|
| 信息加载 | 预加载所有可能相关的文档 | 即时加载(Just-in-Time),按阶段动态加载 |
| 信息组织 | 扁平化存储 | 分层组织(概要层→技术层→经验层→详细层) |
| 长任务处理 | 单一上下文持续累积 | 上下文压缩 + 结构化笔记系统 |
| 工具设计 | 功能丰富的复合工具 | 边界清晰的单一职责工具 |
SDD之所以能够成功,而”简单提示AI”会失败,源于对大语言模型工作原理的深刻理解:
LLM在模式补全方面非常出色,但在心灵感应方面并不擅长。
模糊的提示迫使模型猜测未声明的需求,AI会做出”合理的假设”,而其中一些假设必然是错误的——而且往往直到深入实现时才会发现问题。
相比之下,预先提供清晰的规范、技术计划和专注的任务,给予AI更多的清晰度:
当前SDD领域有四个具有代表性的开源项目,各自体现了不同的设计哲学:
| 工具 | 核心理念 | GitHub Stars | 主要特点 |
|---|---|---|---|
| BMAD-METHOD | 代理敏捷团队 | 19.1k ⭐ | 模拟人类敏捷团队的AI角色分工 |
| spec-kit | 企业级结构化工作流 | 39.3k ⭐ | GitHub官方支持,代理无关 |
| OpenSpec | 棕地确定性 | 2.1k ⭐ | 专注现有代码库的增量开发 |
| PromptX | 自然语言上下文 | 1.5k ⭐ | 简化AI交互,提示词管理 |
设计哲学: 代理敏捷驱动开发(Agentic Agile-Driven Development)
BMAD模拟具有专门AI角色的人类敏捷团队,以对抗”规划不一致”和”上下文丢失”问题。
工作流程:
技术实现: Node.js v20+, JavaScript
适用场景:
局限性:
设计哲学: 将AI辅助开发标准化为结构化的、可重复的、可验证的工作流
工作流程: 严格的四阶段门控流程(Specify → Plan → Tasks → Implement)
技术实现: CLI工具(specify命令),使用模板和脚本搭建项目
核心优势:
适用场景:
设计哲学: 在保持轻量级的同时为AI开发带来确定性和可审计性
核心差异化: 棕地优先——认识到大多数开发发生在现有代码库中,而非绿地项目
工作流程:
技术实现: TypeScript, CLI工具
适用场景:
设计哲学: AI的自然语言上下文管理平台
工作流程:
适用场景:
┌─────────────────────────────┐
│ 项目类型判断 │
└─────────────────────────────┘
│
┌──────────────────┼──────────────────┐
│ │ │
v v v
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 绿地项目 │ │ 棕地项目 │ │ 混合场景 │
└──────────┘ └──────────┘ └──────────┘
│ │ │
v v v
┌──────────┐ ┌──────────┐ ┌──────────┐
│ spec-kit │ │ OpenSpec │ │ BMAD │
│ BMAD │ │ │ │ spec-kit │
└──────────┘ └──────────┘ └──────────┘
选型建议:
| 场景 | 推荐工具 | 理由 |
|---|---|---|
| 企业标准化流程 | spec-kit | GitHub官方支持,代理无关,易于推广 |
| 复杂项目多角色协作 | BMAD | 完整的角色分工,适合大型团队 |
| 现有代码库改造 | OpenSpec | 棕地优先设计,增量开发友好 |
| 快速上手,简化交互 | PromptX | 学习曲线平缓,注重用户体验 |
基于实际工程落地经验,SDD在生产环境中面临以下典型问题:
问题表现:
典型案例:
以Shell为主的备份系统,AI输出的都是新设计的Python代码,完全忽略了现有的技术栈约束。
根因分析:
问题表现:
典型案例:
Spec中明确”基于缓存的情况来进行持久化”,但在Plan中直接进行了持久化设计,遗漏了缓存环节。
根因分析:
问题表现:
典型案例:
代码库中同时存在相同功能的不同实现(历史原因),AI无法识别应该使用哪个版本。
根因分析:
问题表现:
根因分析:
问题表现:
根因分析:
问题表现:
根因分析:
问题表现:
根因分析:
| 问题类别 | 具体问题 | 影响程度 | 改进方向 |
|---|---|---|---|
| 架构一致性 | 生成代码与存量架构不匹配 | 高 | 增强架构分析和澄清环节 |
| 流程一致性 | 步骤间内容不一致 | 中 | 增加一致性校验机制 |
| 上下文管理 | 隐性知识难以注入 | 高 | 建设知识库集成机制 |
| 闭环反馈 | 无法从实现反馈到规范 | 中 | 增加analyze命令 |
| 知识复用 | 无法参考相似需求 | 中 | 建立需求相似度匹配 |
| 多库管理 | 代码生成位置不准确 | 中 | 增强代码库定位信息 |
| 测试质量 | 测试不符合存量架构 | 中 | 纳入测试架构上下文 |
上述问题的共同根因可以归结为一点:当前SDD工具缺乏知识复利机制。
在理想状态下,重复执行同类需求的边际成本应当递减:
| 执行次数 | 理想状态 | 当前现实 |
|---|---|---|
| 第1次执行某类需求 | 45分钟(建立基础) | 45分钟 |
| 第2次执行同类需求 | 15分钟(复用经验) | 45分钟(重新回忆遗漏点) |
| 第N次执行同类需求 | 5分钟(高度自动化) | 45分钟(边际成本恒定) |
问题本质分析:
这意味着SDD工具解决了”规范化”问题,但尚未解决”知识复用”问题。边际成本恒定是制约SDD在生产环境中发挥更大价值的关键瓶颈。
规范驱动开发存在一个内在的方法论矛盾:
Spec越详细 → 越接近代码本身 → 需要同时维护Spec和Code两套产物
Spec越简略 → 越难精确指导AI → 失去规范的意义
详细Spec的问题:
当Spec详细到可以精确指导AI生成代码时,它本身就变成了另一种形式的”代码”:
简略Spec的问题:
当Spec过于简略时,AI缺乏足够的约束信息:
可能的解决方向:
采用”分层概要 + 代码指针”策略,而非追求详尽的Spec:
推荐的上下文组织方式:
├── 服务概要:服务职责、边界定义
├── 业务概要:核心业务流程、关键概念
├── 模块概要:模块职责、依赖关系
├── 接口概要:对外接口、调用方式
└── 代码指针:具体细节参见 xxx/xxx.go 的 xxx 函数
不推荐维护:
├── ❌ 详细的数据结构定义(代码中已有)
├── ❌ 完整的接口参数说明(代码中已有)
├── ❌ 具体的实现逻辑描述(代码中已有)
└── ❌ 任何可以从代码直接获取的信息
核心原则:概要层帮助AI快速定位,细节层直接读取代码。避免维护一份”像代码一样详细的Spec文档”——那只是换了格式的代码,并未降低复杂度,反而增加了同步成本。
针对当前落地问题,以下改进措施可在短期内实施:
改进一:增强架构澄清环节
在现有流程中增加架构分析和澄清步骤:
原流程: Spec → Clarify → Plan → Tasks → Implement
改进流程: Spec → Clarify Spec → Research → Clarify Arch & Detail → Plan → Tasks → Implement
改进二:增加一致性校验机制
analyze命令,用于检测和纠正文档不一致改进三:完善项目宪章内容
在Constitution中补充:
改进四:建立反馈闭环
开发debug命令,用于:
方向一:知识库体系建设
建立与SDD流程集成的知识库:
方向二:需求分类与适用性指引
不同类型的需求,SDD效果差异显著。建立需求分类指引:
| 需求类型 | SDD适用性 | 关键判断维度 | 建议做法 |
|---|---|---|---|
| 功能增强(棕地) | 高 | 边界清晰、有历史参考 | 标准SDD流程 |
| 全新功能(绿地) | 高 | 架构约束明确 | 先架构设计,再SDD |
| 性能优化 | 中 | 需要实验验证 | 先Vibe Coding穿刺,明确方案后再SDD |
| 技术重构 | 中 | 影响范围大 | 需要充分的架构分析和风险评估 |
| 问题修复 | 低 | 紧急、范围小 | 直接Vibe Coding可能更高效 |
| 跨服务需求 | 中-低 | 协作复杂度高 | SDD管理规范,但实现需要更多人工协调 |
方向三:LSP集成增强语义理解
借鉴Claude Code原生集成LSP的思路,增强AI对代码库的语义理解:
方向四:多Agent协作架构
针对上下文窗口爆满问题,业界正在探索Subagent架构作为解决方案:
传统模式(单一Agent):
用户输入 → 单一Agent处理所有任务 → 上下文持续膨胀 → 窗口爆满 → 任务失败
Subagent模式:
用户输入 → 主Agent(决策层)
↓
意图识别 + 任务拆分
↓
┌─────────┼─────────┐
↓ ↓ ↓
Subagent1 Subagent2 Subagent3
(独立窗口) (独立窗口) (独立窗口)
└─────────┼─────────┘
↓
结果汇总 → 主Agent继续
Subagent架构的核心优势:
| 维度 | 单一Agent模式 | Subagent模式 |
|---|---|---|
| 上下文管理 | 持续累积,易爆满 | 独立窗口,按需加载 |
| 任务复杂度 | 受限于单一窗口容量 | 可处理更复杂的长任务 |
| 状态传递 | 依赖上下文记忆 | 通过结构化文件传递 |
| 失败恢复 | 需要从头开始 | 可从断点继续 |
状态传递机制:
Subagent之间不共享上下文窗口,通过结构化状态文件保证信息传递:
核心原则:每个Subagent只完成一个”原子任务”。这类似于人类团队的轮班协作模式——不是一个工程师连续工作48小时,而是多个工程师各工作4小时但交接清晰。
这一方向与BMAD-METHOD的多角色设计理念一致,但更强调上下文隔离和状态传递机制。
愿景一:规范层的统一
建立代码之上的统一”规范层”:
愿景二:左移到极致
重新定义”左移”:测试发生在编码之前
愿景三:自主代理团队
参考MetaGPT的哲学:”代码=SOP(团队)”
与人类团队的类比:
人类团队:
├── 产品经理:理解需求、拆解任务
├── 技术负责人:设计方案、分配工作
├── 开发工程师:实现功能
├── 测试工程师:验证质量
└── 通过会议和文档进行协调
Agent团队:
├── 需求分析Agent:理解意图、路由任务
├── 架构设计Agent:设计方案
├── 实现执行Agent:生成代码
├── 测试验证Agent:验证质量
└── 通过结构化状态文件进行协调
当前范式:AI执行一步,人工检查,批准后继续。
未来范式:人设定目标,Agent团队自主协作数小时甚至数天,人验收最终结果。人的角色从”操作者”转变为”监督者”,从”指令发出者”转变为”目标设定者”。
基于以上分析,对正在或计划采用SDD的技术团队提出以下建议:
建议一:投资培训,转变技能重心
从语言特定技能转向更高阶能力:
建议二:从棕地项目开始验证
通过OpenSpec等工具在现有项目上引入SDD,进行低风险、高价值的验证:
建议三:建立项目宪章
今天就创建constitution.md,以AI可读的格式编纂:
建议四:提升规范质量意识
在文化上将规范质量提升到与代码质量同等水平:
建议五:建立知识沉淀机制
针对边际成本恒定问题,建立系统化的知识沉淀机制:
规范驱动开发(SDD)不是对AI编程能力的否定,而是对其使用方式的系统性升级。它代表了软件工程在AI时代的一次重要范式转变:从”代码是真相”到”意图是真相”,从”人写代码”到”人定义规范、AI生成代码”。
这一转变的核心洞察是:AI擅长执行,但需要人类提供方向。通过将规范置于开发流程的核心,SDD为AI提供了充分的上下文和明确的约束,使其从”聪明但不可靠的助手”升级为”可控且可预测的执行者”。
然而,SDD并非银弹。在生产环境落地过程中,我们面临架构理解不足、流程一致性难以保障、隐性知识难以传递、边际成本恒定等现实挑战。特别是Spec详细程度的悖论——过于详细则变成另一种形式的代码,过于简略则失去指导价值——揭示了SDD方法论本身的内在张力。
这些问题的解决需要工具层面的持续改进:上下文工程的深化、多Agent协作架构的探索、知识复利机制的建立。更需要团队在实践中不断积累经验、优化流程,找到适合自身场景的平衡点。
展望未来,随着AI能力的持续提升和SDD工具链的不断成熟,我们有理由相信:掌握规范编写能力的工程师,将在AI时代拥有更大的竞争优势。因为在这个新范式下,最有价值的不是编写最聪明代码的人,而是编写最清晰规范的人。
软件工程的未来不是打字更快,而是思考更清晰。
[1] Li Shen. “Spec-Driven Development (SDD) Is the Future of Software Engineering”. Medium, 2025.
[2] Den Delimarsky. “Spec-driven development with AI: Get started with a new open source toolkit”. GitHub Blog, 2025.
[3] Martin Fowler. “Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl”. martinfowler.com, 2025.
[4] GitHub. “spec-kit: Toolkit to help you get started with Spec-Driven Development”. github.com/github/spec-kit, 2025.
[5] BMAD Code Organization. “BMAD-METHOD: Breakthrough Method for Agentic Development”. github.com/bmad-code-org/BMAD-METHOD, 2025.
[6] Fission AI. “OpenSpec: Spec-driven development for AI”. github.com/Fission-AI/OpenSpec, 2025.
[7] Deepractice. “PromptX: Leading AI agent context platform”. github.com/Deepractice/PromptX, 2025.
[8] Anthropic. “Claude Code Native LSP Support”. Claude Code Changelog, 2025.
[9] Visual Studio Magazine. “GitHub Open Sources Kit for Spec-Driven AI Development”. 2025.
[10] DEV Community. “Spec Driven Development (SDD) - A initial review”. dev.to, 2025.
[11] Anthropic. “Effective Context Engineering for AI Agents”. Anthropic Research, 2025.
| 术语 | 英文 | 定义 |
|---|---|---|
| 规范驱动开发 | Specification-Driven Development (SDD) | 将规范置于开发流程核心的方法论 |
| 氛围编程 | Vibe Coding | 即兴式、提示-粘贴-祈祷式的AI辅助开发方式 |
| 上下文工程 | Context Engineering | 为AI提供充分、准确、相关项目上下文的技术实践 |
| 上下文腐蚀 | Context Rot | 随着上下文窗口token增加,模型信息回忆能力下降的现象 |
| 注意力预算 | Attention Budget | LLM处理信息时的注意力资源限制 |
| 项目宪章 | Constitution | 编纂项目核心约束的AI可读文档 |
| 活文档 | Living Document | 随项目演进持续更新的文档 |
| 棕地项目 | Brownfield Project | 在现有代码库基础上进行的开发 |
| 绿地项目 | Greenfield Project | 从零开始的全新项目开发 |
| 幻觉 | Hallucination | AI生成语法正确但逻辑错误的输出 |
| 边际成本 | Marginal Cost | 每增加一个单位产出所需的额外成本 |
| Subagent | Subagent | 在多Agent架构中负责特定子任务的独立Agent |
以下内容可根据需要进一步扩展,并建议配合相应图片增强可读性:
| 位置 | 图片主题 | 建议来源/绘制方式 |
|---|---|---|
| 2.2节 | SDD核心原则示意图 | 自绘四象限图或流程图 |
| 3.2节 | Vibe Coding vs SDD对比图 | 参考GitHub官方博客配图风格 |
| 5.3节 | 上下文工程架构图 | 参考BMAD-METHOD架构图 |
| 5.4节 | 上下文腐蚀示意图 | 展示token增加与精度下降的关系曲线 |
| 6.3节 | 四种工具定位象限图 | 自绘,X轴轻量-重量,Y轴绿地-棕地 |
| 7节 | 生产落地问题分类图 | 鱼骨图或问题树 |
| 7.9节 | 边际成本对比图 | 展示理想状态与当前现实的成本曲线 |
| 8.2节 | 多Agent协作架构图 | 展示主Agent与Subagent的协作关系 |
| 8.3节 | SDD演进路线图 | 时间轴或阶段图 |
方向一:具体工具的详细使用指南
方向二:案例研究
方向三:与其他方法论的结合
方向四:度量与评估
方向五:组织变革
方向六:上下文工程深化
方向七:知识复利机制
文档结束
本文档基于2026年1月的技术现状编写,SDD领域发展迅速,建议定期关注相关工具和方法论的更新。
随着软件开发和技术架构的不断进步,人工智能(AI)逐渐渗透到多个领域,尤其是软件工程和开发流程中。 AI辅助开发工具,如Cursor、MetaGPT等,已经成为提高开发效率、自动化任务和优化代码质量的关键力量。 这些工具能够智能化地帮助开发者进行代码生成、故障排查、测试优化等工作,从而减少人为错误和提高工作效率。 在现代开发环境中,如何有效利用AI工具来优化开发流程,尤其是在涉及复杂技术栈、分布式系统和高可用架构的项目中,已成为一个值得深思的话题。
Vibe Coding 是一种利用自然语言与人工智能(AI)结合来生成代码的全新编程方式。 开发者通过简单的自然语言输入描述需求,AI 会根据这些输入自动生成相应的代码,帮助开发者快速实现功能。 其核心理念是 “意图驱动开发”,开发者不再需要关心底层代码的实现,而是关注功能需求和代码的正确性。
Vibe Coding 的关键在于自然语言编程,即开发者用平常的语言表达需求,AI 自动将其转化为代码。 这一过程大大降低了开发门槛,使得即使是非技术背景的人也能够参与到开发过程中,减少了开发的复杂度。 例如,开发者可以告诉 AI:“创建一个登录界面,包含用户名和密码输入框,提交按钮,并进行基本的输入验证”,AI 会根据这些描述生成相应的 HTML 和 JavaScript 代码。
Vibe Coding 依赖于强大的人工智能技术,尤其是深度学习和自然语言处理(NLP)技术。 开发者的角色从编写代码转变为与 AI 的协作。AI 不仅生成初步代码,还能根据开发者的反馈进行优化、修改,甚至参与代码调试和测试。 AI 和开发者之间的合作是动态的,开发者可以实时提供反馈,AI 会根据这些反馈不断调整生成的代码,保证代码的质量和功能的实现。
https://sourcegraph.com/blog/levels-of-code-ai 下面level0-level4是人主导,level5是AI主导完成开发
** AI工具可能都是具备跨多个level能力的,整理一个多个典型工具支持的level,单独做一个页面 **
##
| 阶段 | 防护内容 | 具体措施 | 工具/方法 |
|---|---|---|---|
| 一、需求阶段 | 需求获取与分析 | - 深入沟通 - 需求文档化 - 需求评审 |
- 用户故事、用例图 - 需求规格说明书 |
| 需求管理 | - 需求变更控制 - 需求追踪矩阵 |
- JIRA、Trello 等项目管理工具 | |
| 二、设计阶段 | 架构设计 | - 架构评审 - 设计模式应用 |
- 架构图 - 设计模式(如 MVC、MVVM) |
| 详细设计 | - 接口定义 - 数据库设计 |
- API 文档工具(如 Swagger) - ER 图 |
|
| 三、编码阶段 | 编码规范 | - 制定编码标准 - 代码格式化工具 |
- Prettier、Black 等代码格式化工具 |
| 代码审查 | - 建立审查流程 - 使用审查工具 - AI 辅助审查 |
- Gerrit、Crucible - GitHub Pull Requests |
|
| 四、测试阶段 | 测试策略 | - 测试金字塔实践 - 自动化测试 |
- Selenium、Appium 等自动化测试工具 |
| 测试覆盖率 | - 覆盖率监控 - 设定覆盖率目标 |
- Jacoco、Coverage.py | |
| 性能与安全测试 | - 性能测试 - 安全测试 |
- JMeter、LoadRunner - 渗透测试工具 |
|
| 五、CI/CD 阶段 | 持续集成(CI) | - 自动构建与测试 - 使用 CI 工具 |
- Jenkins、GitLab CI、CircleCI |
| 持续交付(CD) | - 自动部署 - 部署策略 |
- Kubernetes、Docker | |
| 质量门禁 | - 质量检查 - 阻止未通过代码合并 |
- 静态代码分析工具集成到 CI/CD 流程 | |
| 六、质量监控 | 静态代码分析 | - 工具使用 - 自定义规则集 |
- SonarQube、PMD、FindBugs |
| 代码复杂度与重复度 | - 圈复杂度检测 - 重复代码检测 |
- Lizard - CPD(Copy-Paste Detector) |
|
| 关键指标监控 | - 度量指标 - 可视化仪表盘 |
- Grafana、Kibana | |
| 七、内存与性能 | 内存泄露检测 | - 工具使用 - 自动化监控 |
- Memory Profiler、Valgrind |
| 性能优化 | - 性能分析 - 优化实践 |
- Profiling 工具 - 缓存、异步处理等优化手段 |
|
| 八、安全性防护 | 安全编码 | - 安全指南 - 依赖安全性 |
- OWASP 指南 - Dependabot、Snyk |
| 安全测试 | - SAST - DAST |
- 静态/动态安全测试工具 | |
| 九、配置管理 | 配置管理 | - 配置中心 - 环境隔离 |
- Consul、Etcd |
| 容器化与编排 | - 容器化应用 - 容器编排 |
- Docker - Kubernetes |
|
| 十、团队协作 | 敏捷实践 | - Scrum/Kanban - 每日站会 |
- Jira、Trello - Stand-up Meetings |
| 知识管理 | - Wiki 建设 - 技术分享 |
- Confluence、Notion | |
| 质量文化 | - 全员参与 - 持续改进 |
- 团队培训 - 反馈机制 |
|
| 十一、AI 与自动化 | AI 辅助开发 | - 代码生成与补全 - 智能代码审查 |
- GitHub Copilot - DeepCode、Codacy |
| 自动化运维(DevOps) | - IaC - 自动化监控与告警 |
- Terraform、Ansible - Prometheus、ELK Stack |
|
| 十二、反馈与改进 | 用户反馈 | - 收集渠道 - 反馈处理 |
- 应用内反馈 - 用户调研 |
| 项目回顾 | - Sprint 回顾 - 经验教训库 |
- 回顾会议 - 知识库维护 |