为什么我们需要“规范”?

想象一个场景:两支篮球队比赛,队员都穿着自己觉得舒服的衣服上场。结果会怎样?传球时可能把对手误认为队友,配合变得混乱,甚至不敢传球,最终演变成各自为战,战术彻底失效。

软件开发亦是如此,尤其是在与AI协作时。我们常常发现,AI并不能完全理解我们模糊的需求描述,反而会基于自己的“猜测”去生成代码——这就是所谓的“AI幻觉”。这种不确定性,让AI生成的代码质量难以保证,后期维护成本剧增。

解决方案就是:引入“规范”。 这个规范,是用来明确告诉AI:要做什么、怎么做、用什么数据格式、遵循什么编码风格。而实现这一理念的工具,正是 OpenSpec

OpenSpec可以让AI“照图施工”

OpenSpec 的核心思想很简单:先画草图,确认无误,再正式施工

它在人与AI之间建立了一套标准化的协作流程:

  1. 写成规范文档:将需求、场景、数据结构等明确下来。
  2. 人机达成共识:开发者审查并批准AI提出的实现方案。
  3. 按规范实现:AI严格依据批准的规范生成代码。
  4. 留下完整记录:所有决策和变更都有据可查,便于追溯。

这不仅提升了代码的可靠性,也让整个开发过程变得透明、可控。

快速上手 OpenSpec

安装准备

确保你的系统已安装 Node.js(版本 >= 20.19.0)

# 查看node版本,如果没有安装,需要自行安装node
node --version

接着,全局安装 OpenSpec CLI:

# 全局安装OpenSpec
npm install -g @fission-ai/openspec@latest

安装好之后,可能需要关闭命令行窗口,重新打开才会生效,也可能不用,我的mac是需要关闭才能生效的,最后使用查看版本的命令,来验证是否安装成功。

openspec --version

在新项目中使用

新建一个工程,类似这样:

然后在idea的命令行工具里面输入:

openspec init

你会看到类似这样的提示:

按下回车进入下一个画面:

这个页面是让你选择在电脑中使用的AI编码工具是什么,多数人应该用的是Claude Code,我用的IFlow,这是个免费开源的国产工具,所以我就输入‘iFlow’

选中iFlow后会高亮,然后按Tab键确认选择,确认之后openspec就开始初始化了,会在工程中生成两个文件夹,一个是.iflow,一个是openspec,iflow里面是这样的:

这些看看就好了,大致这些东西都是openspec为增强iFlow功能的,另外一个是openspec,结构这个样子:

changes里面都是变更提案,specs里面都是规范文档,现在刚刚初始化,所以这里面是空的。

我们打开iFlow,进入之后给它提示词,这一步的作用尽可能的描述清楚,最好大概包括这些内容:

  • 项目用途
  • 技术栈
  • 代码规范
  • 领域知识
  • 约束条件

我的提示词这么写的:

写到project.md中作用是遵循openspec的约定规范,这样是让AI充分理解你的项目背景。回车之后等待一会,代码就会写好,然后生成project.md文件,类似如下:

把这个工程的大致作用都描述清楚了,后续就方便AI理解整个工程,当然在搭建这个工程的时候,最好按照约定好的全部描述清晰完成,越细致越好。

在已有的项目中迭代

工程建立好之后,后续就会有各种功能的变更和迭代了,假设我们要为项目“添加一个自定义专注时长的功能”。

  1. 在 AI 工具(如 iFlow)中输入你的需求:

  1. AI 不会立刻写代码,而是会主动提问以澄清细节(如:“单位是分钟还是秒?”、“是否需要保存用户上次设置?”):

我的回答类似这样:

确认无误后,执行提案:

  1. 你回答后,AI 会生成一份变更提案(Change Proposal),并自动存入 openspec/changes/ 目录下,包含:

- 一个 `.yaml` 文件:机器可读的配置。
- 一个 `.md` 文件:人类可读的需求说明。

到这里,我们的规范就制作完成了,我们可以通过openspec的命令来审核和检查这个规范是不是可以被AI执行,在命令行工具里面输入命令(不是iFlow对话框),如下:

# 查看活跃的变更,这里会列出变更单名字
openspec list

# 验证提案格式
openspec validate add-custom-interval

# 查看提案详情
openspec show add-custom-interval

到这里,我们制作完了一个新增功能的规范,这个规范是可以让AI直接执行的,我们也可以继续添加其他功能的规范,待我们的需求全部提完,再一并执行也可以,这里我们直接执行这个规范。我们在iFlow的命令行里面输入:

按回车之后,就开始执行了

执行完毕之后,会提示完成。至此,规范驱动AI成功完成了编码,执行之后成功输出内容:

归档与沉淀

功能开发完成后,别忘了归档,以便更新项目整体规范:s编辑

# 应用提案
openspec apply add-custom-focus-duration

或者在iFlow中执行:

/openspec:archive add-custom-interval

归档后,该功能的规范会被合并到主规范中,成为项目知识库的一部分,为后续开发提供坚实基础。

回车之后等待一会得到结果如下:

在通过几个确认之后,iFlow就开始给你执行,执行完毕之后如下

总结:四步工作流,高效又安心

使用 OpenSpec 进行规范驱动开发,只需记住这四个核心步骤:

  1. 创建提案/openspec:propsal "你的功能名称"
  2. 审查验证openspec validate <提案目录>
  3. 执行实现/openspec:apply <提案目录>
  4. 归档沉淀/openspec:archive <提案目录>

AI 正在深刻改变软件开发,但它并非万能。它需要清晰的指令,更需要人类的引导。OpenSpec 的目标,就是让人与AI的协作变得更高效、更可靠、更可持续

本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:alixiixcom@163.com