Skip to content

OpenSpec:规范驱动开发实践分享

开篇:传统做法的痛点

过去,我们的需求、代码、文档分散在各处:

  • ❌ 需求在多份文档中重复(proposal、design、code comments)
  • ❌ 哪个是最新的规范?开发者常常困惑
  • ❌ 进度靠人工跟踪,tasks.md 容易过期
  • ❌ 功能上线后,新的需求何时合并入规范?谁负责?
  • ❌ 为什么这样设计的决策,时间久了就丢失了

结果:每次都要从头梳理,规范总是不一致,知识难以积累。


OpenSpec 的核心理念

三阶段工作流

Stage 1: 设计提案          Stage 2: 实施代码           Stage 3: 自动更新规范

proposal.md      CODE    specs/ 自动合并
+ design.md                                          + archive/ 保存历史
+ tasks.md
+ spec delta

关键概念:Spec is Truth

 specs/                  当前的唯一规范源
   ├─ resource-management/spec.md  所有已完成功能的规范
   └─ code-quality/spec.md         编码标准

📝 changes/                正在提案阶段
   └─ poster-resourcemanv2-migration/
      ├─ proposal.md      为什么要做?
      ├─ design.md        怎么设计?
      ├─ tasks.md         分成几个任务?
      └─ specs/           新需求的规范 delta

📚 archive/                已完成,历史记录
   └─ 2025-10-29-poster-resourcemanv2-migration/
      └─ 完整的决策和实施过程

真实案例:poster-resourcemanv2-migration

问题背景

海报资源下载存在的问题:

  1. 架构分散:独立的下载逻辑,无法优先级控制
  2. 进度不清:无法展示详细的下载进度
  3. 事件缺失:用回调函数,违反依赖倒置原则
  4. 难以扩展:添加新海报类型需要修改核心代码

方案设计(Stage 1)

创建提案

bash
/openspec:proposal

proposal.md 明确:

  • 目标:统一到 ResourceManV2,获得 5 大优势
  • 范围:创建 PosterDownloader,集成现有系统

tasks.md 分解为:

  • Phase 1:基础设施 (4 tasks, 3-4 小时) ✅
  • Phase 2:核心逻辑 (2 tasks, 2-3 小时) ✅
  • Phase 3:集成 (2 tasks, 1-2 小时) ✅
  • Phase 4:优化完善 (2 tasks, 1-2 小时) ✅

spec delta 定义:

markdown
## ADDED Requirements

### Requirement: Poster Resource Download Support
The system SHALL support downloading poster resources through
ResourceManV2 with priority-based queuing.

#### Scenario: Featured posters prioritize
- WHEN poster type is featured
- THEN priority increases by 30 points

实施过程(Stage 2)

应用提案

bash
/openspec:apply

开发者按 tasks.md 逐步实现:

  • Task 1.1: 调查现有实现 ✅ (0.5h)
  • Task 1.2: 创建 PosterDownloader 类 ✅ (1h)
  • Task 1.3: 实现优先级排序 ✅ (1h)
  • Task 2.1: 实现下载方法 ✅ (1.5h)
  • Task 2.2: 事件系统集成 ✅ (1h)
  • Task 3.1: ResourceManV2 扩展 ✅ (0.5h)
  • ...所有任务完成

自动归档(Stage 3)

bash
openspec archive poster-resourcemanv2-migration --yes

自动执行的操作

  1. ✅ 验证 tasks.md 所有任务标记完成
  2. ✅ 读取 spec delta(5 个新需求)
  3. ✅ 自动合并到 specs/resource-management/spec.md
  4. ✅ 移动到 archive/2025-10-29-poster-resourcemanv2-migration/
  5. ✅ 新规范立即生效

关键收益

维度收益
可维护性规范永远最新,不需要手动维护
可追踪性每个需求、每个 task、每个决策都有记录
可教学性新人可以通过 specs/ 快速了解系统
可延续性决策过程被保留,避免重复思考
自动化从提案到规范更新,自动化程度最高

核心价值

✅ 规范自动演进,不再手动维护

从 poster 案例看:

  • 不需要"功能完成后手动更新需求文档"
  • delta 自动合并,规范在每次归档时自动升级
  • 永远不会"规范落后于代码"

✅ 决策过程被保留,不再丢失

  • 为什么做?→ proposal.md(背景 + 问题)
  • 怎么设计?→ design.md(架构决策 + 权衡)
  • 如何实施?→ tasks.md + code(分步骤完成)
  • 最终规范是什么?→ specs/(自动合并后的真理)

✅ 每个 task 都可追踪,进度透明

  • Phase 1:基础设施 ✅ 完成
  • Phase 2:核心逻辑 ✅ 完成
  • Phase 3:集成 ✅ 完成
  • Phase 4:优化 ✅ 完成

不再有"什么时候能完成?"的模糊回答。

Released under the MIT License.