OpenSpec: AI 编程规范工具

发布时间: 更新时间: 总字数:1562 阅读时间:4m 作者: IP上海 分享 网址

OpenSpec 在目前的开发语境中通常指代 Fission-AI 推出的一款面向 AI 编程助手(如 Cursor、Claude Code、GitHub Copilot)的规范驱动开发(Spec-Driven Development, SDD)工具

什么是 OpenSpec?

OpenSpec 是一个轻量级的开源命令行工具(CLI)和工作流规范。它充当了你(人类)AI 编程助手之间的翻译官契约。 OpenSpec的核心目的是解决 AI 编程时随意发挥听不懂人话的问题,通过强制先写规格说明书(Spec)再写代码,让 AI 的输出更加可控、精准。

  • 痛点:通常我们直接让 AI “加一个登录功能”,AI 可能会写出不符合项目结构、遗漏边界条件的代码(所谓的 “Vibe Coding”)。
  • 解决方案:OpenSpec 强制要求在写代码前,先生成一份结构化的提案(Proposal)任务清单(Tasks)。你确认无误后,AI 才会根据这份契约去写代码。
  • 适用工具:Cursor, Claude Code, Windsurf, GitHub Copilot 等。

核心工作流 (The Workflow)

OpenSpec 的使用主要围绕三个核心命令(或步骤)进行,形成闭环:

  1. Proposal (提案):告诉 AI 你想做什么,让它先写计划。
  2. Apply (执行):让 AI 根据计划写代码。
  3. Archive (归档):功能完成后,将这次变更的规格归档,成为项目永久文档的一部分。

如何安装和初始化

安装

OpenSpec 是一个 Node.js 工具,可以直接通过 npm 安装:

npm install -g @fission-ai/openspec

初始化项目

在你的项目根目录下运行:

openspec init

这会生成一个 .openspec/openspec/ 目录,里面包含:

  • project.md:项目的全局上下文(技术栈、代码规范、架构原则)。这是最重要的文件,你需要根据项目实际情况修改它,AI 会依据它来工作。
  • AGENTS.md:给 AI 看的指令集,教它如何遵守 OpenSpec 的规则。

具体使用步骤演示

假设你要在一个 React 项目中添加黑暗模式

第一步:提出提案 (Proposal)

在 Cursor 或 Claude Code 的对话框中,输入类似以下的指令(如果你配置了 Slash Command):

“我想添加黑暗模式支持,请创建一个 OpenSpec proposal。”

或者在终端运行 openspec proposal

AI 会生成以下 Markdown 文件(通常在 openspec/changes/ 目录下):

  • proposal.md: 描述为什么要改,改什么。
  • design.md: 详细的设计思路(比如使用 Context API 还是 CSS 变量)。
  • tasks.md: 一步步的执行清单(TODO List)。
  • specs/: 具体的规格变更(新增了什么需求,修改了什么逻辑)。

你的工作:阅读这些文件。如果 AI 的设计不对(比如你想用 Tailwind 但它设计的是原生 CSS),现在就让它改文档,而不是等它写完代码再改。

第二步:执行代码 (Apply)

当你对 Proposal 满意后,告诉 AI:

“Proposal 看起来不错,请执行 Apply。”

或者运行相关命令。AI 会读取 tasks.md,一项一项地去修改项目源码。因为它已经有了详细的设计文档,写出的代码通常准确率极高。

第三步:归档 (Archive)

代码写完并通过测试后,你需要告诉 AI:

“功能已完成,请 Archive。”

OpenSpec 会将这次变更的规格(Spec)合并到项目的主规格文档中,并清空临时的变更文件夹。这样,你的项目不仅有了代码,还有了一份始终与代码同步的最新技术文档。

示例目录

openspec/
├── specs/
│   └── auth/
│       └── spec.md           # 当前认证规范(如果存在)
└── changes/
    └── add-2fa/              # AI创建整个结构
        ├── proposal.md       # 为什么和什么变更
        ├── tasks.md          # 实施清单
        ├── design.md         # 技术决策(可选)
        └── specs/
            └── auth/
                └── spec.md   # 显示添加内容的增量

为什么要用它?

  1. 不再抽卡:AI 不会随机生成代码,而是严格遵循设计文档。
  2. 上下文记忆:传统的 AI 聊天记录一多就会遗忘之前的要求。OpenSpec 把要求固化在 Markdown 文件里,AI 随时可以查阅。
  3. 自动维护文档:开发过程就是写文档的过程,项目永远有一份最新的 project.md 和规格说明。
  4. 无 API Key:它主要是一个本地的规范和文件结构,不依赖特定的昂贵云服务(使用你原本的 AI 订阅即可)。

总结

如果你经常觉得 AI 编程助手写出来的代码不能用或者逻辑混乱OpenSpec 就是为了解决这个问题而生的。它用**先思考,后行动**的策略,强迫 AI 变得更加严谨和工程化。

参考

  1. https://github.com/Fission-AI/OpenSpec
  2. https://github.com/studyzy/OpenSpec-cn
本文总阅读量 次 本站总访问量 次 本站总访客数
Home Archives Categories Tags Statistics