如何用 AI + OpenSpec 驱动团队迭代开发 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
dearzhzhao
V2EX    程序员

如何用 AI + OpenSpec 驱动团队迭代开发

  •  1
    &nsp;
  •   dearzhzhao 3 天前 706 次点击

    原文地址:如何用 AI + OpenSpec 驱动团队迭代开发

    从混乱到有序,从口口相传到知识沉淀,我们用一次实践探索了 AI 辅助团队开发的完整架构

    一个真实的痛点

    你是否遇到过这样的场景:

    1. 写个正则表达式? AI 秒杀我。
    2. 写个独立脚本? AI 真香。
    3. 写个炫酷网页? AI 真牛 X !

    但是一旦将 AI 扔进一个庞大的微服务项目里,它似乎立刻降智为了“新手小白”?

    由于 AI 无法理解三年前写下的那段“奇葩代码”究竟为何,导致每次对话都像“开盲盒”,Review AI 生成代码的时间,比自己重写一遍还要长。

    这些问题的本质其实是:缺乏一个结构化的、AI 可理解的知识管理体系

    最近,我们在一个复杂的微服务项目中,探索并实践了一套 “人机协同迭代开发”的完整架构。整个过程没有额外编写一行工具代码,仅通过对话和现有工具链,就让 AI 从“项目小白”成长为“熟悉业务的开发伙伴”。

    本文将完整还原这一过程,并总结出可复制的方法论。

    第一步:建立 AI 可理解的“项目大脑”

    大多数团队的文档是写给人看的,而非 AI:

    • 飞书/Confluence/Wiki 里的设计文档太多,太杂。
    • 散落在各处的 README → AI 抓不住重点。
    • 资深员工脑中的隐性知识 → AI 永远学不会。

    我们的解法是引入 OpenSpec 规范,并基于它构建一整套“知识迭代体系”。

    OpenSpec 核心理念极其简单:让 AI 明确知道“知识在哪、如何用、以及为什么这样做”。

    1.1 搭建“知识骨架”

    无论是新项目还是历史项目,第一步都是通过命令行初始化一个标准的知识目录结构:

    cd /path/to/your-project openspec init 

    生成的目录结构,便是项目的“知识骨架”:

    openspec/ ├── AGENTS.md # [大脑指令] AI 工作指南(开发规范、测试策略、错误码设计等) ├── project.md # [长期记忆] 项目上下文(目标、核心术语、文档索引) ├── specs/ # [技能树] 已实现能力的规范(做了什么) ├── changes/ # [短期记忆] 待处理的变更提案(要做什么) └── docs/ # [知识库] 详细文档(为什么这样做) 

    此举的核心在于为 AI 提供一个明确的结构化索引,而非一股脑地塞入所有文档。

    其中 docs 并非 OpenSpec 规范,而是自行创建的目录,后续用作详细索引时使用,需要手动创建。

    1.2 让 AI “认识”你的项目

    对于已有项目,AI 起初面对一片空白。我们采用 “索引层 + 明细层” 的双层结构来填充知识。

    索引层(AGENTS.md & project.md

    这里不写长篇大论,只提供“地图”。

    • AGENTS.md:定义 AI 的核心开发规范(如命名、错误码、测试策略)。
    • project.md:阐述业务共性知识(如项目目标、核心术语、需求概要),并指明各项详细文档在 docs/ 中的位置索引。

    明细层(openspec/docs/:这里存放真正的“干货”:详细的架构设计、复杂的需求文档、业务逻辑说明。

    工作流形成闭环:当 AI 接到任务 → 先读 AGENTS.md(获取规范)→ 再读 project.md(获取业务背景)→ 根据索引定位到 docs/ 下的具体文档 → 深刻理解上下文后开始工作。

    最棒的是:你无需手动编写这些索引。只需发起一个 OpenSpec 提案,通过对话引导 AI 自己去梳理项目架构和业务,它便能自动生成初始的 project.md 内容。

    知识迭代提示:后续在 docs/ 下维护新知识时,需引导 AI 基于更新后的知识库,重新总结生成新的 project.md 。为此,我们可以定义一个《文档管理指南》作为准则,确保 AI 每次迭代时都能遵循,从而保障业务知识的持续有效性和一致性。

    第二步:协作机制像管理代码一样管理“知识”

    建立了初始知识库,还需让知识随着项目迭代而更新。我们引入了一套 Change-Driven (变更驱动) 的协作流程,并将其作为团队核心准则严格执行。

    所有新的需求或变更,都必须严格通过 OpenSpec 发起提案:

    1. 需求变更 → 发起 OpenSpec 提案
      • 开发新需求时,必须通过 OpenSpec 创建提案(changes/proposal-xxx.md)。
      • 人工审查重点:核对 AI 生成的提案中 Why (背景)、What (目标)、Impact (影响) 是否清晰一致,确保人与 AI 的理解对齐。
    2. AI 辅助实现
      • AI 读取已通过的提案,结合 specs/ 中已有的能力规范,生成或修改代码及测试用例。
      • 人工进行 Code Review 。
    3. 知识沉淀(归档)
      • 运行 openspec archive 命令。
      • AI 将自动把本次变更所涉及的新知识、新规范,更新到 specs/docs/ 中,完成知识入库。

    通过这个流程,每一次需求迭代及其产生的代码,都完整地闭环并沉淀到 OpenSpec 体系里。AI 在处理后续需求时,便有了可追溯和借鉴的“历史经验”。

    实践建议与场景考量

    在实际操作中,你还会遇到一些具体问题,例如:

    Q:微服务项目下子服务众多,应该每个服务初始化一套 OpenSpec ,还是整个项目共用一套?

    我们的经验则是:基于知识独立性进行判断

    • 如果某个模块(如用户中心)的业务知识与其他模块重合度很低(例如<30%),独立初始化一个 OpenSpec 目录是更清晰的选择。
    • 如果多个服务共享大量共性业务知识(重合度>70%),共用一套 OpenSpec 更能保证知识的一致性和 AI 的理解效率。

    不同的业务架构需要灵活采用不同的策略。

    走向“人 + AI”的团队协作

    当这套以知识为核心的迭代体系稳固运行后,你会发现:

    • 隐性知识被彻底显性化。
    • 新成员(包括 AI ) 学习成本大幅降低。
    • 在后续编写接口文档、架构迭代或代码重构时,AI 的效能将被成倍放大。

    未来的高效团队协作,是 “人 + AI” 的深度融合。让 AI 成为团队忠实的“知识伙伴”而不仅仅是临时的“代码助手”,这,才是 AI 时代团队开发的正确打开方式。


    欢迎日常交流

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

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

    群定位:AI 工具提效/实战经验互助 群规则:不水群、不广告、干货优先

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


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

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

    个人网站文章地址:如何用 AI + OpenSpec 驱动团队迭代开发

    xsonglive491
        1
    xsonglive491  
       3 天前
    用过一段时间,如果是单人开发,openspec 还是有些太过于笨重了.
    skyemin
        2
    skyemin  
       3 天前
    cy
    dearzhzhao
        3
    dearzhzhao  
    OP
       3 天前
    @xsonglive491 嗯,这个的确更加适合团队作战的场景。
    limhiaoing
        4
    limhiaoing  
       16 小时 6 分钟前 via iPhone
    @dearzhzhao 团队开发 merge 的时候 specs 冲突,大项目一段时间后积攒了几百个 specs 要如何管理呢?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5123 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 09:29 PVG 17:29 LAX 01:29 JFK 04:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86