https://www.youtube.com/watch?v=9MImID9o8MQ
整文标题:OpenSpec 入门指南:用规范驱动开发(SDD)高效构建 AI 应用
第一部分:引言与背景介绍 (开始时间 0% - 10%)
-
课程目标与适用范围
- 这是一个面向初学者的完整课程,旨在教授如何使用“规范驱动开发”(SDD),特别是结合 OpenSpec 工具。
- 无论你正在构建什么类型的软件(网站、后端、移动应用),这套方法论都同样适用。
-
学习前提条件
- 必备条件:
- 需要一个 AI 代理工具(Agent Harness),例如 Claude Code、Codex、Copilot 等。
- 需要一个终端(Terminal),因为通常在这些工具中运行代理任务。
- 推荐条件:
- 拥有一个集成开发环境(IDE)或代码编辑器,如 Android Studio、VS Code 等。
- 必备条件:
-
主讲人介绍
- 主讲人是 Philip,一名谷歌开发者专家(Google Developer Expert)。
- 他的目标是帮助开发者利用 AI 和代理,通过稳定的、可扩展的基础架构来构建更好的软件。
第二部分:规范驱动开发(SDD)解决的问题 (开始时间 10% - 25%)
-
核心问题:AI 的上下文窗口限制
- AI 模型有一个“上下文窗口”,即单次会话中能处理的 Token 数量是有限的(例如,Fable 模型有 100 万个 Token)。
- 随着软件规模变大,工作必须被分割成更小的块(Chunk),并在多个独立的 AI 会话中完成。例如,会话 1 实现功能 A,会话 2 实现功能 B。
-
新会话的“失忆”问题
- 当你开启一个新的 AI 会话时,它完全不知道之前会话的任何信息。
- 然而,一个项目中存在大量始终相关的“上下文”,例如源代码文件、需求、设计决策和架构决策。
-
解决方案:上下文工程(Context Engineering)
- “上下文工程”是指管理和喂送给 AI 会话所需上下文的过程。
- 规范驱动开发(SDD) 本质上是一种上下文工程的形式。它将软件的“规范”(Specification)作为单一事实来源(Single Source of Truth)。
-
SDD 的工作机制
- 为了在不同会话间共享上下文,可以将一个会话的输出写入文件。在 AI 领域,Markdown (.md) 文件是标准格式,因为它易于 AI 和人类阅读。
- 另一个新会话可以直接读取这些 Markdown 文件中的上下文,无需重新指定。
-
SDD 的核心步骤
- 第一步:思考与规划:在开始任何工作或功能之前,仔细思考要构建什么。
- 第二步:撰写规范文档:不要立即执行计划,而是先将计划转化为详细的设计文档(规范文档)。内容包括:构建目标、原因、目标用户、粗略的实现计划、任务列表及执行顺序。
-
规范文档的作用
- 它是一个“活文档”(Living Document),存放在项目的独立文件夹中。
- 未来的团队成员也可以阅读它来理解某个功能的用途。
- 在每次新的 AI 会话中,都可以将这个规范文档喂给 AI,让它知道当前正在构建什么。
第三部分:主流 SDD 框架对比与 OpenSpec 的优势 (开始时间 25% - 45%)
-
SDD 框架的必要性
- 虽然 SDD 没有一个固定的形式,但人们通常会遵循一个框架。框架定义了一系列步骤:头脑风暴 -> 创建规范 -> 实施规范。
-
三大主流 SDD 框架介绍
- GitHub SpecIt:由微软维护,在 GitHub 上有 13.9 万颗星,非常流行。但主讲人不喜欢它,认为其过于冗长(Verbose)。生成的 MD 文件会非常长且多,从头脑风暴到生成规范的路径也很长,审查起来费时费力。主讲人的经验是,不那么详细的规范反而能得到更好的输出。
- Cairo:这是一个独立的 IDE(VS Code 的分支),将 SDD 功能内置其中。优点是开箱即用,缺点是锁定在特定工具中,灵活性差。对于移动端开发(如 Android/iOS),无法替代 Android Studio 或 Xcode 这类重型 IDE。
- OpenSpec:主讲人认为它是赢家。
-
OpenSpec 的核心优势
- 轻量级(Lightweight):非常快速,不需要执行一大堆命令才能得到规范。
- 灵活(Flexible):可以自定义规范模板,控制详细程度。不像其他框架那样固化流程。
- 适合棕地开发(Brownfield Work):特别适合在已有代码库上工作。
- 增量规范(Delta Specs):这是 OpenSpec 独有的特性。当需求发生变化时,只记录新旧规范之间的差异,而不是重写整个文档。这是一种高效的变更管理方式。
第四部分:OpenSpec 的安装与核心工作流详解 (开始时间 45% - 85%)
-
安装 OpenSpec
- OpenSpec 是一个命令行工具(CLI)。可以通过 npm 或 brew(MacOS)命令进行全局安装。
-
初始化项目
- 在项目的根目录下的终端中(非 AI 代理会话内),运行
openspec init命令。 - 选择你想要集成的 AI 代理工具(如 Claude Code)。
- 初始化后,项目结构中会生成一系列命令和技能(Skills)。“技能”本质上是命令的自然语言版本。
- 在项目的根目录下的终端中(非 AI 代理会话内),运行
-
四大核心技能(Commands/Skills)
-
openspec explore(探索):- 目的:正式起草规范前的头脑风暴阶段。
- 过程:与 AI 代理进入一个对话循环,探讨你要构建什么。AI 会提出澄清性问题,帮助你完善想法。此阶段不会生成任何规范文件。
- 示例:描述要构建一个待办事项 App,AI 会就 iOS 支持、创建方式、数据模型、保存逻辑、导航库等问题提问。
-
openspec propose(提议):- 目的:基于探索阶段的共识,生成实际的规范文件(Markdown 文档)。
- 产出物:在项目
openspec/changes/文件夹下生成一系列文件。-
specs/文件夹:包含多个“能力(Capability)”子文件夹,每个能力对应功能的一个切片(如“App Shell”、“To-Do Detail Screen”)。每个能力都有一个spec.md文件,描述“做什么”和“为什么做”。 -
proposal.md文件:是整个功能的摘要,说明为什么要做这个改动、改了什么,并链接到各个能力的 spec 文件。它还记录了“新增能力”和“修改能力”。 -
design.md文件:侧重于“怎么做”,包含技术实现细节,如模块名、数据库 Schema、伪代码、关键决策等。 -
tasks.md文件:一个按步骤分解的任务清单,AI 代理将按照这个清单逐步实施。任务可以被勾选标记为已完成。
-
-
openspec apply(应用):- 目的:让 AI 代理根据
tasks.md文件中的任务清单,开始编写代码。 - 过程:在一个全新的 AI 会话中执行此命令。新会话不记得之前的对话,但可以读取项目中的规范文件。这就是上下文工程的核心。
- 效果:如果规范文件做得足够好,代码实施过程会非常顺利。
- 目的:让 AI 代理根据
-
openspec archive(归档):- 目的:当一个功能被完全实现后,将其规范文件归档,表示该功能已完成。
-
-
重要配置文件:
openspec-config.yaml- 作用类似于 AI 代理的“系统提示词”(System Prompt),但专门用于 OpenSpec 流程。
- 可以在此文件中定义项目级别的通用规则,例如技术栈、库、编码风格、领域知识等。
- 如果配置得当,在
explore阶段,AI 就不会再问那些已经定义好的通用问题。
-
工作流演示(以构建待办事项 App 为例)
- Explore 阶段:描述 App 需求,AI 提出 8 个问题(如是否支持 iOS、创建方式、数据模型字段、保存逻辑、导航库等),用户逐一回答。过程中可能发现原有想法不够好而进行调整(例如将自动保存改为手动保存按钮)。
- Propose 阶段:AI 根据讨论结果,自动生成了
proposal.md、design.md、tasks.md以及多个spec.md文件。 - Apply 阶段:清除旧会话上下文,在新会话中执行
/opsx apply。AI 读取规范文件,开始执行tasks.md中的 43 个任务,最终成功构建出一个功能完整的跨平台(iOS & Android)待办事项 App。
第五部分:总结与展望 (开始时间 85% - 100%)
-
回顾与肯定
- 再次强调,对于复杂的需求,花时间制定规范的收益巨大。
- 展示最终构建出的 App 效果:创建、编辑、删除、标记完成、筛选等功能均正常工作。
-
OpenSpec 的价值重申
- 它是一个超级灵活的框架,适用于每个项目,并能集成到自定义工作流中。
-
进阶方向
- 仅有 OpenSpec 还不够,一个完善的 AI 工作流还应包括测试用例(单元测试、端到端测试)、验证机制等,形成一个真正的系统。
- 随着项目变大和交付速度变快,不能依赖逐行的人工审查。
-
结语与号召
- OpenSpec 是进入 AI 代理开发的绝佳起点,解决了上下文工程的大部分难题。
- 鼓励观众关注频道,查看更多相关视频和资源(如指导计划)。
Top comments (0)