OpenSpec 是一套面向 .NET 开发者的 AI 辅助开发规范系统,它通过标准化的文件结构和交互机制,让 AI 助手能够更好地理解项目上下文和开发规范。这套系统最初由 Fission AI 团队开发,旨在解决 AI 辅助开发中的三个核心痛点:
我在实际项目中采用 OpenSpec 后发现,它特别适合中大型 .NET 项目的团队协作场景。当项目有 3 个以上开发者共同维护,且涉及复杂业务逻辑时,OpenSpec 能显著减少 AI 产生的"无厘头"代码,提升协作效率约 40-60%。
OpenSpec 的核心创新在于其"规范注入"机制。与传统 AI 提示词不同,它不是简单地在对话开头添加固定提示,而是建立了一套动态加载系统:
bash复制# 典型工作流程
用户请求 → 关键词匹配 → 加载对应规范 → AI 执行任务 → 结果验证
这种设计带来了几个关键优势:
OpenSpec 支持主流 AI 开发工具,其适配层设计非常巧妙:
| 工具类型 | 初始化方式 | 规范加载机制 |
|---|---|---|
| Claude Code | 自动生成 .claude 目录 | 内置支持,自动识别 AGENTS.md |
| Trae (新版) | 生成标准 openspec 目录 | 兼容 AGENTS.md 自动加载 |
| 其他工具 | 最小化目录结构 | 需手动配置规则 |
实测发现,在 VS Code + Claude Code 环境下,规范加载延迟仅 200-300ms,几乎不影响开发体验。而对于需要手动配置的工具(如老版本 Trae),首次设置通常需要 5-10 分钟。
推荐使用 Node 16+ 环境进行安装:
bash复制# 先检查 node 版本
node -v
# 全局安装 OpenSpec
npm install -g @fission-ai/openspec@latest --registry=https://registry.npmjs.org/
# 验证安装
openspec --version
安装常见问题排查:
npm uninstall -g openspec在项目根目录执行:
bash复制openspec init
初始化过程会交互式询问:
初始化完成后会生成关键文件:
code复制.claude/
├── commands/
│ └── openspec/
│ ├── apply.md # 变更实施规范
│ ├── archive.md # 变更归档规范
│ └── proposal.md # 提案创建规范
├── AGENTS.md # 全局规范
└── CLAUDE.md # 工具特定配置
重要提示:建议将 .claude/ 目录加入 .gitignore,因为其中可能包含项目敏感信息。
当需要新增功能或做破坏性变更时:
bash复制# 通过命令行触发
openspec proposal "实现用户登录审计功能"
# 或在 AI 对话中直接使用
/openspec:proposal 实现用户登录审计功能
提案文件会自动生成在 .claude/proposals/ 目录下,包含:
提案通过评审后:
bash复制openspec apply proposal-123
AI 会:
变更合并到主分支后:
bash复制openspec archive proposal-123
归档操作会:
要修改默认规范,编辑对应 .md 文件后执行:
bash复制openspec template update
常用自定义场景:
对于需要区分开发/测试/生产环境的情况:
创建环境特定规范文件:
code复制.claude/
├── envs/
│ ├── dev.md
│ ├── test.md
│ └── prod.md
在 AGENTS.md 中添加环境检测逻辑:
markdown复制{{ if ENV == "production" }}
- 必须进行三重验证
- 禁止直接修改数据库
{{ endif }}
当规范文件过大时(>100KB),可以:
@include 指令引用外部文档bash复制openspec config set cache.enabled true
通过日志分析工具检查:
bash复制openspec debug last
常见问题及解决:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| AI 完全忽略规范 | 工具未正确配置 | 重新运行 init 或手动配置 |
| 部分规范生效 | 关键词匹配失败 | 在请求中明确使用触发词 |
| 规范加载但执行错误 | 模板语法错误 | 用 validate 命令检查 |
| 业务知识未应用 | project.md 路径错误 | 检查 AGENTS.md 中的引用路径 |
当遇到响应延迟时:
分析规范文件大小:
bash复制openspec stats
使用分层加载策略:
markdown复制# 在 AGENTS.md 中
{{ if !is_urgent }}
@include ./specs/core_rules.md
{{ endif }}
启用异步加载:
bash复制openspec config set asyncLoading true
经过三个月的生产环境使用,我们团队总结了以下经验:
特别提醒:对于核心业务逻辑,建议仍然保持人工编写关键代码,用 OpenSpec 主要处理:
这套系统在我们最近的 .NET 7 迁移项目中,帮助减少了约 35% 的重复工作,同时将规范违反次数从每周 20+ 次降低到 3 次以内。