OpenSpec 是一套面向 AI 辅助开发的规范注入系统,它通过结构化的工作流和规范文件,让 AI 工具能够更好地理解项目上下文并执行开发任务。这套系统特别适合在 .NET 项目中使用,但它的设计理念可以应用于任何技术栈。
核心价值在于解决了 AI 辅助开发中的三个关键痛点:
提示:OpenSpec 不是另一个 AI 工具,而是一套让现有 AI 工具更好地工作的规范框架。它通过文件结构和约定来"教"AI 如何参与项目开发。
在开始使用 OpenSpec 前,需要确保你的开发环境满足以下要求:
安装 OpenSpec CLI 工具:
bash复制npm install -g @fission-ai/openspec@latest
这个全局安装的命令会提供 openspec 命令行工具,它是管理规范的主要接口。
进入你的项目目录后,运行初始化命令:
bash复制cd /path/to/your-project
openspec init
初始化过程会引导你完成以下配置:
注意:初始化时选择的 AI 工具会影响生成的目录结构。如果你使用的工具不在列表中,可以选择"Other Tools"选项。
根据选择的 AI 工具不同,OpenSpec 会生成不同的目录结构。以下是两种典型场景:
code复制.claude/
├── commands/
│ └── openspec/
│ ├── apply.md
│ ├── archive.md
│ └── proposal.md
├── AGENTS.md
└── CLAUDE.md
关键文件说明:
commands/openspec/:包含三个核心命令的规范定义AGENTS.md:Claude Code 的主规范文件CLAUDE.md:工具特定的配置code复制项目根目录/
├── AGENT.md
└── openspec/
├── AGENTS.md
├── project.md
├── specs/
└── changes/
主要差异:
OpenSpec 的核心创新在于"规范注入"机制。它通过以下方式工作:
这种设计实现了"按需规范"的理念,既保证了 AI 工作的规范性,又避免了不必要的约束。
OpenSpec 定义了标准化的变更管理流程:
提案阶段 (Proposal)
/openspec:proposal 命令触发实现阶段 (Apply)
/openspec:apply 命令归档阶段 (Archive)
/openspec:archive 完成OpenSpec 使用关键词触发机制来决定何时加载规范。常见触发词包括:
当 AI 检测到这些关键词时,会自动加载对应的规范文件来指导后续交互。
AGENTS.md 是 OpenSpec 的核心规范文件,其典型结构如下:
markdown复制# OpenSpec 说明
## 基本规则
- 代码风格指南
- 项目结构约定
- 命名规范
## 变更管理
- 何时需要提案
- 提案模板
- 审批流程
## 业务上下文
- 核心领域概念
- 关键业务流程
- 重要文档链接
这个文件会被 AI 工具在每次对话时加载,确保基础规范始终有效。
每个命令对应一个 Markdown 文件,例如 proposal.md:
markdown复制# 变更提案规范
## 提案模板
**标题**:简明描述变更
**背景**:为什么需要这个变更
**方案**:具体实现方法
**影响**:对系统的影响评估
## 质量要求
- 必须包含回滚方案
- 需要评估性能影响
- 应有测试计划
这些文件定义了 AI 执行特定命令时应遵循的详细规范。
project.md 存储项目特定的业务知识:
markdown复制# 项目知识库
## 业务领域
- 核心业务概念解释
- 关键业务流程图示
## 技术栈
- 主要框架和库
- 架构图和数据流
## 开发资源
- API 文档链接
- 设计系统地址
- 测试环境信息
这个文件帮助 AI 理解项目背景,做出更符合业务需求的建议。
Claude Code 对 OpenSpec 有原生支持,具备以下特性:
.claude 目录最佳实践:
openspec update 更新规范/openspec: 前缀触发命令CLAUDE.md 进行工具特定配置对于 Trae 用户,需要额外配置步骤:
AGENT.md 内容复制到 Trae 的项目规则中openspec/ 目录变化注意:Trae 2026.1+ 版本已支持自动加载
AGENT.md,无需手动复制。
对于不支持 OpenSpec 的 AI 工具,可以采用以下策略:
建议将 OpenSpec 规范与代码一起进行版本控制:
示例工作流:
bash复制git add .claude/AGENTS.md
git commit -m "docs(spec): 更新代码风格规范 v1.2"
在团队中使用 OpenSpec 时:
openspec validate 检查一致性为提高 OpenSpec 响应速度:
症状:AI 没有按预期加载规范
排查步骤:
解决方案:
/openspec:)症状:不同规范文件之间存在矛盾
识别方法:
bash复制openspec validate --strict
解决流程:
症状:AI 响应变慢,特别是加载规范后
优化方案:
可以通过创建 templates/ 目录来扩展 OpenSpec:
AGENTS.md 中引用这些模板openspec refresh 应用变更对于高级用户,可以开发 OpenSpec 插件:
plugins/ 目录openspec.config.json典型插件类型:
OpenSpec 可以与现有系统集成:
集成示例:
bash复制openspec sync --target confluence --url https://wiki.example.com
在一个大型 .NET 项目中使用 OpenSpec 的经验:
挑战:
解决方案:
成果:
在微服务环境中应用 OpenSpec 的关键点:
示例目录结构:
code复制microservices/
├── .claude/ # 全局规范
├── auth-service/ # 认证服务
│ ├── openspec/ # 服务特定规范
│ └── ...
└── order-service/ # 订单服务
├── openspec/
└── ...
将 OpenSpec 应用于遗留系统的技巧:
关键命令:
bash复制openspec diff --current legacy.md --target modern.md
正在开发的功能:
未来版本计划:
长期愿景:
在实际项目中使用 OpenSpec 一年多后,我总结了以下经验:
特别有用的实践是建立"规范看板",可视化展示:
最后,记住 OpenSpec 是工具而非目标。它的价值在于提升开发效率和质量,而不是增加流程负担。当发现某些规范没有带来实际价值时,应该毫不犹豫地修改或移除它们。