当前位置: 首页 > news >正文

基于 OpenSpec 实现规范驱动开发

背景与痛点:为什么需要 OpenSpec?

AICoding 领域,模型的逻辑推理能力在短小上下文中表现卓越,但在大型工程环境中,模型面临两大挑战:

  • 上下文中毒​:无关信息污染上下文,模型误将噪声当作重要信息
  • 注意力漂移​:长对话中逐渐偏离原始需求,产生幻觉或偏离预期

单纯依靠增加大语言模型的参数规模已无法解决复杂业务逻辑中的幻觉与失控问题。

OpenSpec 倡导的是一种「规格驱动开发」(Spec-Driven Development)范式。​其核心理念是:在写任何一行代码之前,先由人类与 AI 共同协商并锁定一份机器可读、人可评审的规格文档。​需求是什么、技术方案怎么设计、实现步骤有哪些——全部以 Markdown 文件持久化在项目里。AI 每次开工,不是从你的口头描述出发,而是从这份规格文档出发) 展现出了极高的工程性价比,无论是使用 Claude Code、Cursor 还是 Aider,都可以无缝接入 OpenSpec 的规格管理层。OpenSpec 对存量代码库的需求场景,相当友好,相比 Spec Kit 擅长的新项目场景,对于很多公司的开发更为适合。

维度Spec KitOpenSpec
出品方GitHubFission AI
设计思路严格门控,步步审查依赖图驱动,灵活迭代
擅长场景新项目从零开始(Greenfield)已有代码库增量开发(Brownfield)
规范体量较重,单阶段可达 800+ 行较轻,文档约 250 行
流程自由度线性,不能跳步非线性,随时可以回改
协作友好度直接改主规范,多人易冲突变更隔离,archive 时合并
Token 消耗较高较低
变更追踪无内建机制Delta Spec + 归档历史

二、安装与初始化

2.1 安装

# 前置条件:Node.js 20.19.0+ npm install -g @fission-ai/openspec@latest

2.2 初始化

# 命令行方式进入到你的项目 cd your-project # 初始化 openspec init

初始化时 CLI 会问你使用哪些 AI 工具(Claude Code、Cursor、Copilot 等),然后自动往对应目录写入 Skill 和斜杠命令文件。由于我使用的 Claude Code,便选择了对应的 Agent。

Space 选择,Enter 确认

注意:初始化完成后,需要重启 ide 才能生效。

完成后项目里多出一个openspec/目录:

openspec/ ├── specs/ ├── changes/ └── config.yaml # 项目配置

2.3 配置项目上下文(可选,建议配置)

这一步经常被跳过,但它对工件质量影响巨大。在openspec/config.yaml里告诉 AI 你的项目是什么样的:

schema: spec-driven # Project context (项目上下文) # 此信息将在创建各种 artifacts 时提供给 AI 参考 context: | ## 项目概述 XXX 系统(Engine)是数据平台的核心调度引擎,负责将不同类型的任务(Job)提交到对应类型的执行引擎组件上运行。 核心功能: - 向上:接收平台各应用提交的任务(Job) - 内部:负责任务的负载均衡 & 优先级调度 - 向下:将各种类型的任务真正提交(submit)到具体的执行引擎组件上 ## 技术栈 ## 模块结构 ## 代码规范 ## 测试规范 ## Git提交规范 # Per-artifact rules (每个artifact的规则) rules: proposal: - 提案应简洁明了,包含背景、目标、方案概述 - 方案设计需考虑向后兼容性 tasks: - 每个任务应可独立完成和测试 - 任务粒度适中,避免过大或过细 - 需要标明任务涉及的模块和文件路径

context会注入到所有工件的生成过程中——相当于一次配置,以后再也不用在对话开头反复交代技术栈了。rules则是针对特定工件类型的额外要求。

可以让 AI 先生成,然后自己修改:

请阅读 openspec/config.yaml 并帮我填写项目详情、技术栈和约定等

强烈建议该规范文件在组内按照项目维度持续迭代,如果需要更新规范也尽量让 Claude 自己生成,AI 最能理解 AI 生成的规范。

三、项目结构与关键产物

openspec 结构如下:

openspec/ ├── specs/ # 系统当前行为的「源真相」(Source of Truth) ← 「系统现在是什么样的」 ├── changes/ # 每个变更的独立工作目录 ← 「我们打算改什么」 ├── archive/ # 已完成变更的归档目录 ← 「历史记录」 └── config.yaml # 项目配置

目录说明​:

目录作用内容示例
specs/Main Specs,系统当前行为的权威描述user-auth.mdapi-specs.md
changes/活跃变更的工作目录add-dark-mode/fix-login/
archive/已归档变更的历史记录2026-02-27_add-dark-mode/
config.yaml项目级配置文件context、rules 等

Specs(主规格)是系统当前行为的权威描述——「源真相」。它回答的是「系统现在是怎么运作的」。

Changes(变更)是你正在进行的修改——每个功能、每个 Bug 修复独立一个文件夹,互不干扰。它回答的是「我们​打算怎么改​」。

每个变更(Change)都被组织在独立的文件夹中,包含 4 个工件,它们之间有明确的依赖关系:

proposal.md → specs/ → design.md → tasks.md 为什么做? 做什么? 怎么做? 具体步骤
  • proposal.md​:描述变更的初衷和范围。
  • specs/​:具体的逻辑规格,通常包含 “Scenario(场景)” 描述,通过具体的输入输出消除模糊性。这里存放的是 ​Delta Specs(增量规格)​,仅描述本次变更涉及的行为变化。
  • design.md​:技术设计方案,包括本次变更涉及的数据库变更、接口调整等。
  • tasks.md​:原子化的任务清单,作为 AI 的执行路径图。

这个依赖关系是​「使能」而不是「门禁」​。意思是:有了 proposal 才能生成 specs,有了 specs 才能生成 design——但这是 AI 生成工件时需要的输入,而不是说你必须按这个顺序来。你完全可以先写 design 再补 specs,或者直接跳到 tasks,流程是灵活的。

Delta Specs 与 Main Specs 的关系​:

  • openspec/specs/:Main Specs,描述系统当前的完整行为,是「源真相」
  • openspec/changes/<name>/specs/:Delta Specs,描述本次变更带来的行为变化
  • 归档时,Delta Specs 会自动合并到 Main Specs,保持源真相的更新
http://www.jsqmd.com/news/1076547/

相关文章:

  • 小团队标配Litera Lito,大文件审校不再头大
  • FanControl终极调校指南:从风扇噪音到静音散热的高效解决方案
  • 遗传算法工程落地:动态种群、SBX交叉与约束感知变异实战
  • QuickRecorder终极指南:10MB内搞定专业级macOS屏幕录制
  • 2026 年国内十大 PMP 培训机构综合对比(客观评测)
  • 照着用就行:AI论文工具深度测评与推荐
  • 近一年新石器新设子公司列表
  • 我用 FamilyPro 开通 ChatGPT 后,省下了一大笔订阅费
  • 计算机毕业设计之基于SSM的大学生兴趣组管理系统
  • DeepChecks自动化验证:构建可落地的ML模型质量门禁
  • JupyterLab六大生产级扩展:构建数据工程师的防错工作流
  • 计算机毕业设计之基于SSM的川工科宿舍管理系统的设计与实现
  • 终极魔兽争霸3性能提升完整指南:从60FPS到300+帧率突破
  • ArcObjects SDK 10.8完全指南:从零到精通的GIS开发实战教程
  • 投影投影接口定义
  • 矫平机的辊系结构为什么这样设计从受力原理看二、四与六重的差异
  • Kimi K2.5实测:长文本解析与中文语义理解能力深度评测
  • 动态规划与蒙特卡洛实战对比:Gridworld从零手写DP策略迭代和MC控制
  • 从UI设计稿到工程代码,聊聊2026年AI设计工具的真实使用感受
  • HACS集成配置手册:Home Assistant社区商店实用指南
  • 【2013-10-17】Android应用开发笔记:自定义控件实现LCD显示
  • AI写论文攻略!4款AI论文生成工具,为你的毕业论文保驾护航!
  • MCP协议深度解析:从原理到实战,打造你的第一个AI工具集成
  • PX4神经网络控制技术在电力巡检无人机中的架构设计与工程实践
  • 微信机器人开发底座的数字化信任重构
  • 神经网络优化算法:从梯度下降到生物启发方法
  • 药品追溯码扫码设备怎么选?医药全场景读码硬件技术选型分析
  • 大模型和搜索引擎到底有什么不一样
  • 故障、机型、距离、负载四维联动,看懂智能派工人员匹配机制
  • 一次函数、一元一次方程不分家,是单层平直螺旋生长轨迹的两种观测表达-《全域数学vs传统数学:人类文明进阶200讲》第42讲 中学通俗版逐字稿