在 《SDD规范驱动开发:AI时代的软件工程新范式》 一文中,我们详细介绍了 SDD ( Spec-Driven Development ,规范驱动开发)的设计思想:以规范为核心驱动代码生成,在编写任何代码之前先让人与 AI 达成明确共识,从根本上解决 AI 编程中的上下文漂移、决策不透明、知识无法沉淀等工程痛点。
OpenSpec 是一款将 SDD 方法论工程化落地的开源工具。它不是另一套复杂的项目管理系统,而是一个轻量级的规范层:通过简洁的目录结构和斜杠命令,将每次特性开发组织为包含提案、规范、设计、任务清单的结构化变更单元,配合 20+ 种主流 AI 助手开箱即用,帮助开发者在保持工程纪律的同时不增加额外的流程负担。
2. 什么是OpenSpec
OpenSpec 的官方定义是:
The most loved spec framework.
其设计哲学可以概括为五条原则:
→ fluid not rigid (流动而非刚性) → iterative not waterfall (迭代而非瀑布) → easy not complex (简单而非复杂) → built for brownfield (面向存量系统而非只支持新项目) → scalable (从个人项目到企业级均可适用)
OpenSpec 通过在项目中引入一个 openspec/ 目录,将每次特性开发或变更组织为包含提案、规范、设计、任务清单的结构化文件夹。配合 AI 助手的斜杠命令,开发者可以在几秒内启动一次规范化的变更流程,而不是直接让 AI 开始写代码。
2.1 与同类工具的对比
工具
定位
核心差异
OpenSpec
轻量级规范层,多工具支持
流程灵活、支持 20+ 种 AI 助手、开箱即用
Spec-kit (GitHub)
重量级 SDD 工具包
功能完整但流程较重,需要更多配置
Kiro (AWS)
专属 IDE 集成
功能强大但锁定 IDE 和 Claude 模型
无规范
直接 Vibe Coding
快速启动但结果不可预测
3. 核心概念
理解 OpenSpec 的工作原理,需要掌握以下几个核心概念。
3.1 Specs(规范,系统的事实来源)
specs/ 目录是 整个项目 的"行为事实来源"( source of truth ),描述系统当前的行为方式。它按领域组织:
## ADDED Requirements ### Requirement: Create User The system SHALL create a new user record when provided with valid registration data. #### Scenario: Successful user creation - WHEN a POST request is sent to /api/v1/users with valid username, email and password - THEN the system SHALL return HTTP 200 with the new user's id - AND the user record SHALL be persisted in the database #### Scenario: Duplicate email - WHEN a POST request is sent with an email already in use - THEN the system SHALL return HTTP 400
增量规范在工作流中扮演"行为合同"的角色,贯穿整个变更生命周期的三个环节:
驱动实现 : /opsx:apply 执行时, AI 以增量规范为基准,确保生成的代码满足每条场景定义的行为约束
驱动验证 : /opsx:verify 执行时, AI 逐条核查代码实现是否与增量规范中的 Given/When/Then 场景一致
context 和 rules 的内容是 给 AI 看的约束,不是写入文件的内容 —— AI 在生成工件时会参照它们,但永远不会把这两个字段的内容原文复制进工件文件中。
配置示例:
schema: spec-driven context:| Tech stack: Go, GoFrame v2, SQLite (dev) / MySQL (prod) API style: RESTful, JSON responses wrapped in {code, message, data} Error codes: follow internal error code spec in docs/error-codes.md All new APIs must include pagination support Domain: multi-tenant SaaS platform rules: proposal: - Keep proposals under 500 words - Always include a "Non-goals" section - Reference the related issue number in Why section specs: - All scenarios must include both success and error cases - HTTP status codes must follow RFC 7231 tasks: - Break tasks into chunks completable in one session - Each task group must have a corresponding spec requirement
7. 实战演示
下面通过一个完整的实例,演示如何使用 OpenSpec 进行 AI 工程管理实践:用 GoFrame 框架从头构建一个用户服务,提供以下 RESTful 接口:
schema: spec-driven context:| Output language: All artifact content must be written in Simplified Chinese, including section titles, descriptions, scenario text, and task items. The only exceptions are: code identifiers, API paths, technical terms with no standard Chinese translation, and RFC keyword markers (SHALL/MUST/SHOULD/GIVEN/WHEN/THEN).