Appearance
OpenSpec 与 Spec Kit (Specify CLI) 的 SDD 模式深度对比
归类:Tools / AI 工程化 / SDD 发生时间:2026-05-18 状态:✅ 已沉淀
一、 核心结论:它们都属于 SDD 模式吗?
是的,它们都属于 SDD (Spec-Driven Development,规范驱动开发) 模式。
什么是 SDD 模式?
在传统的 AI 辅助编程中,开发者往往采用“提示词驱动开发”(又称 Vibe Coding,氛围感编程),即通过零散的自然语言 Prompt 直接命令 AI 生成代码。这种模式在复杂场景下极易导致 AI 产生幻觉、上下文丢失以及架构混乱。
SDD (Spec-Driven Development) 是一种应对此痛点的全新研发范式:
- 规范即契约:将结构化、版本控制的规范 (Spec)(而非代码本身)作为项目的唯一事实来源 (Single Source of Truth)。
- 确定性链路:遵循
Spec (规格) -> Plan (计划) -> Tasks (任务) -> Implement (执行)的确定性链路,让 AI Agent 严格按照既定蓝图进行编码,确保输出精准对齐业务设计。
二、 什么是 Spec Kit (Specify CLI)?
Spec Kit 是由 GitHub 官方 开源的 SDD 配套工具套件,其唯一的命令行工具为 Specify CLI(执行命令为 specify)。
- 核心定位:全生命周期的规范治理与重度 SDD 全能套件。
- 适用场景:“新项目 / 绿地项目 (Greenfield)” 的初始化与全局规范管控。
- 核心工作流:
- Constitution (宪法):定义全局技术选型、目录规范和不可逾越的红线。
- Specify (规格):编写标准化的功能 Spec 文件(如
spec.md)。 - Clarify (澄清):让 AI 扫描 Spec 中的模糊需求或边界条件,并通过多轮问答进行澄清补全。
- Plan (计划):基于 Spec 生成技术实现方案(如数据模型、接口契约)。
- Tasks (拆解):将 Plan 拆解为具有依赖顺序的可执行任务列表。
- Implement (实施):启动 AI 自动编码,线性执行任务。
三、 什么是 OpenSpec?
OpenSpec(源自 intent-driven.dev 社区发起的开源项目)是一个轻量级的 SDD 规范变更工作流工具。
- 核心定位:轻量级增量变更管理工具。
- 适用场景:“老项目 / 棕地项目 (Brownfield)” 的日常迭代、Bug 修复和功能渐进式扩展。
- 核心机制(Delta Specs): 在成熟的现有项目中,我们不可能每次修改都去重写或阅读完整的全局规范。OpenSpec 引入了 Delta Specs(增量规格) 机制,要求通过
ADDED、MODIFIED、REMOVED三种精确的状态定义变更点。 - 核心工作流:
- Proposal (提议):创建一个轻量级 Markdown 说明,定义此次修改的意图和设计。
- Definition (增量定义):明确指出哪些规格需要新增、修改或移除。
- Apply (应用):把这些增量规格投喂给 AI 助手(如 Claude Code, Cursor),AI 仅根据增量执行精准修改。
- Archive (归档):修改完成后,将变更自动合并归档至主规格库中,保持文档与代码同步更新。
四、 核心多维度对比
| 对比维度 | Spec Kit (Specify CLI) | OpenSpec |
|---|---|---|
| 发起/出品方 | GitHub 官方开源 | intent-driven.dev 开源社区 |
| 运行环境 | Python 3.11+ (基于 specify 命令) | 轻量级二进制 / CLI 工具 |
| 设计理念 | 全局性、系统性。重度工程治理,强调全局一致性契约。 | 渐进性、轻量级。即插即用,通过差分降低 AI 阅读上下文成本。 |
| 首选场景 | 新项目启动、大版本重构、企业规范落地(Greenfield) | 现有成熟系统功能迭代、Bug 修复(Brownfield) |
| 最小变更单位 | 整个模块或特性规格 (Features / Components) | 增量变更包 (ADDED / MODIFIED / REMOVED Deltas) |
| IDE 协同 | 深度集成特定编辑器(如 Claude Code、Cursor),提供内置 /speckit.* 斜杠指令 | 工具无关(Tool-Agnostic),无缝兼容 20+ 以上的 AI 助手与 CLI |
| 授权许可 | MIT 开源协议 | MIT 开源协议 |
五、 团队落地建议:如何选择?
在实际的企业研发生态中,这两个工具并不是非此即彼的对立关系,而是互补的:
mermaid
graph TD
A[项目生命周期] --> B{项目属性?}
B -- 新项目 / 重大重构 --> C[优先使用 Spec Kit]
B -- 成熟老项目迭代 --> D[优先使用 OpenSpec]
C --> E[用 specify init 全局建档,制定项目 Constitution]
D --> F[用 Delta Specs 机制拆解任务,避免 AI 全局扫描产生幻觉]- 新项目冷启动:使用 Spec Kit 搭建底层骨架,通过
specify init初始化标准的 SDD 目录,并用/speckit.constitution约束项目的代码风格和接口风格。 - 日常业务敏捷迭代:在后续的功能新增和 Bug 修复中,采用 OpenSpec 的增量变更理念。只提供本次改动的 Delta Specs,防止因投喂过大的全局文档导致 AI 迷失在冗余的上下文中,从而大幅提升编码准确率和响应速度。