李锋镝的博客

  • 首页
  • 时间轴
  • 评论区显眼包🔥
  • 左邻右舍
  • 博友圈
  • 关于我
    • 关于我
    • 另一个网站
    • 我的导航站
    • 网站地图
    • 赞助
  • 留言
  • 🚇开往
Destiny
自是人生长恨水长东
  1. 首页
  2. AI
  3. 正文

规范驱动AI编程:用OpenSpec实现100%可控开发,从需求到代码的全流程闭环

2025年12月15日 453点热度 0人点赞 0条评论

AI编程的最大痛点,从来不是“生成代码太慢”,而是“生成代码不可控”——需求模糊导致AI猜着写、迭代中需求漂移、功能上线后无文档可查、团队协作时知识断层。当开发者还在反复修改AI生成的代码时,规范驱动开发工具OpenSpec已经给出了破局方案:在写代码前,先和AI把需求说透、定死规范,让AI成为“精准执行者”而非“猜测者”。

本文将从核心逻辑、完整工作流、进阶实战、场景适配四个维度,深度解析OpenSpec如何重塑AI编程流程,结合扩展案例与优化技巧,帮你彻底摆脱“AI写代码全靠猜”的困境,实现可控、可追溯、可协作的AI开发模式。

一、核心逻辑:为什么规范驱动能解决AI编程的不可控?

AI编程的不可控,本质是“需求传递的模糊性”与“开发流程的无结构化”。OpenSpec的核心价值,就是通过“规范先行、双向对齐、全程追溯”,把模糊需求转化为明确指令,让AI和开发者在同一频道协作。

1. AI编程的三大失控场景与解决方案

失控场景 典型表现 OpenSpec解决方案
需求理解偏差 要手机号登录,AI生成邮箱登录;要简单修改,AI重构整个文件 提前起草提案,AI主动询问关键细节,形成结构化需求文档
迭代中需求漂移 多轮对话后,AI忘记初始需求,代码越改越偏 规范文档作为“单一真相源”,所有迭代基于规范修改,不偏离核心目标
无文档可查 功能上线后,不清楚“为什么这么实现”“需求边界是什么” 自动生成提案、设计决策、测试用例,形成完整的开发档案
团队协作断层 新成员接手时,无法快速理解功能背景与实现逻辑 规范文档+变更记录,完整还原功能演进过程,降低知识传递成本

2. OpenSpec的核心设计理念

  • 轻量无侵入:无需复杂配置,几条命令即可上手,不影响现有项目架构;
  • AI原生兼容:深度适配Claude Code、Cursor、GitHub Copilot等主流AI工具,无需更换开发环境;
  • 聚焦现有项目:专为“1→N”的项目迭代设计,而非仅适用于“0→1”的新项目;
  • 规范即文档:开发过程中自动生成结构化规范,与代码同步演进,避免文档过时。

二、完整工作流:从需求到归档的四步闭环

OpenSpec的工作流遵循“提案→审查→实现→归档”的闭环,每一步都围绕“规范”展开,确保AI编程的每一个环节都可控。

1. 工作流拆解(以“给待办APP添加标签功能”为例)

Step 1:起草提案——把需求说透,不留模糊空间

这一步的核心是“让AI问透需求”,而非直接写代码。OpenSpec会引导AI围绕需求的核心维度提问,直到形成完整的结构化提案。

操作流程:

  1. 安装并初始化OpenSpec:

    # 全局安装(需Node.js ≥20.19.0)
    npm install -g @fission-ai/openspec@latest
    # 进入项目目录初始化
    cd todo-app
    openspec init

    初始化时需选择适配的AI工具(如Claude Code),完成后项目会生成openspec目录,包含项目信息文件、规范文档目录、变更提案目录。

  2. 填充项目背景:
    让AI分析项目代码,自动填充openspec/project.md,包含技术栈(如React+TypeScript+LocalStorage)、代码规范、现有功能模块,让AI充分理解项目上下文。

  3. 创建变更提案:
    在AI工具中输入命令:

    /openspec:proposal Add Tag Functionality for Todo Items

    AI不会立即写代码,而是围绕需求核心维度提问(以标签功能为例):

    • 标签支持哪些操作?(创建、编辑、删除、关联待办)
    • 标签是否支持颜色区分?最多支持多少个标签?
    • 一个待办可关联多个标签吗?标签是否支持搜索筛选?
    • 标签数据如何持久化?是否需要同步到云端?
    • 旧待办数据如何兼容?是否自动添加“默认标签”?
  4. 生成结构化提案:
    开发者回答完问题后,AI自动生成完整提案包,包含:

    • proposal.md:功能动机、核心需求、边界场景、向后兼容说明;
    • design.md:技术选型(如标签数据结构、存储方案)、核心算法(如标签筛选逻辑);
    • tasks.md:拆分后的实现任务(如“数据模型更新”“标签UI组件开发”“筛选功能实现”“测试用例编写”);
    • specs/:规范增量文件,明确功能的技术要求与交互标准。

Step 2:审查对齐——人和AI共同确认,避免偏差

提案生成后,开发者需和AI一起审查,确保需求、技术方案完全符合预期,这是避免后续返工的关键。

审查重点与操作:

  1. 需求完整性:是否覆盖所有核心场景(如标签重命名后,关联的待办是否同步更新);
  2. 技术可行性:技术选型是否适配现有项目(如LocalStorage存储标签是否满足性能需求);
  3. 边界情况:是否考虑异常场景(如标签名称重复、待办删除后标签的处理);
  4. 迭代修改:若发现问题,直接在AI工具中反馈,AI会自动更新提案,例如:

    请修改提案:1. 标签颜色支持6种预设颜色,不支持自定义;2. 一个待办最多关联3个标签;3. 旧待办默认无标签,不自动添加。

工具辅助审查:

# 查看当前活跃提案
openspec list
# 验证提案格式正确性
openspec validate add-tag-functionality
# 查看提案详情(含任务清单与规范)
openspec show add-tag-functionality

Step 3:实现任务——AI按规范执行,精准生成代码

提案审查通过后,AI将严格按照任务清单和规范文档,逐模块生成代码,避免“画蛇添足”或“遗漏功能”。

实现过程与优势:

  1. 任务化执行:AI按tasks.md中的步骤逐个实现,标记完成状态(如“✅ 数据模型更新完成”);
  2. 风格一致性:AI自动适配项目现有代码规范(如组件命名、注释格式),生成的代码无需手动调整;
  3. 实时反馈:若实现过程中发现问题(如数据结构设计不合理),可暂停实现,修改提案后再继续;
  4. 测试用例同步生成:AI不仅写功能代码,还会按规范生成单元测试、手动测试用例,确保功能可用。

示例:标签数据模型实现(TypeScript):

// 按提案中的数据结构规范生成
export interface Tag {
  id: string; // 唯一标识,UUID生成
  name: string; // 标签名称,非空且不重复
  color: 'red' | 'blue' | 'green' | 'yellow' | 'purple' | 'orange'; // 预设6种颜色
  createdAt: number; // 创建时间戳
}

export interface TodoItem {
  id: string;
  title: string;
  completed: boolean;
  tagIds: string[]; // 关联标签ID,最多3个
  updatedAt: number;
}

// 存储工具按规范使用LocalStorage
export const tagStorage = {
  saveTags(tags: Tag[]): void {
    localStorage.setItem('todo_tags', JSON.stringify(tags));
  },
  getTags(): Tag[] {
    const data = localStorage.getItem('todo_tags');
    return data ? JSON.parse(data) : [];
  },
  // 其他方法按规范实现...
};

Step 4:归档更新——规范固化,形成可追溯记录

功能测试通过后,执行归档命令,OpenSpec会自动更新项目规范,保存变更记录,形成完整的开发档案。

归档操作与效果:

  1. 执行归档命令:

    # 终端归档
    openspec archive add-tag-functionality --yes
    # 或在AI工具中执行
    /openspec:archive add-tag-functionality
  2. 归档后自动完成:
    • 变更提案移动到归档目录(按日期命名,如2025-10-20-add-tag-functionality);
    • 规范增量合并到项目主规范(openspec/specs/),形成最新的功能规范文档;
    • 验证所有规范的一致性,确保无冲突;
    • 生成归档报告,包含“新增文件数、修改文件数、完成任务数、未完成任务数”。

三、进阶实战:OpenSpec的深度优化与扩展场景

OpenSpec的价值不止于“单一功能开发”,还能适配复杂场景(如多模块联动、项目重构),通过进阶技巧进一步提升开发效率。

1. 多模块联动功能开发(以“电商APP购物车+优惠券联动”为例)

当功能涉及多个模块(购物车、优惠券、订单)时,OpenSpec可通过“跨模块规范关联”确保逻辑一致性:

  1. 提案阶段:AI自动识别关联模块,询问联动逻辑(如“优惠券是否仅适用于特定品类商品?购物车商品变更后优惠券是否重新计算?”);
  2. 规范设计:生成跨模块规范,明确数据流转规则(如“购物车商品总价≥100元才可使用优惠券”);
  3. 实现阶段:AI按模块拆分任务,先更新数据模型联动逻辑,再开发UI交互,最后编写集成测试;
  4. 归档阶段:自动更新购物车、优惠券、订单三个模块的规范文档,确保联动逻辑可追溯。

2. 项目重构场景的规范驱动

重构是AI编程的高风险场景,OpenSpec可通过“规范校验”降低风险:

  1. 提案阶段:明确重构目标(如“将Class组件改为Function组件”“优化接口请求性能”)、范围(如“仅用户模块”)、兼容要求(如“旧接口需兼容3个月”);
  2. 审查阶段:AI生成重构前后的规范对比文档,确认重构不破坏现有功能;
  3. 实现阶段:AI按“小步迭代”原则拆分重构任务,每完成一个模块就对照规范校验;
  4. 归档阶段:保存重构前后的代码快照、规范变更记录,便于回滚与审计。

3. 团队协作中的规范共享与权限控制

OpenSpec支持团队协作,解决多开发者与AI协同的问题:

  1. 规范共享:项目规范存储在代码仓库,团队成员共同维护,AI生成代码时优先遵循团队规范;
  2. 权限控制:通过Git权限管理,控制谁能创建提案、审查提案、执行归档,避免规范被随意修改;
  3. 冲突解决:多开发者同时修改同一规范时,OpenSpec会提示冲突点,需手动确认后合并;
  4. 协作记录:所有提案的审查意见、修改记录都保存在变更文件中,形成团队协作档案。

4. 规范文档的二次利用(自动化测试、用户手册生成)

归档后的规范文档可复用为其他资产:

  • 生成自动化测试用例:基于规范中的“场景描述”,AI自动生成Jest、Cypress等测试代码;
  • 生成用户手册:从规范中提取用户可见功能(如“标签创建步骤”“优惠券使用条件”),生成产品用户手册;
  • 生成接口文档:若功能涉及API开发,从规范中提取接口参数、响应格式,生成Swagger接口文档。

四、场景适配:OpenSpec的适用边界与优化建议

OpenSpec不是万能工具,需根据场景灵活使用,同时通过技巧优化流程效率。

1. 适用场景与不适用场景

场景类型 是否适用 原因
现有项目迭代(1→N) ✅ 高度适用 专为项目演进设计,规范可增量更新,不破坏现有功能
复杂功能开发(多模块、多逻辑) ✅ 高度适用 结构化规范确保逻辑一致性,避免遗漏场景
团队协作开发 ✅ 高度适用 规范共享+可追溯记录,降低协作成本
需长期维护的项目 ✅ 高度适用 规范文档与代码同步,便于后期维护
快速原型验证(0→1) ❌ 不推荐 流程稍繁琐,直接让AI写代码更快
一次性小脚本开发(≤100行) ❌ 不推荐 无需规范与归档,浪费时间
需求极度模糊(无明确目标) ❌ 不推荐 需先明确需求方向,再用OpenSpec落地

2. 效率优化技巧

  • 提案阶段:提前准备“需求清单模板”(如功能目标、用户场景、边界条件),减少AI提问次数;
  • 审查阶段:重点审查“核心场景”与“边界条件”,非关键细节可简化审查流程;
  • 实现阶段:对简单任务(如“添加字段”)让AI批量执行,复杂任务(如“核心算法”)拆分后分步实现;
  • 归档阶段:定期清理过期规范,合并重复规范,保持规范文档简洁。

3. 避坑指南

  • 不要过度设计规范:聚焦“必要条件”,避免冗余细节(如“按钮颜色为#1890FF”而非“按钮颜色为蓝色”);
  • 提案迭代不宜过多:建议迭代次数≤3次,过多迭代会导致需求漂移;
  • 测试后再归档:归档前必须手动测试核心流程,避免将有bug的功能归档;
  • 规范文档要活维护:定期回顾规范,删除过时内容,确保与代码同步。

四、总结:AI编程的下一个阶段——可控与高效的平衡

OpenSpec的核心不是“束缚AI”,而是“赋能AI”——通过规范让AI的强大生成能力精准落地,让开发者从“反复修改代码”中解放出来,聚焦“需求设计”“技术决策”“业务价值”。

从“猜着写”到“按规范写”,OpenSpec重塑了AI编程的流程:

  • 对开发者:需求更明确、迭代更高效、维护更轻松;
  • 对团队:协作更顺畅、知识更沉淀、交接更简单;
  • 对项目:质量更可控、文档更完整、风险更低。

如果你正在被AI编程的“不可控”困扰,或需要长期维护项目、团队协作开发,不妨试试OpenSpec——它可能不是最快的AI编程方式,但一定是最可控、最可持续的方式。

除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.lifengdi.com/ren-gong-zhi-neng/4648

相关文章

  • Everything Claude Code 详细使用文档
  • Claude Code全维度实战指南:从入门到精通,解锁AI编程新范式
  • LangChain + Zod 实战指南:构建类型安全的AI结构化输出系统
  • Gemini 3 Pro 深度测评:多模态AI编程的跨代际突破,从一句话到完整应用的全链路革命
  • 突破AI大项目理解瓶颈:三大进阶策略+实战落地指南
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: AI编程 OpenSpec
最后更新:2025年12月15日

李锋镝

既然选择了远方,便只顾风雨兼程。

打赏 点赞
< 上一篇
下一篇 >

文章评论

1 2 3 4 5 6 7 8 9 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 52 53 54 55 57 58 60 61 62 63 64 65 66 67 69 72 74 76 77 78 79 80 81 82 85 86 87 90 92 93 94 95 96 97 98 99
取消回复

愿将腰下剑,直为斩楼兰。

那年今日(04月20日)

  • 1971年:中国著名法学家周鲠生逝世
  • 1901年:著名建筑学家梁思成出生于日本东京,祖籍广东新会
  • 1889年:德国纳粹党元首希特勒出生于奥地利布劳瑙
  • 1808年:法兰西第二帝国皇帝拿破仑出生
  • 429年:中国古代数学家祖冲之出生
  • 更多历史事件
最新 热点 随机
最新 热点 随机
Everything Claude Code 详细使用文档 配置Jackson使用字段而不是getter/setter来序列化和反序列化 这个域名注册整整十年了,十年时间,真快啊 Claude Code全维度实战指南:从入门到精通,解锁AI编程新范式 Apollo配置中心中的protalDB的作用是什么 org.apache.ibatis.plugin.Interceptor类详细介绍及使用
AI时代,个人技术博客的出路在哪里?使用WireGuard在Ubuntu 24.04系统搭建VPN这个域名注册整整十年了,十年时间,真快啊WordPress实现用户评论等级排行榜插件WordPress网站换了个字体,差点儿把样式换崩了做了一个WordPress文章热力图插件
使用WireGuard在Ubuntu 24.04系统搭建VPN 为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案? 妹妹的画【2019.07.03】 jmap命令(jdk1.8) 我要狠狠的反驳“公司禁止使用 Lombok ”的观点! Java之五种遍历Map集合的方式
标签聚合
SpringBoot 多线程 分布式 AI docker 数据库 AI编程 ElasticSearch Redis Spring JVM 设计模式 WordPress IDEA SQL JAVA 架构 日常 MySQL K8s
友情链接
  • Blogs·CN
  • Honesty
  • Mr.Sun的博客
  • 临窗旋墨
  • 哥斯拉
  • 彬红茶日记
  • 志文工作室
  • 懋和道人
  • 拾趣博客导航
  • 搬砖日记
  • 旧时繁华
  • 林羽凡
  • 瓦匠个人小站
  • 皮皮社
  • 知向前端
  • 蜗牛工作室
  • 韩小韩博客
  • 风渡言

COPYRIGHT © 2026 lifengdi.com. ALL RIGHTS RESERVED.

域名年龄

Theme Kratos Made By Dylan

津ICP备2024022503号-3

京公网安备11011502039375号