需求模糊不清,改了又改,知识随人员流失而消散。每个开发团队都经历过:功能看似简单,实际开发却漏洞百出;需求不断变更,代码越来越难维护;新同事接手,无人说得清设计思路。难道软件开发只能靠口口相传和踩坑积累吗?最近一次实践让我看到转机,原来问题不在技术而在规范和流程。谋定而后动,知止而有得,万事皆有法,不可乱也。
Why OpenSpec?
大多数团队的真实写照:需求在嘴上,改在代码里,忘在时间里
让我们以一个真实的 Todo App 开发场景为例:
场景一:需求的"模糊地带"
🗣️ 产品经理:"我们给 Todo 应用加个标签功能吧"
👨💻 开发:标签是什么格式?字符串还是数组?颜色要不要支持?
🗣️ 产品经理:"就普通的标签功能,你知道的..."
👨💻 开发:那标签可以重复吗?删除任务时标签怎么办?搜索要不要支持标签?
两周后,功能上线了: 🗣️ 用户A:"为什么我的标签不能带空格?'工作计划'显示成两个标签了"
🗣️ 用户B:"我想给任务加红色标签标记紧急,怎么只有默认颜色?"
🗣️ 用户C:"为什么删除所有带'紧急'标签的任务后,标签还在?"
场景二:功能的"连锁反应"
产品经理说:"我们再加个任务分类功能吧"
🗣️ 产品经理:"分类和标签差不多,就是用来组织任务的"
👨💻 开发:那分类和标签有什么区别?一个任务可以有多个分类吗?
🗣️ 产品经理:"分类就像文件夹,标签就像关键词..."
开发时发现:数据结构、搜索、统计都需要重构。
场景三:知识的"断层"
新同事加入团队:
👨💻 新同事:"我看到代码里有标签和分类两个功能,它们的区别是什么?"
👨💻 老开发:"嗯...这个说来话长,当时产品说..."
👨💻 新同事:"为什么标签的删除逻辑和分类不一样?"
👨💻 老开发:"好像是当时有个 bug,后来就..."
这就是大多数团队的真实写照:需求在嘴上,改在代码里,忘在时间里。
OpenSpec 的解决思路很简单:把需求当代码一样管理,规范先行,谋定而后动。
What OpenSpec?
项目地址 :github.com/Fission-AI/...
OpenSpec 是一个规范驱动的开发工作流工具,帮你把模糊的需求变成清晰的规范,让团队按照标准流程来开发。
简单说,它就像给软件开发的"安全驾驶流程":
- 谋定:规划路线,制定行程
- 知止:检查车况,避免冒险
- 而行:遵守规则,安全驾驶
- 有得:记录数据,提升技能
How:OpenSpec 工作流-四步走
OpenSpec 规范开发流程为四个核心步骤,每一步都有明确的输入和输出:
如下以todo-app为例进行实战演练
1️⃣ 谋定:创建结构化提案
目标:把模糊的想法变成清晰、可执行的需求规范
bash
# 先安装和初始化,选择claude code
npm install -g @fission-ai/openspec@latest
cd todo-app/
openspec init

复制prompt到claude code执行
markdown
1. Populate your project context:
"Please read openspec/project.md and help me fill it out
with details about my project, tech stack, and conventions"
2. Create your first change proposal:
"I want to add [YOUR FEATURE HERE]. Please create an
OpenSpec change proposal for this feature"
3. Learn the OpenSpec workflow:
"Please explain the OpenSpec workflow from openspec/AGENTS.md
and how I should work with you on this project"
在claude执行,填充project.md

创建提案,以新增优先级功能为例
bash
# 创建提案 - 以优先级功能为例
/openspec:proposal "给 Todo 应用添加优先级功能"

OpenSpec 会自动完成:
- 📊 影响分析:扫描现有代码,确定需要修改的文件和模块
- 📁 结构生成 :创建
openspec/changes/add-task-priority/目录结构 - 📋 模板生成:自动创建提案文档、设计模板、任务清单
- 🔍 需求引导:通过结构化问题确保需求完整性
生成的文件结构:
bash
openspec/changes/add-task-priority/
├── proposal.md # 变更提案:为什么要做这个功能
├── design.md # 技术设计:怎么做这个功能
├── tasks.md # 任务清单:具体实施步骤
└── specs/ # 规范文件:功能详细描述
└── task-management/spec.md
2️⃣ 知止:验证需求完整性
目标:确保需求规范完整、准确,避免实施过程中发现遗漏
bash
openspec list
openspec validate add-task-priority --strict
openspec show add-task-priority
验证包括:
- ✅ 格式检查:文档格式是否符合 OpenSpec 规范
- 🎯 需求完整性:是否包含了所有必要的场景和边界条件
- 🔗 影响分析:是否正确识别了所有受影响的模块
- ⚠️ 冲突检测:是否与现有功能存在冲突
这一步需要反复修改规范,直到满足您的需求
3️⃣ 而行:按任务清单实施
目标:按照明确的任务清单,实现功能
bash
/openspec:apply 实现优先级功能

代码编写完成之后,启动前后端,网页应用验证 
4️⃣ 有得:归档并沉淀知识
目标:将完成的功能正式化,保存设计决策,积累项目知识
bash
/openspec archive 优先级功能
归档过程包括:
- 📚 规范迁移 :将
changes/中的规范移动到specs/正式规范库 - 🏛️ 知识沉淀:保存完整的设计思路、技术选型、决策过程
- 🧹 项目清理:验证代码质量,确保没有遗留的技术债务
- 📈 影响评估:记录功能上线后的效果和数据
最终结果:
bash
openspec/
├── specs/
│ └── task-management/ # 正式规范库
│ ├── spec.md # 功能需求和场景
├── changes/archive/
│ └── 日期-add-task-priority/ # 历史变更记录
└── project.md # 项目整体状态
Scenarios:适合谁用?
团队协作开发:统一需求描述,减少沟通误解
长期项目维护:新人能快速理解系统设计
复杂功能开发:确保需求完整,避免遗漏
规范驱动团队:标准化流程,稳定质量
Summary:掌握规范驱动开发的成就感
通过学习OpenSpec,您将获得以下宝贵的经验和能力:
🎯 成就感收获
- 告别混乱开发:从"需求模糊→反复修改→代码混乱"的恶性循环,转向"规范先行→谋定后动→清晰可控"的高效模式
- 掌控项目全局:能够系统性地规划和管理复杂功能开发,不再被动应付各种突发状况
- 提升团队协作:建立标准化的开发流程,让每个成员都能高效配合,减少沟通成本
- 积累知识资产:将隐性经验转化为显性规范,打造可持续成长的技术团队
📚 核心技能习得
- 需求工程思维:学会将模糊需求转化为清晰规范的能力
- 系统化开发流程:掌握"规划→验证→实施→归档"的完整开发闭环
- 工具化协作能力:熟练运用OpenSpec工具链提升开发效率
- 知识管理体系:建立项目知识沉淀和传承的有效机制
🚀 实战价值体现
- 立即见效:文章中的Todo App实例可直接用于实际项目
- 可复制推广:方法论适用于各种规模和类型的软件开发项目
- 长期受益:规范驱动开发将成为您技术生涯的重要竞争力
- 团队赋能:能够带动整个团队提升开发质量和效率
掌握OpenSpec,您将从一个被动执行的开发者,成长为能够主动规划和掌控项目的技术专家。这不仅是工具的使用,更是思维方式的升级,是走向成熟软件工程师的重要里程碑。
希望本文对你有所帮助,想了解更多AI实践,关注我的同名公众号:),定期分享AI实战,一起探索AI的无限可能!