1 篇文章带有标签 “openspec”

规约驱动开发工具 OpenSpec 的实践总结:以 elder-friendly-calculator 为例

HTML 版本

1. OpenSpec 是什么

OpenSpec 是一套规约驱动开发(Spec-Driven Development)的工作流工具。它要解决的问题是:在 AI 智能体参与编码的场景下,如何让"想清楚 → 写计划 → 写代码"这三个动作不互相污染,并且让代码之外还有一份可追溯的事实来源。

1.1 两种产物

产物 位置 回答的问题 生命周期
specs(规格) openspec/specs/<capability>/spec.md 系统现在是什么行为(已交付、已归档的能力) 长期存在,随每次归档增量演进
changes(变更) openspec/changes/<change-name>/ 这一次要改什么(尚未实现的计划) 完成后整体移入 changes/archive/

一句话:specs/ 是唯一事实来源,changes/ 是待实现的增量,archive/ 是它是如何达成的历史。

关键差别在于 specs/ 是能力(capability)维度、changes/ 是变更维度。同一个能力会被多次变更反复修改,每次修改只写"增量"(delta),不重写整份规格。

1.2 五步循环

每个变更都走同一条闭环,本项目严格落在这条闭环上:

flowchart LR
    E["1 · Explore<br/>和智能体一起想清楚"] --> P["2 · Propose<br/>Agent 起草方案(不写代码)"]
    P --> R["3 · Review<br/>你修正方案"]
    R --> A["4 · Apply<br/>Agent 逐项构建"]
    A --> AR["5 · Archive<br/>增量写入 specs 并归档"]
    AR -. "下一次变更" .-> E

若渲染环境不支持 Mermaid,可读作线性流程:Explore → Propose → Rev