OpenSpec:AI 写代码,先立规矩再动手

做开发的朋友应该都有这体验:用AI写代码初期贼快,可需求藏在聊天记录里,改需求、加功能时AI写的代码要么跑偏,要么和现有代码揉成一团,最后越改越乱。而OpenSpec就是来解决这个问题的------它是轻量级的规范驱动开发工具,让人和AI先敲定"要做什么",再动手写代码。

核心就两点:openspec/specs/ 存当前系统的规范真相,openspec/changes/ 放待开发的变更提案,所有修改先提提案、定规范,再落地,全程可追溯、可评审。

核心工作流:四步走,简单不绕弯

不用记复杂步骤,核心就四步,全程AI能帮你生成大部分文件,不用手动敲:

  1. 写提案:告诉AI要加什么功能,AI自动生成变更文件夹,包含提案、任务清单、规范变更;
  2. 评审对齐:核对规范,和AI反复打磨,直到需求完全明确;
  3. 落地开发:AI按敲定的规范写代码,逐项完成任务;
  4. 归档更新:功能上线后,把提案归档,规范自动合并到主目录,更新系统真相。

实操例子:加个登录二次验证,5分钟定好规范

不用讲虚的,以给项目加登录OTP二次验证为例,看OpenSpec怎么用,全程用AI+几条命令搞定:

1. 初始化(项目首次用,一步到位)

bash 复制代码
# 全局安装
npm install -g @fission-ai/openspec@latest
# 进入项目初始化
cd 你的项目
openspec init

选上你常用的AI工具(比如Cursor、vscode),工具会自动配置好快捷命令,项目根目录会多出openspec/文件夹。

2. 让AI生成变更提案

对着Cursor/Claude敲命令(不同工具命令稍不同,核心一致):

bash 复制代码
/openspec:proposal 给登录加OTP二次验证

AI会自动在openspec/changes/下生成add-2fa/文件夹,里面包含:

  • proposal.md:说明为什么加、要实现什么效果;
  • tasks.md:拆分好的开发任务(建表、写后端接口、改前端UI);
  • specs/auth/spec.md:规范变更(只写新增/修改的内容,不是全量重写)。

如果想加验收条件,直接跟AI说:"给OTP验证加个场景:输错3次锁定5分钟",AI会自动更新规范和任务。

3. 让AI按规范写代码

敲命令启动开发,AI会按tasks.md逐项完成,还会标记进度:

bash 复制代码
/openspec:apply add-2fa

4. 上线后归档,更新系统规范

sql 复制代码
openspec archive add-2fa --yes

此时add-2fa的规范会合并到openspec/specs/auth/spec.md,后续谁看代码,都能从规范里清楚知道"为什么这么写"。

适合的场景:这些情况用,效率拉满

  • 已有项目的功能迭代(1→n),尤其是跨模块修改
  • 团队协作开发,需统一需求、追溯变更
  • 团队混用多款 AI 编码工具,需统一输出标准
  • 长期维护项目,需要可同步更新的 "活文档"

不适合的场景:别硬用,避免白忙活

  • 0→1 的小 demo / 临时项目,需求简单
  • 单人极短期开发,需求全在本地无需追溯
  • 需求频繁无固定方向的快速迭代
  • 小改动,要不然时间都花在生成文档上面了

总结

OpenSpec不是为了增加开发步骤,而是把"需求模糊"的坑提前填上------让AI和人在编码前达成共识,避免后续返工。它最适合做长期维护、团队协作的已有项目,能让AI编码的优势保留,同时解决"AI写的代码没章法、难维护"的问题。

如果你的项目正被AI编码的"不可控"困扰,不妨试试OpenSpec,先从一个小功能迭代开始,体验下"规范先行"的开发方式。

相关推荐
乌索普-2 小时前
基于vue2的简易购物车
开发语言·前端·javascript
走粥2 小时前
使用indexOf查找对象结合Pinia持久化引发的问题
开发语言·前端·javascript
北寻北爱2 小时前
前端加密解密- base64、md5、sha256、AES
前端·vue.js
柒.梧.2 小时前
Redis通用命令+五大核心数据结构
前端·bootstrap·html
Refly2 小时前
【微信接入 OpenClaw 龙虾🦞】10分钟手把手教程完成接入,Claude 模型无限使用
前端·微信·github
恋猫de小郭2 小时前
为什么中转渠道的顶级模型会不好用?这是一个技术问题
前端·人工智能·ai编程
发现一只大呆瓜2 小时前
React-深度拆解 React路由:从实战进阶到底层原理
前端·react.js·面试
不甜情歌3 小时前
搞懂 Promise:告别回调嵌套,再也不怕异步代码乱成麻
前端·javascript
野草arthas3 小时前
什么是视觉层次?为什么需要它?
前端