OpenSpec 功能详解:5 分钟搞懂 AI 编程的规范驱动核心

news/2026/1/19 22:50:41/文章来源:https://www.cnblogs.com/zh94/p/19503921

为什么有时候让 AI 发起提案"时灵时不灵"?

前两天有朋友看了我写的《如何用 AI + OpenSpec 驱动团队迭代开发》后,问我一个很有趣的问题:

"为什么有时候我让 AI 发起 OpenSpec 提案,时灵时不灵?"

其实这个问题很简单,答案就藏在 OpenSpec 的工作原理中。

今天这篇文章,5 分钟的时间帮你快速了解 OpenSpec 的核心原理——它究竟是如何让 AI"听话"地按照规范来工作的。

2 快速认识 OpenSpec

OpenSpec 是一个规范驱动开发工具,核心理念极其简单:

“让 AI 明确知道"知识在哪、如何用、为什么这样做”

官网:https://openspec.dev/

2.1 安装与初始化

# 全局安装 OpenSpec
npm install -g @fission-ai/openspec@latest
# 在项目目录下初始化
cd /path/to/your-project
openspec init

初始化时,OpenSpec 会提示你选择使用的 AI 工具(Claude Code、Cursor、Trae、Qoder 等)。

3 OpenSpec 如何"教"AI 工作?

OpenSpec 的核心机制,是通过一套规范注入系统,让 AI 在每次对话前先"学习"项目规范。

3.1 不同 AI 工具的初始化差异

根据你使用的 AI 工具不同,OpenSpec 会生成不同的目录结构。这背后的设计理念是:最大限度地适配各工具的特性。

3.2 📍 场景 1:Claude Code

Claude Code 在执行了 OpenSpec Init 后的目录结构如下:

.claude/
├── commands/
│   └── openspec/      
│       ├── apply.md   
│       ├── archive.md 
│       └── proposal.md
├── AGENTS.md          
└── CLAUDE.md          

commands/openspec 这个目录定义了三个不同的命令,每个命令文件中所写的提示词,都是 AI 在执行该命令时需要参考的"规范"。上述三个命令分别是:

  • apply.md:表示执行已批准的变更
  • archive.md:归档已完成的变更
  • proposal.md:发起新变更提案

当我们需要发起新的提案时,可以直接使用:/openspec:proposal 就可以触发该指令,此时 AI 就会根据 proposal.md 中所定义的规范,来创建一个新的变更提案。

核心文件解读:AGENTS.md

这个文件是 Claude Code 每次对话时的"第一课",内容如下:

<!-- OPENSPEC:START -->
# OpenSpec 说明
这些指令是针对参与本项目的人工智能助手。
当请求中包含以下内容时,请务必打开 `@/openspec/AGENTS.md`:
- 提及规划或提案(如提案、规范、变更、计划等字眼)
- 引入新功能、重大变更、架构调整或重大的性能/安全工作
- 听起来含糊不清,且在编码前需要权威规范
使用 `@/openspec/AGENTS.md` 来学习:
- 如何创建和应用变更提案
- 规范格式和约定
- 项目结构和指南
保留此托管块,以便"openspec update"可以刷新指令。
<!-- OPENSPEC:END -->

工作原理:

  1. Claude Code 启动时自动读取 AGENTS.md
  2. 判断用户请求是否触"提案/变更"等关键词
  3. 如果触发,自动加载 openspec/AGENTS.md 中的详细规范
  4. AI 按照规范执行任务

3.3 📍 场景 2:Trae(字节跳动)

OpenSpec 在初始化时可选择的AI 工具中是不支持 Trae 的,但是很多朋友是基于 Trae 在开发。

所以对于使用 Trae 的朋友,我们在执行 OpenSpec Init 的时候,可以选择最后一个选项 Other Tools (适用于 VsCode 等)

此时初始化后的目录结构如下:

项目根目录/
├── AGENT.md           # 项目级规范(需手动配置)
└── openspec/├── AGENTS.md      # OpenSpec 详细规范├── project.md     # 项目知识库├── specs/         # 已实现能力规范└── changes/       # 变更提案

关键差异:需要手动配置

与 Claude Code 不同,老版本的 Trae 不会自动读取 AGENT.md。此时你需要手动将规范内容添加到 Trae 的"项目规则"中。

但是对于Trae 2026 年 1 月份最新的一次版本变更中,也已经兼容了读取 AGENT.md 文件作为项目规则来使用。

所以使用老版本 Trae 的朋友需要基于下述步骤进行配置:

  1. 打开 Trae 的项目设置
  2. 找到"项目规则"配置
  3. 将 AGENT.md 的内容粘贴进去
  4. 保存后,Trae 每次对话都会加载该规则

配置完成后,Trae 的工作流程与 Claude Code 类似:

  1. 每次对话自动加载项目规则
  2. 判断是否触发 OpenSpec 规范
  3. 根据规范执行对应任务

3 OpenSpec 规范核心要点

无论使用哪种 AI 工具,OpenSpec 的核心工作流都是一致的。理解这套规范,你就能更好地与 AI 协作。

三阶段工作流:

阶段1:创建变更(Proposal)↓
阶段2:实现变更(Apply)↓
阶段3:归档变更(Archive)

何时必须创建提案?

场景 是否需要提案
新增功能或能力 ✅ 必须
破坏性变更(API/Schema) ✅ 必须
架构或模式调整 ✅ 必须
Bug 修复(恢复既有行为) ❌ 跳过
拼写、格式、注释修正 ❌ 跳过
非破坏性依赖升级 ❌ 跳过

常用命令:

openspec list              # 列出所有变更
openspec list --specs      # 列出所有规范
openspec validate <id>     # 校验变更
openspec archive <id>      # 归档变更

💡 小贴士:作为人类开发者,你无需记忆这些命令。AI 会自动执行相应的操作来检查和管理变更提案。你只需要理解这套规范的工作流程,就能与 AI 配合无间。

openspec/project.md 的作用

这个文件是项目的"知识库",用于存放:

  • 项目目标和背景
  • 核心业务术语
  • 技术栈说明
  • 详细文档索引

4 常见问题解答

4.1 Q1:为什么有时候 AI 不触发 OpenSpec 规范?

A:这通常是因为触发条件未被满足。

OpenSpec 的触发机制基于关键词匹配(如"提案"、"变更"、"规范"等)。如果你的请求不包含这些关键词,AI 则不会加载 OpenSpec 规范。

解决方案:

  1. 明确使用触发词:"帮我创建一个变更提案"
  2. 直接指定文件:"先阅读 openspec/project.md 再回答"
  3. 使用斜杠命令:/openspec:proposal(如果工具支持)

5.2 Q2:project.md 中的业务知识什么时候生效?

A:只有触发 OpenSpec 规范后才会读取。

这是一个重要的设计权衡:

知识类型 存放位置 触发条件
通用开发规范 /AGENTS.md 每次对话自动加载
OpenSpec 工作流 openspec/AGENTS.md 触发关键词后加载
业务上下文 openspec/project.md 通过规范索引间接加载

实践建议:

  • 将通用规则(如项目结构、编码风格)放在 /AGENTS.md 中
  • 将业务知识索引也写在 /AGENTS.md 中,便于日常对话触发
  • 或者在对话中明确要求 AI 先阅读特定文档

5.3 Q3:如何让 AI 自动检索相关背景知识?

A:这是 OpenSpec 的进化方向。

目前最佳实践是:

  1. 在 /AGENTS.md 中建立业务知识索引
  2. 采用提案方式讨论业务逻辑(自动触发规范)
  3. 对话中明确指定:"先阅读 docs/xxx.md 再回答"

6 五、总结:OpenSpec 的核心价值

回到开篇的问题:为什么有时候让 AI 发起提案"时灵时不灵"?

答案现在很清楚了:

  1. 触发机制:AI 需要识别到特定关键词才会加载 OpenSpec 规范
  2. 工具差异:不同 AI 工具对规范文件的支持程度不同
  3. 知识分层:业务知识与开发规范需要合理分层存放

OpenSpec 的核心价值在于:通过"规范注入"让 AI 从"项目小白"成长为"熟悉业务的开发伙伴"。

它不是银弹,但当你理解了它的工作原理后,就能让 AI 在团队协作中发挥真正的作用。

当然,在有需要的时候,我们也可以修改 OpenSpec 初始化时所生成的一系列.md文件,直接变更规范,使其更加符合企业内的业务流程。

欢迎日常交流

AI 驱动团队开发是这个时代的新命题,欢迎大家加微信互相交流心得。

👉 想要进群的朋友,扫码时备注 “AI实验群”,看到消息后会第一时间拉你进群。

群定位:AI工具提效/实战经验互助

群规则:不水群、不广告、干货优先

欢迎访问该链接获取群信息:https://zhaozhihao.com/archives/KRMxDLo4

好文章值得被更多人看见!既然看到这里了,随手点个赞👍和关注,并转发给更多的朋友吧!感谢。

作者:数字生命贾克斯、微信:x_h886688

公众号原文地址:OpenSpec 功能详解:5 分钟搞懂 AI 编程的"规范驱动"核心

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1185488.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

django毕设项目推荐-基于大数据的安客居二手房屋信息采集系统 二手房数据可视化分析系统基于django+网络爬虫的安客居二手房屋信息采集系统的设计与实现【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【动态规划=递归+记忆化存储】跳台阶

求解代码 public int jumpFloor(int number) {int[] memo new int[number 1];return dp(number, memo);}private int dp(int number,int[] memo){if(number<2){return number;}if(memo[number]!0){return memo[number];}memo[number]dp(number-1, memo)dp(number-2, memo)…

(新卷,200分)- 报文解压缩(Java JS Python)

(新卷,200分)- 报文解压缩&#xff08;Java & JS & Python&#xff09;题目描述为了提升数据传输的效率&#xff0c;会对传输的报文进行压缩处理。输入一个压缩后的报文&#xff0c;请返回它解压后的原始报文。压缩规则&#xff1a;n[str]&#xff0c;表示方括号内部的…

什么是Spring Bean?

任何通过Spring 容器实例化、组装和管理的Java对象都能称之为Spring Bean。 Bean可以看成是Spring应用中的一个普通Java对象&#xff0c;这个对象的创建、属性赋值、初始化、销毁等完整的生命周期是由Spring IOC容器来统一管理的&#xff0c;并非程序员手动控制。 Spring Bean的…

短视频直播平台搭建必备:直播美颜SDK与动态贴纸开发/接入详解

在短视频和直播行业的快速发展中&#xff0c;如何让平台更具吸引力、提升用户互动体验成为了开发者和运营者必须关注的核心问题。尤其是对直播平台和短视频平台来说&#xff0c;直播美颜SDK与动态贴纸SDK的引入&#xff0c;已经成为提升用户粘性、增强平台活跃度的重要手段。本…

Suno AI 音乐节奏设计完全指南 | Suno高级篇 | 第23篇

历史文章 Suno AI API接入 - 将AI音乐接入到自己的产品中&#xff0c;支持120并发任务 Suno用邓紫棋的声音唱《我不是真正的快乐》 | 进阶指南 | 第8篇 实测有效&#xff1a;83 个让 Suno 自动写说唱的神级提示 | Suno高级篇 | 第19篇 Suno 电子舞曲创作指南&#xff1a;10…

大模型的微调和预训练区别是什么?

大模型微调&#xff08;Fine-tuning of Large Models&#xff09;是指在预训练&#xff08;Pre-training&#xff09;模型的基础上&#xff0c;使用特定任务的数据对模型进行再训练&#xff0c;使模型适应特定应用场景的需求&#xff0c;本质上就是迁移学习在大模型中的落地方式…

别再做“无效订正“了!这套AI指令把你的错题本变成“提分外挂“

&#x1fa7a; 为什么你总是"精准踩雷"&#xff1f; 你有没有发现一个扎心的现象&#xff1a;那些你曾经错过的题&#xff0c;就像不知疲倦的"丧尸"一样&#xff0c;换个数字、变个场景&#xff0c;你依然会精准地踩进同一个坑里。 明明老师讲过&#xff0…

(新卷,200分)- 不开心的小朋友(Java JS Python)

(新卷,200分)- 不开心的小朋友&#xff08;Java & JS & Python&#xff09; 题目描述 游乐场里增加了一批摇摇车&#xff0c;非常受小朋友欢迎&#xff0c;但是每辆摇摇车同时只能有一个小朋友使用&#xff0c;如果没有空余的摇摇车&#xff0c;需要排队等候&#xf…

强烈安利!本科生必用10款一键生成论文工具测评

强烈安利&#xff01;本科生必用10款一键生成论文工具测评 学术写作工具测评&#xff1a;为什么你需要这份2026榜单 在当前高校学术环境日益复杂的背景下&#xff0c;本科生的论文写作任务不仅数量增加&#xff0c;对质量与规范的要求也不断提升。面对选题困难、文献整理繁琐、…

怎么将已有的应用转换成MCP服务?

将已有的应用转换为MCP&#xff08;Model Context Protocol&#xff09;服务需要将该应用的功能封装为标准化的MCP工具、资源或者提示&#xff0c;再通过MCP Server对外暴露。 主要步骤如下&#xff1a; 1.首先需要识别应用中要提供给外部调用的功能&#xff0c;比如说API接口、…

万象EXCEL应用(二十四) KTV 营业报表+员工提成 ——东方仙盟炼气期

KTV营业报表提成报表整合 KTV 每日、每月的核心营收数据&#xff0c;涵盖包厢消费、酒水销售、增值服务等全品类收入&#xff0c;清晰呈现营收总额、时段营收分布、客源结构等关键指标&#xff0c;无需手动统计零散单据&#xff0c;自动生成标准化报表&#xff0c;支持多维度筛…

django毕设项目:基于django+网络爬虫的安客居二手房屋信息采集系统的设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Spring Security 7 之 OIDC /connect/userinfo 端点解析:ID Token 与用户信息获取

前言 在使用 Spring Security OAuth2 Authorization Server 时&#xff0c;很多开发者对 /userinfo 端点存在两个常见的疑问&#xff1a; 如果 ID Token 已经包含了用户信息&#xff0c;为什么还需要单独的 /userinfo 端点&#xff1f;请求 /userinfo 时使用的是 access_toke…

22 分钟拿下 Uber 2026 OA!Python 解题 + 推广福利,大厂笔试稳了

家人们谁懂啊&#xff01;Uber 2026 OA 居然这么多 “送分题”&#xff1f;用 Python 刷题 模板复用&#xff0c;我直接 22 分钟通关 4 道题&#xff0c;70 分钟的考试时间硬生生省出大半&#xff01;今天把保姆级解题思路 推广福利全分享&#xff0c;想冲大厂的宝子速码&…

当AI学会拍短剧:Huobao Drama全栈AI短剧生成平台深度解析

从一个想法到一部完整短剧&#xff0c;AI只需要几分钟。这不是科幻&#xff0c;这是正在发生的技术革命。 前言&#xff1a;一个程序员的"导演梦" 还记得小时候看电视剧&#xff0c;总幻想自己能当导演&#xff0c;拍出惊天动地的大片。长大后才发现&#xff0c;拍一…

【课程设计/毕业设计】大数据基于网络爬虫的安客居二手房屋信息采集系统基于django+网络爬虫的安客居二手房屋信息采集系统的设计与实现【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

快速看懂供应链的三张表:采购计划表、库存盘点表、供应商评估表

你每天在供应链一线&#xff0c;是不是经常遇到这些事儿&#xff1a;采购计划做了&#xff0c;货却没按时到&#xff0c;生产线等着急了&#xff1b;库存盘点一查&#xff0c;发现一堆呆滞料、账实不符&#xff0c;月底对不上账&#xff1b;供应商换了好几轮&#xff0c;质量还…

先知AI洞察 | 男装创意的枯竭,是否已让您彻夜难眠?

当下男装市场同质化严重&#xff0c;设计灵感仿佛陷入循环&#xff0c;你是否也感受到了这份挥之不去的创意焦虑&#xff1f;从趋势预测到图案设计&#xff0c;传统的创作流程耗时费力&#xff0c;且难以突破固有思维。这不仅是设计师的困境&#xff0c;更是品牌面对快速迭代的…