芥末
发布于 2026-04-03 / 121 阅读
0

用 OpenSpec 和 CodeBuddy 搭建 AI Native 研发流程

AI Coding 很容易被用成“高级自动补全”:工程师在对话框里描述需求,AI 生成一段代码,工程师复制、运行、报错、再追问。这个循环看起来省了敲代码的时间,但项目一复杂,问题就会暴露出来:

  • AI 不理解项目架构,容易写出和现有代码风格不一致的实现。
  • 需求、设计、代码、测试分散在不同工具里,上下文靠人工搬运。
  • 每个人和 AI 的协作方式不同,输出质量取决于提示词水平。
  • 文档写完就失效,新人维护系统时只能反向阅读代码。

AI Native 研发不是让 AI 随意改代码,也不是取消工程师的责任,而是把“写代码”这件事变成一条可规划、可审查、可追踪的流水线。人的工作从手工实现转向定义需求、审查方案、控制风险和决定是否合入;AI 则负责按规范执行编码、补测试、同步文档。

这里的“0 人工 Coding”更准确地说,是不再由人直接手写大量业务代码。工程师仍然要做决策、审批和质量把关。

AI 辅助编码的结构性问题

单点使用 AI 写代码时,效率上限通常不高。根因不是模型能力不够,而是协作链路没有工程化。

问题典型表现根因
人机协作没有统一标准老手能写出高质量提示词,新手反复返工没有统一的输入格式、审查节点和输出约束
流程存在断点工程师在需求平台、文档系统、IDE 之间复制粘贴工具之间没有共享上下文
项目上下文缺失AI 重复造轮子、引入不存在的库、违反目录规范AI 只能看到人工提供的片段,不能稳定读取项目规则
文档和代码脱节方案文档沉睡在 Wiki,实际实现只能看代码文档不在同一套变更流程里,无法随代码演进
质量不可控同样的需求,不同人让 AI 生成的结果差异很大缺少机器可执行的研发契约

要解决这些问题,不能只靠“写更好的提示词”。更合理的做法是把需求、设计、任务拆解、代码生成、验证和归档统一到一套规范里。

OpenSpec + CodeBuddy 的核心思路

可以把 OpenSpec 理解成一份“研发契约”。它既能让人审查,也能让 AI 执行。

CodeBuddy 则是执行入口。工程师通过 CodeBuddy 发起规划、编码、审计和归档指令,AI 根据 OpenSpec 中的规范文件完成具体工作。

整体链路如下:

flowchart LR
    A[需求或 Bug] --> B[/opsx:propose 生成变更规划]
    B --> C[人工审查 proposal/design/tasks/specs]
    C --> D[/opsx:apply 按任务清单编码]
    D --> E[测试与 /opsx:verify 审计]
    E --> F[提交 MR 合并请求]
    F --> G[/opsx:archive 归档规范]
    G --> H[openspec/specs 活文档]
    H --> B

这条链路有一个关键点:AI 不直接根据一句模糊需求写业务代码,而是先生成一组可审查的规划文件。人审查通过后,AI 再按任务清单执行。

人的角色也随之变化。

阶段AI 负责人负责
需求分析提炼需求、发现遗漏、结构化输出判断优先级,确认需求边界
技术设计生成方案、接口定义、风险清单确认技术选型,审查安全和架构约束
代码开发跨文件修改代码、补充注释和测试审查关键逻辑,控制合入门禁
测试验证生成测试脚本、执行回归、分析失败原因审核高风险场景,决定是否放行
发布归档校验实现和规范一致性,同步文档审批发布时间窗口,处理异常升级

这种模式下,工程师的主要职责不是“替 AI 修一堆代码”,而是让 AI 拿到足够清晰的规范,并在关键节点拦住错误。

OpenSpec 的项目结构

OpenSpec 会在项目中维护一套规范目录。一个典型结构如下:

项目根目录/
└── openspec/
    ├── config.yaml              # 项目配置:技术栈、规范风格、业务背景
    ├── specs/                   # 已归档规范:系统当前能力的活文档
    │   └── user-permission/
    │       └── spec.md
    └── changes/                 # 进行中的变更
        └── add-user-permission/
            ├── proposal.md      # 为什么做、做什么
            ├── design.md        # 怎么做、架构决策是什么
            ├── tasks.md         # 可执行任务清单
            └── specs/           # 本次变更带来的规范增量

其中最重要的是两个目录:

目录作用
openspec/changes/临时工作区。每个需求或 Bug 对应一个 Change,里面放提案、设计、任务和规范增量
openspec/specs/已归档规范区。代表系统当前真实能力,是 AI 之后理解项目的重要上下文

changes/ 里的内容通过评审后会被归档进 specs/。这样,文档不是额外维护的 Wiki,而是研发流程的一部分。

三个核心指令:propose、apply、archive

/opsx:propose:先形成规划,再开始编码

大段业务代码不适合直接让 AI 写。正确入口是先生成规划文件:

/opsx:propose 新增用户权限控制模块,支持角色绑定、权限校验和接口拦截

执行后,AI 会在 openspec/changes/[变更名]/ 下生成一组文件。

文件内容审查重点
proposal.md背景、目标、范围、非目标需求边界是否清楚,有没有做多或做少
design.md技术方案、模块划分、接口设计、风险是否符合现有架构,是否引入不必要复杂度
tasks.md可执行任务清单任务是否足够小,是否能逐项验证
specs/规范增量用户可见行为是否描述清楚

tasks.md 建议控制在 15 项以内。任务过多时,AI 需要同时记住大量上下文,更容易遗漏约束或生成前后不一致的代码。复杂需求应该拆成多个原子变更。

一个简化的 tasks.md 可以长这样:

# Tasks

- [ ] 新增权限数据模型和迁移脚本
- [ ] 实现角色与权限绑定接口
- [ ] 实现权限校验中间件
- [ ] 为管理端接口接入权限校验
- [ ] 补充单元测试和接口测试
- [ ] 更新权限模块规范说明

/opsx:apply:按图施工

规划通过审查后,执行:

/opsx:apply add-user-permission

AI 会读取当前变更目录中的 proposal.md、design.md、tasks.md 和 specs/,并结合项目里的已归档规范进行编码。它不再依赖一句临时提示词,而是依据完整上下文跨文件修改代码。

执行过程中,AI 会逐项处理 tasks.md,完成后把对应任务打勾:

- [x] 新增权限数据模型和迁移脚本
- [x] 实现角色与权限绑定接口
- [ ] 实现权限校验中间件

工程师在这个阶段的重点是代码评审,而不是接管所有实现细节。评审时要重点看:

  • 是否严格遵守 design.md 的设计约束。
  • 是否实现了 specs/ 中描述的行为。
  • 是否引入了项目没有使用的依赖。
  • 是否破坏现有接口兼容性。
  • 测试是否覆盖主要分支和异常场景。

/opsx:archive:让规范跟着代码一起演进

Merge Request(MR,合并请求)通过后,执行:

/opsx:archive add-user-permission

归档会把本次变更中的规范增量合并到 openspec/specs/,并清理 changes/ 下的草稿。之后 AI 再处理相关需求时,会自动把这些已归档规范作为系统现状来理解。

这一步解决的是“文档失效”问题。规范不再是上线前写一次的静态材料,而是每次变更完成后自动沉淀的项目记忆。

更完整的六步研发流

核心三步适合描述主干流程,但实际团队协同时通常还需要审查、验证和 MR 门禁。

flowchart TD
    A[创建变更 /opsx:propose] --> B[审查规划文件]
    B --> C{涉及前端页面?}
    C -- 是 --> D[补充原型图或页面链接到 design.md]
    C -- 否 --> E[执行 /opsx:apply]
    D --> E
    E --> F[运行测试与 /opsx:verify]
    F --> G[提交 MR]
    G --> H[人工审查代码 + 规划文档]
    H --> I{通过?}
    I -- 否 --> B
    I -- 是 --> J[/opsx:archive 归档规范]

前端页面开发要多一个原型审查节点。因为 proposal.md 和 design.md 能说明“做什么”和“怎么做”,但 UI(User Interface,用户界面)还需要回答“长什么样”。把原型截图、设计稿链接或交互说明补进 design.md,AI 生成页面时才有稳定参照。

让 AI 理解项目的三类上下文

流程本身只能保证动作顺序,不能保证 AI 了解项目。要让 AI 写出“符合当前项目”的代码,还需要三类上下文。

flowchart LR
    A[知识库] --> D[CodeBuddy 中的 AI]
    B[MCP 工具连接] --> D
    C[Skills 技能包] --> D
    D --> E[按项目规范生成代码]

可以用一句话概括:

  • 知识库让 AI 知道项目是什么。
  • MCP 让 AI 连接团队工具。
  • Skills 让 AI 掌握团队的标准做法。

知识库:AI 的项目记忆

知识可以分成两层。

知识来源适合存放什么特点
openspec/specs/接口契约、模块行为、数据模型、已实现功能和代码同流程演进,适合作为核心事实
外部知识库业务术语、架构决策历史、排障经验、复杂背景说明信息更丰富,但需要通过检索接入

常见知识分类如下:

类型示例
业务知识产品能力说明、核心业务流程、异常处理规则
架构知识模块依赖、部署拓扑、技术选型原因
项目规范目录结构、命名规则、接口返回格式
历史决策为什么不用某个方案、哪些限制不能突破
常见问题高频报错、排查步骤、回滚方案

openspec/specs/ 应该承担“系统当前行为”的唯一事实源角色。外部知识库适合补充背景,但不应该替代归档规范。

MCP:AI 的工具连接层

MCP(Model Context Protocol,模型上下文协议)可以让 AI 访问外部工具,减少人工复制粘贴。

MCP 类型连接目标AI 能做什么
需求平台 MCPTAPD、Jira 等查询需求、Bug、验收条件
文档平台 MCPiWiki、Confluence 等检索设计文档、架构说明
组件库 MCP前端组件库查询组件 API、使用规范和示例
CI/CD MCP构建和部署平台查看流水线状态、触发构建、读取失败日志
Git 仓库 MCP代码托管平台查询文件、分支、提交记录和版本信息

没有 MCP 时,工程师需要先打开需求平台,理解内容,再把信息转述给 AI。接入 MCP 后,AI 可以直接读取原始需求,减少信息损耗。

Skills:团队 SOP 的可执行封装

Skills 可以理解成 AI 可调用的技能包。一个 Skill 不只是提示词,它应该包含:

  • 什么时候触发。
  • 要按什么步骤执行。
  • 需要哪些脚本和模板。
  • 遇到失败如何降级。
  • 哪些文件不能提交。
  • 如何检查版本和更新。

一个高质量 Skill 的价值在于:团队经验写一次,所有人都能按同一套流程使用。

openspec-installer:一个生产级 Skill 的结构

新项目接入 OpenSpec 时,如果靠人工操作,通常要处理这些事情:

  1. 检查 Node.js 版本。
  2. 安装 OpenSpec CLI(Command Line Interface,命令行界面)。
  3. 在项目根目录执行初始化。
  4. 补全 openspec/config.yaml。
  5. 配置 MCP 服务。
  6. 安装项目需要的 Skills。
  7. 建立知识库目录。
  8. 检查 Skill 版本。

这些步骤适合封装成 openspec-installer。使用时可以提供一个团队内的安装入口,例如:

curl -fsSL https://skills.example.com/openspec-installer/install.sh | bash

地址应替换为团队真实的 Skill 仓库或分发服务。

一个完整的 Skill 目录可以这样组织:

openspec-installer/
├── SKILL.md                         # 核心 SOP,告诉 AI 何时触发、如何执行
├── version.json                     # 版本元数据和 changelog
├── scripts/
│   ├── INSTALL_MAC_LINUX.sh         # macOS/Linux 自动安装
│   ├── INSTALL_WINDOWS.ps1          # Windows 自动安装
│   ├── install_skills.sh            # 批量安装项目 Skills
│   ├── check-skill-updates.sh       # 检查 Skills 更新
│   └── self_update.sh               # Skill 自更新
└── templates/
    ├── mcp-servers.json             # MCP 配置模板
    ├── skill-bundle.json            # 默认 Skill 套装
    └── openspec-config-awareness.md # Bridge Rule 模板

这个结构说明,Skill 不是一段安装脚本,而是一套包含 SOP、脚本、配置模板和版本策略的小型系统。

SKILL.md:AI 的执行蓝图

SKILL.md 的 front matter 应该同时服务于人和 AI:人能看懂能力边界,AI 能根据描述判断什么时候该触发。

---
name: openspec-installer
description: 项目初始化工具。自动安装 OpenSpec 开发环境,配置 MCP 服务,批量安装 Skill,创建项目知识库目录,生成 OpenSpec 索引文件,检查 Skill 版本更新。当用户提到安装 OpenSpec、配置 OpenSpec 环境、初始化项目或 openspec init 时使用此 Skill。
version: 0.4.3
module: openspec-installer
tags: [openspec, setup, installation, initialization, mcp, skills]
---

SOP(Standard Operating Procedure,标准作业流程)可以拆成这些步骤:

步骤动作设计要求
Step 0检查 Skill 自身版本失败不阻塞安装
Step 1检测操作系统区分 macOS、Linux、Windows
Step 2-4安装 Node.js 和 OpenSpec CLI已安装则跳过,保持幂等
Step 5补全 config.yaml引导填写技术栈、业务背景和代码规范
Step 6a执行 openspec init生成 OpenSpec 基础目录
Step 6a-1生成 Bridge Rule让 AI 主动读取 config.yaml 规则
Step 6b配置 MCPToken 通过对话获取,避免脚本卡死
Step 6c-6g安装 Skills、知识库、版本检测批量处理,减少人工步骤
Step 7输出使用指引告知可用指令和后续动作

幂等性非常重要。安装中断后再次执行,脚本不应该重复污染环境,也不应该覆盖用户已经确认过的配置。

Skill 设计里的三个关键决策

Bridge Rule:打通 config.yaml 到 AI 的链路

OpenSpec 的 config.yaml 可以放项目规则,例如:

rules:
  archive:
    - 归档前必须确认 MR 已创建并通过评审
    - 归档后必须更新 INDEX.md 索引
  coding:
    - 新增接口必须包含单元测试
    - 禁止引入未在 package.json 中声明的依赖

但有一个容易忽视的问题:AI 不一定知道每次执行 OpenSpec 操作前都要读取这个文件。

解决办法是在安装时生成一个 Bridge Rule,放到 CodeBuddy 的规则目录中:

mkdir -p .codebuddy/rules

cp "$SKILL_DIR/templates/openspec-config-awareness.md" \
   ".codebuddy/rules/openspec-config-awareness.md"

Bridge Rule 不复制 config.yaml 里的具体规则,只告诉 AI:

---
alwaysApply: true
---

执行 OpenSpec 相关操作前,必须读取 openspec/config.yaml。
如果 config.yaml 中存在 rules 字段,需要把对应规则作为当前操作的约束。

这里的重点是 alwaysApply: true。如果让 AI 自行判断是否加载规则,复杂任务里可能漏掉。Bridge Rule 的内容很短,常驻上下文成本低,却能保证 config.yaml 成为稳定入口。

Token 交互:放在对话层,不放在 bash 脚本里

MCP 服务通常需要 PAT(Personal Access Token,个人访问令牌)。直觉上可以在 bash 脚本里写:

read -p "请输入 Token: " token

但很多 AI 执行命令的环境是非 TTY(终端交互设备),read -p 可能直接挂起,导致安装流程卡住。

更稳妥的方式是把 Token 交互写进 SKILL.md 的 SOP,让 AI 在对话中询问用户:

配置 MCP 服务需要个人访问令牌。
请前往团队 Token 申请页面创建 Token,并粘贴到当前对话。
如果暂时不配置,请回复“跳过”。

拿到 Token 后,再用脚本替换模板中的占位符:

import json
from pathlib import Path

token = "<user_token>"
template = json.loads(Path("templates/mcp-servers.json").read_text())

for server in template.get("mcpServers", {}).values():
    env = server.setdefault("env", {})
    for key, value in env.items():
        if value == "<your_token>":
            env[key] = token

Path(".mcp.json").write_text(
    json.dumps(template, indent=2, ensure_ascii=False)
)

在写入 .mcp.json 前,还应该无条件把它加入 .gitignore,防止 Token 被误提交:

touch .gitignore

if grep -qxF ".mcp.json" .gitignore; then
  echo "[INFO] .gitignore 已包含 .mcp.json"
else
  echo ".mcp.json" >> .gitignore
  echo "[INFO] 已将 .mcp.json 加入 .gitignore"
fi

即使用户选择跳过 Token 配置,这个安全步骤也应该执行,因为用户之后可能手动创建 .mcp.json。

版本检查:辅助功能不能阻塞核心安装

Skill 自身也会迭代。安装时可以检查远端版本,但版本检查失败不应该影响 OpenSpec 初始化。

一个可靠策略是三级降级:

flowchart TD
    A[检查远端版本] --> B{MCP 可用?}
    B -- 是 --> C[通过 MCP 读取 version.json]
    B -- 否 --> D{本地是 Git 仓库?}
    D -- 是 --> E[读取本地 version.json 或浅克隆查询]
    D -- 否 --> F[静默跳过版本检查]
    C --> G[比较版本并提示更新]
    E --> G
    F --> H[继续安装核心环境]
    G --> H

脚本可以通过环境变量接收 AI 使用 MCP 查询到的远端版本:

if [[ -n "${MCP_REMOTE_VERSION:-}" ]]; then
  remote_version="$MCP_REMOTE_VERSION"
  echo "[INFO] 使用 MCP 查询到的远端版本: $remote_version"
elif command -v git >/dev/null 2>&1; then
  echo "[INFO] 尝试通过 Git 查询版本"
  # git clone --depth 1 ... 或读取本地 version.json
else
  echo "[WARN] 无法检查远端版本,跳过"
fi

设计原则很简单:安装 OpenSpec 环境是核心目标,版本提示只是辅助能力。辅助能力失败时,流程继续往前走。

version.json:给人看,也给脚本用

version.json 不只是一个版本号。它可以同时记录仓库位置、Skill 路径和变更说明:

{
  "version": "0.4.3",
  "name": "openspec-installer",
  "description": "项目初始化工具,安装 OpenSpec 环境、配置 MCP 服务、批量安装 Skill",
  "release_date": "2026-03-20",
  "git_repo": "git@example.com:team/skills.git",
  "skill_path": "skills/common/openspec-installer",
  "changelog": {
    "0.4.3": "更新 Bridge Rule 为 alwaysApply: true,确保 OpenSpec 操作稳定读取 config.yaml",
    "0.4.2": "新增 OpenSpec 配置感知 Bridge Rule",
    "0.4.1": "优化版本同步和兜底 SOP",
    "0.4.0": "新增归档后索引自动更新规则",
    "0.3.0": "新增归档前 MR 检查规则",
    "0.2.0": "新增 MCP 配置与 Skill 批量安装"
  }
}

自更新脚本可以解析这个文件,比较本地和远端版本,并展示从当前版本到目标版本之间的变更内容。这样团队成员不需要手动追踪 Skill 更新,也能知道升级带来了什么。

skill-bundle.json:项目默认技能套装

不同项目需要的 Skills 不应该靠新人记忆。可以用一个清单文件描述默认安装项:

{
  "skills": [
    {
      "name": "atomic",
      "type": "local",
      "centerPath": "product/atomic"
    },
    {
      "name": "operation-template",
      "type": "local",
      "centerPath": "product/operation-template"
    },
    {
      "name": "bug-fix",
      "type": "local",
      "centerPath": "engineering/bug-fix"
    }
  ]
}

install_skills.sh 读取清单后批量安装。新项目初始化和新人接入时,只需要执行 installer,不需要再询问“这个项目还要装哪些技能包”。

上手配置流程

安装 OpenSpec 初始化 Skill

把安装地址替换成团队自己的 Skill 分发地址:

curl -fsSL https://skills.example.com/openspec-installer/install.sh | bash

让 CodeBuddy 初始化项目

在项目根目录打开 CodeBuddy CLI 或 IDE 插件,输入:

帮我初始化 OpenSpec 项目

AI 应完成这些动作:

  1. 检测 Node.js 环境。
  2. 安装 @fission-ai/openspec@latest。
  3. 执行 openspec init。
  4. 创建 openspec/ 目录。
  5. 引导补全 config.yaml。
  6. 配置 MCP 和默认 Skills。

补全 config.yaml

config.yaml 是 AI 编码时的重要约束,应认真填写。

project:
  name: order-service
  description: 电商订单管理系统
  stack:
    language: TypeScript
    framework: NestJS
    database: PostgreSQL
  style:
    lint: ESLint Standard
    test: Jest

rules:
  coding:
    - 新增接口必须包含单元测试
    - Controller 只做参数校验和调用编排,业务逻辑放在 Service
    - 禁止直接拼接 SQL
  archive:
    - 归档前必须确认 MR 已通过评审
    - 归档后必须更新模块索引

配置越清楚,AI 后续生成代码时越不容易偏离项目习惯。

CLI 和 IDE 的分工

CodeBuddy CLI 和 IDE 插件适合承担不同职责。

工具适合场景
CodeBuddy CLI执行 /opsx:propose、/opsx:apply、/opsx:archive,处理跨目录、跨仓库任务
CodeBuddy IDE审查和微调 proposal.md、design.md,查看 diff,处理 Git 冲突,优化局部代码

推荐做法是:CLI 负责主流程,IDE 负责审查和局部调整。

前后端多项目联动

如果一个需求同时涉及前端和后端,可以在父目录启动 CodeBuddy CLI,让 AI 同时看到多个仓库。

my-fullstack-workspace/
├── web-frontend/
│   ├── openspec/
│   └── src/
└── api-backend/
    ├── openspec/
    └── src/

在父目录执行:

/opsx:propose 新增订单列表查询能力:后端提供分页查询 API,前端提供筛选表单和表格展示

AI 可以在一次规划中同时拆出后端 API、前端调用、数据类型、测试和联调任务。需要注意的是,跨仓库变更更容易失控,tasks.md 更要保持小粒度,必要时拆成后端 Change 和前端 Change。

扩展指令速查

核心指令足够覆盖大多数场景。复杂需求可以启用扩展工作流:

openspec config profile
# 选择 Workflows only,并启用 new、ff、continue、verify 等扩展命令
指令作用适用场景
/opsx:explore只讨论需求和方案,不改代码需求还不清楚,需要先探索
/opsx:new创建空变更脚手架想手动控制文件生成节奏
/opsx:continue分阶段生成 Proposal、Design、Tasks复杂需求需要逐步审查
/opsx:ff快速补全规划文件需求明确,想加快规划
/opsx:verify对照 design.md 和 specs/ 做 AI 审计编码完成后自查
/opsx:propose生成完整变更规划常规需求入口
/opsx:apply按任务清单执行编码规划审查通过后
/opsx:archive合并规范增量到 specs/MR 通过后

/opsx:explore 应只用于讨论和沉淀文档,不应该修改代码。它适合需求模糊、边界不清或技术方案需要比较时使用。

团队协同规则

原子化变更

规则说明
一个 Change 只解决一个明确需求或 Bug避免多个目标互相干扰
tasks.md 控制在 15 项以内降低 AI 遗漏上下文的概率
大需求拆小让代码评审和回滚都可控
每项任务都能验证避免出现“完成某某模块”这种过大的任务

规范即文档

openspec/specs/ 应作为系统行为的活文档。绕过 OpenSpec 直接手写大量核心逻辑,会导致规范和代码重新脱节。

要求原因
核心业务变更必须走 propose → apply → archive保证需求、设计、代码和规范同步
小修小补也要判断是否影响规范影响外部行为时必须更新 spec
归档前检查 MR 状态避免未合并代码提前污染主规范
归档后更新索引让后续检索更稳定

MR 审查要同时看代码和规划文档

AI Native 研发里的代码评审不能只看 diff,还要对照规划文件。

审查维度对照文件要看什么
需求覆盖proposal.md、specs/是否实现了声明的用户行为
技术方案design.md是否遵守架构边界和接口设计
任务完成度tasks.md是否每项任务都有对应实现和验证
代码质量diff、测试结果是否有重复逻辑、异常遗漏、安全风险
文档同步openspec/specs/归档后的规范是否能反映系统现状

常见坑和处理方式

坑表现处理方式
直接让 AI 写大功能生成代码多但不可控,返工严重必须先 /opsx:propose,审查规划后再 /opsx:apply
Change 太大AI 忘记前面约束,任务完成度不稳定拆分需求,控制 tasks.md 项数
config.yaml 太空AI 写出通用代码,不像当前项目补充技术栈、目录规范、测试要求和业务背景
MCP Token 泄漏风险.mcp.json 被误提交初始化时自动加入 .gitignore
前端缺少原型UI 反复返工在 design.md 中补原型图、链接或交互说明
归档过早规范记录了未合并能力archive 前强制检查 MR 状态
Skill 更新不可见团队成员使用不同版本 SOP用 version.json 和自更新脚本统一版本

一套可落地的判断标准

AI Native 研发是否真正建立起来,可以用几个问题检查:

问题合格状态
AI 编码前是否有可审查规划?每个核心变更都有 proposal.md、design.md、tasks.md 和规范增量
AI 是否能读取项目规则?config.yaml 内容完整,并通过 Bridge Rule 稳定加载
工具上下文是否打通?需求、文档、组件库、CI/CD 能通过 MCP 查询
团队 SOP 是否可复用?常见流程被封装成 Skills,而不是靠口口相传
文档是否跟随代码演进?MR 通过后执行 /opsx:archive,规范进入 openspec/specs/
人工审查是否仍然存在?人负责需求边界、架构决策、代码评审和发布放行

AI Native 研发的关键不是“让 AI 多写一点代码”,而是建立一套机器能执行、人能审查、团队能复用的工程流程。OpenSpec 提供规范载体,CodeBuddy 提供执行入口,MCP 打通工具上下文,Skills 固化团队经验。四者组合起来,AI 才能从临时打字员变成稳定的研发执行者。