OpenSpec 轻量化 SDD 原理拆解 —— 完整整理版

一句话摘要:本教程把讲师木鱼在 6 场直播中现场演示的 OpenSpecSpec-Kit 全流程完整落盘,含 SDD 三大框架对照、四/七命令详解、propose → apply → verify → archive 实操、AI 学习助手全栈 demo、Spec-Kit 宪法五铁律。可直接作为团队引入 SDD 的启动手册。

TL;DR · 5 分钟速览

你的场景 用哪个 学到哪一章就够
完全零基础,先跑起来一个可部署站点 OpenSpec Core 模式 第 2 章
已有项目,想让 AI 帮忙迭代 + 追溯变更 OpenSpec Custom Profile 第 3 章
团队协作 / 复杂项目 / 需求模糊 Spec-Kit 第 5–6 章
想严格约束 Agent 行为(写完必须测试等) Superpowers 后续系列(本文档暂不覆盖)

最短上手命令(30 秒版)

# OpenSpec
npm install -g openspec        # Node.js ≥ 20.19.0
cd your-project && openspec init
# 然后在 Claude Code / Cursor 里说:"propose 一个 change 叫 xxx, 我要..."

# Spec-Kit
uv tool install specify-cli
specify init --here --ai claude-code
# 然后依次: /constitution → /specify → /plan → /tasks → /implement

阅读路径


目录


第 0 章 · 前言:为什么要学 SDD

本章适合:完全没听过 SDD、或曾用 AI 编程但被“聊崩了”的同学 读完能做到:说清楚 SDD 与手写 prompt 的差异,判断自己是否该用

0.1 手写 prompt 踩过的三个坑

讲师木鱼在直播中反复复盘了自己前 4 周带学员手写 prompt 做的四个项目(chatbot / NL-to-SQL / OpenCore 二次开发 / RAG 文档审核)。手写 prompt 有两副面孔:

视角 手写 prompt 的表现
老手 清楚“第一步做什么、怎么选栈、怎么分阶段引导”,能精细控制中间过程
新手 门槛立刻显现:需求都提不清,导致大模型自由发散、越写越乱

一个典型的联调坑(讲师直播 04 大约 12:00 处):

“写好前端后让大模型串后端联调,如果不明确以谁为准约束另一方,大模型会在你不知情的情况下自己给你补一堆’补丁功能’——没有文档、没有痕迹,项目一扩大,随便一个 diff 就把你之前做好的功能覆盖掉。”

三个坑合起来就是“AI 写代码 → 项目失控”的根本原因:

  1. 需求全堆在聊天框——上下文一多,AI 直接失忆
  2. 架构和功能细节转头就忘——改新需求会冲烂老代码
  3. 迭代必须手动维护规范文档——项目一复杂就无法交接、无法复盘

0.2 SDD 的核心价值主张

SDD(Spec-Driven Development,文档驱动开发)的定位一句话:

在 AI 编程时代,代码不再值钱,真正值钱的是那份不断迭代、可追溯的规范文档。

它的三大价值:

主张 展开
降低门槛 你只要能表达业务需求,技术栈 / 架构层由框架和大模型接管
省心省力 提示词不用自己写太多,文档变更全部由框架管理
可复用 产出的 Spec 是持久化产物,可跨项目、跨团队沉淀

第 1 章 · SDD 三大框架全景

本章适合:想搞清楚 OpenSpec / Spec-Kit / Superpowers 到底怎么选 读完能做到:说清楚三者的定位差异,画出它们在开发流程时间线上的分工

1.1 三个框架的定位

三者常被并列讨论,但并非竞争关系,而是互补关系——你甚至可以把三个组合起来用:

框架 一句话定位 严格意义
OpenSpec 轻量文档管理系统(像 Git 一样管理“文档变更”) SDD
Spec-Kit 完整 SDD 脚手架(有 Constitution / Specify / Plan / Task / Implement 全流程) SDD
Superpowers Agent 行为约束层(强制在写完一个模块后必须测试、必须走某些流程) PDD(Prompt-Driven,讲师原话:“严格意义上不属于 SDD 范围”)

1.2 盖房子比喻:思考 / 流程 / 变更

讲师给了一个高度形象化的类比:

框架 类比 侧重
Superpowers 建筑师的思维——先想清楚这栋房子要什么效果 重思考:设计蓝图、方案选型、Agent 行为约束
Spec-Kit 完整的施工文档——章程、设计、分工、任务分配一条龙 重流程:一整套 SDD 宪法机制
OpenSpec 施工过程中的变更管理——像 Git 一样记录“新增/修改/删除” 重变更:只管 Markdown 文档的 diff

1.3 开发流程时间线上的分工

沿着“想法 → 规范文档 → 技术设计 → 任务拆解 → 编码 → 审查 → 归档”这条时间线看:

想法 ──▶ 规范文档 ──▶ 技术设计 ──▶ 任务拆解 ──▶ 编码 ──▶ 审查 ──▶ 归档
                    ├─── OpenSpec ───┤
         ├────────────────────── Spec-Kit ──────────────────────┤
                              ├────── Superpowers ──────┤

1.4 选型决策树

你的情况?
├── 完全没写过项目 / 需求都提不清
│   └── 用 Spec-Kit(它有 clarify 引导式提问)

├── 有一定技术判断力,想快速跑通 MVP
│   └── 用 OpenSpec Core 模式(4 命令搞定)

├── 有一定技术判断力,工程要长期迭代
│   └── 用 OpenSpec Custom Profile(7 命令精细化)

├── 团队协作 / 多人开发 / 强规范要求
│   └── 用 Spec-Kit(Constitution 硬约束)

└── 已经很懂技术,只想让 AI 少乱写
    └── 用 Superpowers(约束 Agent 行为,或干脆手写 prompt)

💡 讲师个人偏好:“我不太喜欢这些框架,更倾向自己手写维护文档规范。Spec-Kit 和 Superpowers 我用得比较多。”(04 直播中回答观众提问)


第 2 章 · OpenSpec 从零入门

本章适合:完全没用过 OpenSpec,想第一次跑通“从 0 到部署” 读完能做到:本地装好 OpenSpec、跑完 init → propose → apply → archive 四命令闭环、部署一个可访问的个人品牌站

2.1 OpenSpec 是什么

一句话:架在你和 AI 编程工具(Claude Code、Cursor、Codex 等)中间的一层“轻量层”,把所有对话中出现的架构、功能、技术栈自动结构化成 Markdown 图纸。

2.2 三大核心特性

特性 含义
无阶段性门控 你可以随时随地新增/修改需求,OpenSpec 会自动维护文档
拥抱迭代(非一次性规划) 不需要在开工前把系统架构一次性想清楚,允许多次迭代甚至反悔
最小仪式感 打通“落盘规范 → 生成代码 → 校验 → 归档”最小闭环,中间环节可省略

额外亮点:专为已有项目设计。如果你想拉取一个开源项目(比如 OpenClaude)二次开发,又不想让上游更新覆盖自己已改的代码——OpenSpec 的文档驱动机制天然适合这种“选择性合并”。

2.3 四命令核心工作流

“像 Git 管理代码一样管理文档的变更”——记住这一张图:

openspec init            ← 项目初始化(选 IDE / 编程工具)
openspec propose <name>  ← 生成提案:落盘 proposal / design / spec / task
openspec apply <name>    ← 让 AI 编程工具按 spec 生成代码
openspec archive <name>  ← 完成后归档到主 spec

对齐的心智模型:

Git 概念 OpenSpec 类比
主分支 main specs/ 目录(当前系统行为的完整规格)
feature 分支 changes/<name>/ 目录(正在开发的功能)
commit propose 生成的提案
merge to main archive 归档到 specs

两种模式(讲师直播原话):

  • Core 模式:propose → apply → archive 三命令(本章讲这个)
  • Custom Profile 模式:七命令精细化(第 3 章讲这个)

两种模式之间可通过 openspec profile preview 生成完整命令文件,再用 openspec profile update 切换。

2.4 项目目录结构

执行完 openspec init 后,会在项目根目录生成:

your-project/
└── openspec/
    ├── changes/          # 活跃变更区(新增/修改/删除的功能提案)
    │   └── <feature>/    # 每个功能一个子目录
    │       ├── proposal.md   # 为什么做 / 做什么 / 不做什么
    │       ├── design.md     # 技术设计
    │       ├── spec.md       # 系统规格(含 Given/When/Then)
    │       └── task.md       # 任务清单
    ├── specs/            # 完整规格库(归档后合并到这里)
    │   └── archive/      # 归档区(默认空)
    └── openspec.yaml     # 全局配置(对标 Claude 的 CLAUDE.md / Cursor 的 .cursorrules)

openspec.yaml最核心的控制文件,每次请求时都会被自动注入。你可以在里面写各种硬约束——具体写什么由你决定。讲师直播中自己项目的示例包含(这是讲师个人示范,不是框架默认):

2.5 Delta 规格系统(New / Modify / Delete)

OpenSpec 用**“像 Git diff 一样精确描述变更”**管理三类修改:

Delta 类型 含义
New 新增需求
Modify 修改已有需求
Delete 删除已有需求

changes/<feature>/ 目录里的每份 spec 都会明确标注属于哪一类,归档时才知道如何合并到主 specs/

2.6 实战:个人品牌站从 0 到部署

目标:用 React + Vite + TypeScript + Tailwind CSS 做个人品牌展示站,通过 GitHub Pages 免费部署。

讲师直播用 Claude Code CLI 一步一步演示(时间戳约 15:00 – 30:00)。以下是可复用的提示词模板:

Step 1 · 环境搭建

# 先创建项目文件夹并进入
mkdir openspec-my-website && cd openspec-my-website
claude              # 打开 Claude Code CLI

在 Claude Code 里发送:

帮我全局安装 openspec 最新版本,地址是 https://github.com/tenshis/openspec,
使用 npm 安装方式。注意,安装完需要确认 Node.js 版本必须大于等于 20.19.0,
如果版本不够请提醒我升级。

Step 2 · 创建前端脚手架

帮我先创建一个 React + Vite + TypeScript 的项目,项目名叫 my-website。
创建完成后,安装配置 Tailwind CSS V4 版本。
确保项目可以正常启动,通过 npm run dev 启动后告诉我启动网址。

讲师本机 5173 端口被占,让 AI 改成 3000 端口后跑通。

Step 3 · 初始化 OpenSpec

⚠️ 这一步必须先退出 Claude Code,回到普通终端

cd my-website
openspec init
# → 弹出编程工具选择框
# → 用空格选中 "Claude Code",回车
# → 生成 openspec/ 目录

Step 4 · Propose 提案

回到 Claude Code CLI 继续对话:

帮我 propose 一个 change,名字叫 add-hero-section。
我要做一个个人品牌站的英雄区,包含头像、标题、简介、社交链接四个部分。
技术栈:React + Vite + TypeScript + Tailwind V4。
不做:不做后台管理,不做用户登录。

Step 5 · Apply

apply add-hero-section 这个提案,生成对应代码。

Step 6 · Archive

我验证过了功能都正常,请 archive add-hero-section。

Step 7 · 部署git push 到 GitHub → 开启 Pages → 拿到访问链接。

打开 openspec 生成的项目文件推荐用 Cursor 或 VS Code(讲师个人习惯)。虽然 Claude Code CLI 里也能全流程操作,但一个可视化 IDE 便于快速检查生成的项目目录。


第 3 章 · OpenSpec 进阶:Custom Profile 七命令

本章适合:跑通了 Core 三命令,但被“AI 一口气自动开发全部内容”坑过 读完能做到:理解 core / custom 两种模式差异、七命令的功能分组、三条不同精细度的路径

3.1 Core 模式的三个短板

propose → apply → archive 跑通没问题,但真上工程会露馅:

短板 具体表现 Custom Profile 的解法
没有逐步审查 apply 一口气把所有 change 全部同步开发,中间生成什么完全不可见 continue 逐步生成每份制品
Spec / 代码不一致 就算 prompt 再详细,AI 实现时仍会跑偏;核心资产(Spec)和实际代码脱节 verify 做三维验证
缺少长期开发中间态 一个复杂 change 干了一半下班,archive 会直接归档“半成品” think 同步中间态但不归档

3.2 七命令按功能的五个分组

讲课版本已从早期更多命令精简到 7 个,按功能分五组:

分组 命令 用途
① 创建组 propose 一键生成 proposal + design + spec + task(Core 模式默认)
explore 只对话、只思考,不落盘
new 只创建目录,不生成任何 markdown 文件
② 实现组 apply 根据 spec 生成代码
③ 验证组 verify 三维验证(正确性 / 完整性 / 一致性)
④ 生命周期组 archive 归档,主 spec 更新
think 只同步 spec 中间态(保持活跃变更状态,可下次继续)
⑤ 引导组 onboot 10–30 分钟官方引导教程(真实代码库带练)

早期版本有 ff(快速前进)、batch archive(批量归档 + 冲突检测)等命令,最新版精简掉或归入其他命令。本教程口径以七命令为准,实际使用请以你安装的 OpenSpec 版本自带 help 为准。

3.3 三条精细化路径:Propose vs New→Continue vs New→FF

想生成一份 change 的四份制品(proposal / design / spec / task),可以选三条不同路径:

路径 A(Core 模式):
    propose  →  一键生成全部 4 份文件

路径 B(精细化,逐步审查):
    new                      # 只建目录
    continue "..."           # 第 1 次: 生成 proposal(可注入自定义描述)
    continue                 # 第 2 次: 生成 design
    continue                 # 第 3 次: 生成 spec
    continue                 # 第 4 次: 生成 task

路径 C(快速前进,早期版本):
    new
    ff "<需求描述>"          # 一次性触发内部 propose 流程

该选哪条路径?

长期开发用 think

批量归档冲突处理(老版本有):多个 change 同时修改相似功能,归档会根据实际代码实现决定最终技术方案回填主 spec —— 也就是“冲突时以代码为准”。

3.4 Explore 的三种提问类型

explore 命令不只是“和大模型对话”,讲师提到它支持三种提问模式(直播 04 约 4:00 处):

类型 场景
决策型 让 AI 对比多个方案(A vs B)并推荐 —— 见第 4.2 节实战
开放型 头脑风暴、需求发散
约束型 在既定约束下探索可能性

具体命令语法请以最新版 openspec explore --help 为准。讲师直播中最常演示的是决策型。


第 4 章 · 全流程实战:AI 学习助手

本章适合:会跑 Core 模式了,想看进阶命令怎么在真项目里工作 读完能做到:用 explore 做方案对比、用 propose 写规范的三段结构、用 new + continue 逐步生成、用 verify 做三维验证

4.1 项目目标与技术栈

项目:前后端全栈的个人 AI 学习助手,包含四大模块:

模块 功能
Dashboard 学习进度总览(完成 / 学习中 / 待学习)+ 每日目标 + 周月趋势
学习计划 创建 / 编辑 / 删除计划 + 里程碑管理
AI 建议 接入大模型 API,根据学习记录做智能推荐
用户认证 注册 / 登录 / 权限管理 + JWT

技术栈(各模块用的栈略有不同):

模块 技术栈
前端 React + Vite + TypeScript + Tailwind CSS V4
后端 API FastAPI
数据库 讲师原话较模糊(见附录 D)——用户认证模块讲师说的是 FastAPI + SQLAlchemy + MySQL,Dashboard 部分讲师提过 SQLite;实际以你的项目需要为准
ORM / 迁移 SQLAlchemy + Alembic
AI 接入 DeepSeek(模型 ID 讲师未明说,见 6.4)

4.2 决策型 Explore:让 AI 给方案 A / B 打分

讲师演示了 explore 命令决策型提问的用法:

你现在要把「个人品牌站」改造成「个人学习助手」。请你比较:

方案 A:保留 Hero 骨架,内部重新布局
方案 B:新建 Dashboard 组件,将品牌站替换

考虑核心因素:
1. 已有代码功能的复用程度
2. 后续添加新功能的便捷性
3. 前端样式的迁移成本

给我推荐方案,强调 ASCII 展示新旧对比。

AI 会回复:

4.3 Propose 的三段结构:Why / What / Not doing

讲师强调 Propose 时必须写明三段,尤其是 not doing

propose 一个 change:将品牌站重构为 Study Dashboard,包含:
  - 左侧导航栏
  - 学习数据统计卡片
  - 每日目标清单
  - AI 建议学习面板
  - 周月趋势图

out of scope(不做):
  - 后端 API(后面单独做)
  - AI 功能
  - 用户认证

要求:使用 mock 数据。

为什么反复强调 not doing —— 大模型发散能力很强,你不明确排除,它会在你不知情的情况下自己“补开发”一堆你根本不需要的东西。

4.4 精细化路径演示:new → 四次 continueapply

以“用户认证”模块为例,讲师完整演示了路径 B。

Step 1 · new 建目录

openspec new user-auth
# → openspec/changes/user-auth/ 只创建了空目录 + 一个骨架 openspec.yaml
# → 不生成任何 markdown 文件

Step 2 · 第一次 continue(生成 proposal)

continue:为 study-dashboard 实现一个 FastAPI 后端 + JWT 的用户认证,需包含:
  - 用户注册和登录(JWT)
  - Token 刷新
  - 用户 Profile(头像、连续学习天数、用户等级)

技术方案:FastAPI + SQLAlchemy + MySQL(数据库迁移用 Alembic)

out of scope(不做):后台管理

→ 生成 proposal.md

Step 3 – 5 · 后续三次 continue

openspec continue   # 第 2 次: 生成 design.md
openspec continue   # 第 3 次: 生成 spec.md(含 Given/When/Then 场景)
openspec continue   # 第 4 次: 生成 task.md(按 phase 拆分)

生成的 spec 里,每个 API 都有场景驱动的描述:

Scenario: 登录成功
  Given: 用户输入正确的邮箱和密码
  When: 提交登录请求
  Then: 返回 access_token 和 refresh_token

Scenario: 未携带 token 获取 profile 成功  # ← 讲师直播原文这么写的
Scenario: Token 过期刷新
...

Step 6 · 校验 + Apply + Archive

请对刚生成的 spec 进行校验,检查:
  1. 单个文件是否超过 2000 词
  2. 所有 API 行为是否使用了 Given/When/Then 模式
  3. 每个 spec 场景是否超过 5 个
     - 若超出:删除历史背景,保留领域特定约束和非标准做法

建议在生成 proposal 之后、apply 之前进行过度设计检查。

校验通过后:

执行 apply user-auth,然后 archive。

4.5 三维验证(正确性 / 完整性 / 一致性)

Verify 的三个维度:

维度 检查什么
正确性 生成的代码功能是否与 spec 场景描述一致
完整性 spec 定义的所有场景是否都有对应代码实现
一致性 命名、API 签名、数据结构在 spec 与代码间是否统一

这一步为什么在 OpenSpec 里比较简陋:三维验证的检查项必须由你在 prompt 里明确列出。如果你没写“检查是否走 Given/When/Then”,它就不会主动发现。

讲师提到的实用做法:把项目的校验规则提炼成一个“skills 提示词模板”或 skills 文件,每次生成新模块时都调用一次做前置校验。

4.6 最终效果

Dashboard 页面产出(讲师直播 04 约 28:00 处截图):

┌──────────┬─────────────────────────────────────┐
│  概览    │                                     │
│  学习目标 │   [ 学习数据统计卡片 ]              │
│  AI建议  │                                     │
│  趋势    │   学习任务目标                      │
│          │                                     │
│  [ user] │   AI 学习建议                       │
│          │                                     │
│          │   [ 周和月趋势图 ]                  │
└──────────┴─────────────────────────────────────┘

用户认证走通后能完成注册 → 登录 → 拿到 Dashboard 访问权限的完整闭环。


第 5 章 · OpenSpec 三大短板 + Spec-Kit 全景架构

本章适合:会用 OpenSpec 了,遇到复杂项目或多人协作场景想升级 读完能做到:说清楚 OpenSpec 的结构性短板、Spec-Kit 五大子系统各是什么、五命令 MVP 和九命令全流程的差异

5.1 OpenSpec 的三大短板

学完 OpenSpec 反过来看,它有三个结构性问题(不是使用问题,而是设计定位的限制):

短板 含义 Spec-Kit 的解法
Greenfield 困难 从 0 到 1 搭项目难:explore 阶段没有引导式提问、没有内置流程辅助你建立认知;更适合 Brownfield(一到 N) Constitution + Clarify 组合:先立宪法约束边界,再用 Clarify 主动引导发问
无 Clarify 机制 需求模糊或技术不理解时全靠大模型交付,返工概率高 Clarify 命令:解析文档后主动发问,填充所有奇异信息、发掘盲点
Verify 依赖人工经验 校验维度必须自己指定,缺经验会漏 内置完整 Verify workflow:一条命令跑完一致性校验

5.2 Spec-Kit 的核心工作流(7 步)

Spec-Kit 是可插拔的完整 SDD 脚手架,社区生态广泛。核心流程:

①  Constitution     ← 项目宪法(对标 OpenSpec 的 openspec.yaml)

②  Specify          ← 写需求规格(对标 OpenSpec 的 propose)

③  Clarify(可跳过) ← 引导式提问、盲点发现

④  Plan             ← 生成技术方案(含技术栈选型、模块拆分)

⑤  Tasks            ← 按 Phase 拆分子任务

⑥  Analyze(可跳过) ← 一致性分析

⑦  Implement        ← 执行代码

关键差异 vs OpenSpec:Spec-Kit 每一步之间默认停下等人工审核(Gate)——推崇“每一步产出必须经过人类确认”,因为 web coding 本身是黑盒,Spec 需要人来掌控。

5.3 五大内置子系统全景

Spec-Kit 内部由五个子系统协作:

                   用户命令行

              ┌────────────────┐
              │  CLI 主体(调度)│  ← 唯一面向用户的入口
              └────────────────┘
                ↓            ↓
        (workflow 引擎)   (手动 workflow)
              ↓                 ↓
      ┌──────────────────────────────┐
      │      Agent 注册中心           │
      │  ↓ 集成 Claude Code / Codex   │
      │  ↓ Cursor / Windsurf / etc.   │
      └──────────────────────────────┘
              ↑                 ↑
       Extension 系统      Preset 系统
       (插件市场:加法)   (主题包:替换)
子系统 类比 作用
CLI 主体 谷歌浏览器的地址栏 唯一入口,负责调度
Agent 注册中心 浏览器和不同网页的握手层 适配当前 IDE 的 skills / commands / rules 文件(Claude → .claude/skills、Cursor → .cursor/rules
Extension 系统 浏览器插件市场(加法) 通过 hooks 机制加新命令(如 Git 分支管理、archive 归档)
Preset 系统 浏览器主题包(替换) 覆盖内置 skills(比如换个更精简的 propose skill)
Workflow 引擎 自动化脚本 0.6.1 才加入,可一键跑完 SDD 全流程;社区仍不成熟,主流用手动模式

5.4 五命令 MVP vs 九命令全流程

层级 命令数 适用场景
最小 MVP(Lean) 5 命令:constitutionspecifyplantasksimplement 快速原型、需求清晰、单人开发
全流程 9 命令:加上 clarify / analyze / 插件命令 / archive 多人协作、需求模糊、复杂项目

注意默认行为:讲师直播中提到 Spec-Kit 默认是全命令模式(和 OpenSpec 相反)。要切到 Lean 精简模式需要手动切换(见 5.5)。

5.5 Preset(Lean 精简)与 Extension 生态

切换到 Lean 精简模式

specify preset add lean

前后对比(讲师直播实测):

Skill 文件 全命令模式 Lean 模式 压缩比
plan.skill.md 156 行 28 行 -82%
specify.skill.md 330 行 32 行 -90%

Preset 抽取每个 skill 的精华、大幅压缩输入 token,适合简单任务不需要大量指令的场景。

Extension 搜索与安装

specify extension search      # 搜索社区插件
specify preset search         # 搜索主题包

装了心仪的插件后,直接告诉 AI 编程工具“帮我把 XX 装到本地”就行。OpenSpec 有但 Spec-Kit 缺失的 archive 命令,可以通过插件市场补齐。

项目初始化

# 先退出 Claude Code / Cursor 等编程工具,回到普通终端
specify init --here --ai claude-code
# → 生成两个目录:.claude/  和  .specify/
# → .specify/memory/constitution.md 是空宪法模板,需要你填内容

第 6 章 · Spec-Kit 宪法怎么写

本章适合:已经初始化了 Spec-Kit,卡在 constitution.md 不知道写什么 读完能做到:知道好宪法的五铁律六原则,手上有一份可以直接改的 V1.0 模板

6.1 Constitution 是给 AI 看的,不是给人看的

划重点:

Constitution 是写给 AI 在执行代码时看的约束,不是给人看的产品文档。

因此:术语要精确、边界要清楚、大白话要转成专业用词。如果你不懂专业术语,先和大模型多聊几轮,让它把你的表达“转译”成 AI 能识别的技术语言。

宪法通常写这四类内容:

  1. AI 行为边界(能做什么 / 不能做什么)
  2. 禁止项(把红线写死,避免 AI 发散)
  3. 纠偏落到技术细节(每一步可能踩的坑用技术语言标出来)
  4. 代码复用策略(AI 天然倾向新建函数/类,不复用旧代码 —— 必须显式强制)

6.2 好宪法 vs 坏宪法:五条铁律

讲师提炼的五条铁律(06 直播 25:00–28:00 处,为便于对照编者编号):

# 好宪法 坏宪法
1 明确说“我不是什么”(划定项目范围) 模糊、模棱两可
2 可量化、可验证的规范 没有禁止项,让 AI 自由发挥
3 每条约束附带原因(Why 内容过长(讲师建议 ≤ 500 字,复杂项目 ≤ 2000 字,过长反而遗漏)
4 明确标注技术栈版本号(避免语法/接口兼容差异)
5 核心标记:明确列出让 AI 做什么 / 不做什么

6.3 写作六原则

原则 展开
禁止项 > 允许项 “不允许 XX” 效果比 “允许 XX” 更好
具体 > 抽象 少用形容词,多用可验证的规则
说明原因(Why) 每条硬约束下面加一句“为什么这样约定”
控制长度 ≤ 500 字(简单项目),≤ 2000 字(复杂项目),过长效果反而下降
代码复用策略必写 显式要求“生成新代码前先看是否可复用”
专业术语 > 大白话 不清楚就多轮沟通让 AI 转译

6.4 实战:AI 写作助手宪法 V1.0

注意:以下模板是编者根据讲师直播中的口头描述整合的完整 Markdown(讲师直播中是分段说明约束、然后让 Claude Code 一次性生成),不是从视频画面 OCR 出的原文。可作为开箱即用的模板参考,实际请根据自己项目调整。

讲师直播中给出的完整需求 prompt(06 大约 31:00 处,逐字保留):

帮我先去写一份 constitution,这个项目就是我们的这个 AI 的写作助手。
先说清楚我们要做什么、不做什么。我们做的是一个纯前端的文本运算工具,
希望用户能够贴一段文字,选一个场景,然后我们使用这个 DeepSeek
可以去返回润色后的结果。只有这么一件事,它不是一个 CMS,也不是一个
协作的平台,不处理敏感数据,也不需要注册登录。

紧接着讲师逐条列出的硬约束(06 大约 32:00–34:00 处):

由 AI 生成、编者整合的完整模板

# AI Writer Constitution V1.0

## 项目定位
- 单页 SPA,纯前端文本润色工具
- 用户贴一段文字 → 选一个场景 → 用 DeepSeek 返回润色结果
- 不是 CMS、不是协作平台、不处理敏感数据、不需要注册登录

## 技术栈(硬约束,不可商量)
- React 19(不允许其他版本)
- Vite 构建
- 样式使用 Tailwind CSS V4
  Why: Tailwind 原子类已覆盖所需样式,禁止引入其他 CSS 框架/CSS Modules

## 代码复用原则
- 同一 UI 模式禁止出现两次;若出现,必须抽象为组件
- 所有 API 走统一目录规范,禁止直接 fetch
- 场景 prompt 模板统一放在 src/prompts/scenarios.ts

## 项目结构
- 不引入 React Router(项目体量不需要)
- 场景 map 配置化,一个组件一个文件

## 质量约束
- TypeScript strict 模式
- 每个组件一个文件
- 场景配置走 map,禁止 if-else 分支

## AI 接口
- DeepSeek 固定模型(具体模型 ID 待补充)
- 开发环境需处理跨域(Vite proxy)
- API Key 放在 .env.local,禁止硬编码

## 版本
- V1.0(2026-07-01)
- 描述语言:中文

这份宪法有效的五个理由(对照 6.2 五铁律):

  1. ✅ 前 4 行就把“不是什么”划完了(铁律 1)
  2. ✅ 每条硬约束都写了 Why(铁律 3)
  3. ✅ 明确列出版本号:React 19、Tailwind V4(铁律 4)
  4. ✅ 有显式的“代码复用原则”专章(六原则之一)
  5. ✅ 全文 200+ 字,非常精简(铁律 3 长度要求)

产出后:AI 会把内容写入 .specify/memory/constitution.md,后续所有 specify / plan / tasks / implement 命令都会自动注入这份宪法作为硬约束。


附录 A · 命令速查表

OpenSpec 命令

命令 用途 分组
openspec init 项目初始化(选 IDE) 环境
openspec propose <name> 一键生成 proposal + design + spec + task 创建
openspec explore 只对话不落盘(支持决策型 / 开放型 / 约束型) 创建
openspec new <name> 只建目录 创建(精细化)
openspec continue [msg] 逐步生成下一份制品(proposal → design → spec → task 顺序) 创建(精细化)
openspec apply <name> 根据 spec 生成代码 实现
openspec verify <name> 三维验证 验证
openspec archive <name> 归档到主 spec 生命周期
openspec think <name> 同步中间态但不归档 生命周期
openspec onboot 官方 10–30 分钟引导教程 引导
openspec profile preview 预览完整命令文件 模式切换
openspec profile update 切换 core / custom 模式 模式切换

Spec-Kit 命令(默认全命令模式)

命令 用途 是否 MVP 必需
specify init --here --ai <tool> 项目初始化
/constitution 生成 / 编辑项目宪法
/specify 写需求规格
/clarify 引导式提问、盲点发现 可跳过
/plan 生成技术方案
/tasks 拆分子任务
/analyze 一致性分析 可跳过
/implement 执行代码
specify extension search 搜索插件市场
specify preset search 搜索主题包
specify preset add lean 切换到 Lean 精简模式

附录 B · OpenSpec ↔ Spec-Kit 概念对照

概念 OpenSpec Spec-Kit
项目宪法 openspec.yaml .specify/memory/constitution.md
需求提案 propose /specify
技术方案 内嵌在 propose 生成的 design.md /plan 单独一步
任务拆分 内嵌在 propose 生成的 task.md /tasks 单独一步
代码执行 apply /implement
一致性校验 verify + 用户自定义规则 /analyze(内置 workflow)
盲点发现 ❌(需自己 explore /clarify
归档 archive(内置) ❌(需装 archive 扩展)
中间态 think Git 分支天然管理
默认模式 Core(3 命令) 全命令(9 命令)
精简模式切换 profile update preset add lean
插件生态 无独立市场 Extension / Preset 双市场

附录 C · 术语表

术语 释义
SDD Spec-Driven Development,文档驱动开发
PDD Prompt-Driven Development,提示驱动开发(讲师认为 Superpowers 属于此类)
Vibe Coding 与 AI 边聊边写的编程方式(讲师全程称为 “web coding” 或 “lab coding”)
Greenfield 从 0 到 1 全新项目
Brownfield 已有代码基础上迭代(1 到 N)
Delta 规格 OpenSpec 用于精确描述“新增/修改/删除”的三态变更机制
Given / When / Then 场景驱动的 API 行为规范格式,Spec-Kit 和 OpenSpec 都强制推荐
Preset Spec-Kit 中“主题包”式的 skill 覆盖机制(替换)
Extension Spec-Kit 中“插件市场”式的新增能力机制(加法)
Gate(门控) Spec-Kit 每一步中间的“人工审核检查点”
Constitution Spec-Kit 的项目宪法文件,AI 执行任何命令时必读的硬约束
Lean 模式 Spec-Kit 的精简 Preset,把每个 skill 压缩 80%+

附录 D · 编者补注 / STT 口误校正

以下条目为讲师直播 STT 转录稿中的口误或不明处,整理时按最合理猜测处理。⚠️ 标记为“待确认”的项,实际以视频画面为准

# 讲师原话(STT 转录) 编者理解 置信度
1 “circle CT” / “SQL CT” SQLite(Dashboard 部分),或 MySQL(用户认证部分讲师明确说 MYC = MySQL) 需看视频画面
2 “Spark T / Spec T / SPKT / spy KET / spy cit” Spec-Kit
3 “Colin / Klein / CLI 主体” CLI 主体(Spec-Kit 五大子系统之一)
4 “IQ5 / RQ / Achieve” archive 命令
5 “SDG / SDD / 速度” SDD
6 “web coding / lab coding” Vibe Coding
7 “Class / Cloud Code / Colour Code” Claude Code
8 “PORPOICE / Purpose / Propose” propose 命令
9 “Con Fig e mail / Config yaml” openspec.yaml
10 “React 加 wait / React 加 weight” React + Vite
11 “television / Tailwind” Tailwind CSS
12 “Coro / Coreo / CORO” 可能是 ClineRoo Code 待确认
13 “Klein / Cline” Cline
14 “反重力 / Antigravity” Google Antigravity
15 “trees / Trae” Trae(字节的 AI 编程工具)
16 “curse / cursor” Cursor
17 “code x / Codex” Codex
18 “windos f / windows f” Windsurf
19 “GWT / JWT” JWT
20 “MYC / MySQL” MySQL
21 “DC 固定用这个模型” DeepSeek 某具体模型(模型 ID 讲师未明说) 待确认
22 “moon / lawn” 未出现在本视频(这是 Theo Browne 视频的口误)

附录 E · 讲师个人观点摘录

以下是讲师木鱼在直播中透露的主观偏好,作为对客观教程的补充。不必照单全收,做参考


系列后续:本文档整理自 SDD 系列前两个框架 —— OpenSpec 与 Spec-Kit。第三个框架 Superpowers(Agent 行为约束)在后续直播中展开。

反馈 / 修订:如发现术语错误或步骤缺失,欢迎标注对应“发言人 mm:ss”时间戳,便于回视频原文核对。


← 返回 AI 编程