乐于分享
好东西不私藏

AI编码工程化实践(1):搭建AI开发工作流

AI编码工程化实践(1):搭建AI开发工作流

1. 引言

 用 AI 写代码的人越来越多,但真把它放进生产级项目里,三个老问题反复出现:

  • 需求理解偏差。你让 AI 加个功能,它写出来后发现跟你想的不是一回事,返工。

  • 执行过程黑盒。AI 写了什么、怎么写的、测了没有,你很难把控。

  • 没有真实环境验证。代码看起来对了,但页面渲染、接口连通、部署后表现,AI 自己验证不了。

    说到底,Vibe Coding 是”提示即祈祷”(prompt-and-pray),你把需求扔给 AI,然后祈祷它别出错,显然这样是无法保证产出质量的。最近行业里形成了一个更成熟的概念:Agentic Engineering(智能体工程),核心思路是——人负责定义目标、约束条件和质量标准,AI 作为自主智能体在结构化流程中执行规划、编码、测试和迭代,每个关键节点都有人工审核。它不是让 AI 随意发挥,而是把 AI 的能力嵌入到一套有纪律的工程体系里。

   最近一周,我用 Claude Code + 自定义 Skill/Command/MCP 体系 做了一次实践:把从需求到发布的所有环节串到一个终端会话里。AI 全程保持对当前任务的理解,在预设的流程框架内自主执行;我只需要在关键节点做决策——审批计划、确认部署、审查代码。回过头看,这套东西就是 Agentic Engineering 在开发场景的一个落地样本。

    AI落地到生产环境中时工程体系才是核心资产,而不是某个模型或 prompt。Skill 每天在更新,大模型每天在进化,但工程体系的价值是需要持续积累的。


2. 实践方案

   对比了市面上主流的工具后,我选用了Claude Code + OpenSpec + Superpowers + gstack的方案。OpenSpec 管需求,Superpowers 管写代码,gstack 管验证和交付。

工具 定位 解决什么问题
OpenSpec 规范驱动开发(需求层) 让 AI 和人在文字层面先达成共识,减少返工
Superpowers AI 编码代理方法论(执行层) 把 AI 写代码的过程标准化、可观测、可审查
gstack 执行工具封装(验证层) 浏览器、QA、发布、监控,一键调用

2.1 为什么选择这3个工具

  • OpenSpec:轻量规范层,锁定意图,管理变更

    OpenSpec 是做一层轻量的规范管理——通过 /opsx:propose(创建提案)→ /opsx:apply(执行)→ /opsx:archive(归档)的流程,让规范成为活文档。

    核心是变更驱动的工作流。每个功能变更是独立目录,包含提案、设计、任务和规范增量(Spec Delta)。

    跟Spec-Kit比,没有严格的阶段门,Spec-Kit 太”重”,落地成本高,而OpenSpec 可以随时调整提案,灵活性更高,更适用于快速迭代的场景。

  • Superpowers:不是规范驱动,而是通过一组可组合的”技能”来约束代理行为。是技能驱动的工作流,Agent 检测到适用场景就通过 Hook 自动激活相关技能,内嵌代码工程方法论(TDD、调试、审查等),是”怎么写好代码”的纪律框架。

    核心技能包括:test-driven-development(强制 TDD)、systematic-debugging(系统化调试)、brainstorming(苏格拉底式设计细化)、subagent-driven-development(子代理并发执行)等。

  • gstack:是一套 Claude Code 技能包(23+ 个角色化技能),将单个 AI 助手转变为一个虚拟工程团队。通过角色化和阶段化组织,提供从产品思考到部署监控的全栈工具链。它的核心价值在于:

  1. a. 覆盖 Superpowers 完全没有的领域(浏览器测试、安全审计、部署运维)
  2. b. 角色化审查提供多维度视角
  3. c. 自动化交付链大幅减少手动操作

有个细节值得说:gstack 的/plan-ceo-review和 Superpowers 的brainstorming看起来都做”需求分析”,但视角完全不同。

从源码看,Superpowers 的 brainstorming来源:skills/brainstorming/SKILL.md)是一个结构化的需求精炼流程:先探索项目上下文 → 一次问一个问题 → 提出 2-3 种方案 → 分段展示设计让用户审批 → 写设计文档 → 转入 writing-plans。它关注的是这个功能怎么实现。

gstack 的 /office-hours(来源:docs/skills.md的 office-hours 章节)是一个产品方向诊断:六个强制问题重构产品认知、挑战你的前提假设、生成实施替代方案。它关注的是这个产品值不值得做。

一个是工程视角的怎么做,一个是商业视角的做不做。视角不同,不冲突,反而互补。

2.2 这三个工具分别做什么

OpenSpec:把需求写成机器可理解的规范

OpenSpec 的核心是双文件夹模型

openspec/  specs/     # 当前系统的事实来源(规范文件)  changes/   # 每次变更的完整提案

每份变更包含三个文件:

  • proposal.md —— 为什么要做(背景、目标、成功标准)

  • design.md —— 技术方案(架构决策、接口设计、数据流)

  • tasks.md —— 实施清单(可执行的具体任务)

这三个文件本身就是 AI 和人之间的”契约”。AI 在动手写代码之前,先在这三份文档里和你对齐。据实测对比,使用 OpenSpec 后相同需求下的 Token 消耗降低 30%-50%,返工率下降 60% 以上。


Superpowers:强制流程约束 AI 的执行过程

Superpowers 不只是一个插件,而是一套不可跳过的 7 步工作流

步骤 做什么 为什么重要
1. brainstorming 苏格拉底式提问,澄清任务细节 在写代码前暴露隐藏假设
2. git worktree 创建隔离分支,保护主分支 避免污染主干
3. writing-plans 拆解为 2-5 分钟可执行小任务 把大需求拆到 AI 能稳定完成的粒度
4. subagent 执行 每个任务派独立子代理 隔离上下文,减少干扰
5. TDD 循环 RED → GREEN → REFACTOR 每段代码都有测试覆盖
6. 代码审查 两阶段:规范合规 + 代码质量 人在关键环节把关
7. 分支收尾 验证测试、合并决策 干净收尾,不留债务

关键是每一步都不可跳过。这不是官僚主义,而是生产环境的底线。


gstack:把开发者每天用的工具封装成一键命令

gstack 不做决策,只帮你干活:

  • /browse —— 浏览器截图、元素检查、用户流验证

  • /qa —— 端到端 QA 测试

  • /ship —— 发版流程(检测 base、跑测试、review diff、写 CHANGELOG)

  • /land-and-deploy —— 合并 PR、等 CI、验证生产环境

  • /canary —— 上线后监控错误和性能回归

  • /careful —— 危险命令拦截(rm -rf、DROP TABLE、force-push 等)

没有 gstack,Superpowers 写完了代码没法验证”页面渲染对不对”。这是绝大多数”我以为修好了”的根源。

2.3 三者如何配合:数据流与分工边界

需求输入   │   ▼┌──────────────┐     proposal.md│   OpenSpec   │ ──→ design.md│  (需求对齐)   │     tasks.md└──────────────┘   │   ▼ tasks.md┌──────────────┐     brainstorming → worktree → 小任务│  Superpowers │ ──→ subagent 执行 → TDD → 代码审查│  (规范执行)   │     分支收尾└──────────────┘   │   ▼ 代码产出┌──────────────┐     /browse 截图验证│    gstack    │ ──→ /qa 端到端测试│  (验证交付)   │     /ship + /land-and-deploy + /canary└──────────────┘   │   ▼生产上线

分工边界

  • OpenSpec 只产出规范文档,不写代码。

  • Superpowers 只按规范执行编码流程,不直接操作浏览器或部署。

  • gstack 只做验证和交付动作,不参与需求分析或架构决策。

三者之间通过文件和命令传递信息,不是通过共享内存或隐式状态。


3. 完整工作流:从需求到上线

阶段 1:需求对齐(OpenSpec)

  1. 在 openspec/changes/ 下新建变更目录

  2. 写 proposal.md:为什么要做、不做会怎样、成功标准是什么

  3. 写 design.md:技术方案、接口契约、数据模型

  4. 写 tasks.md:拆成具体可执行的任务列表

阶段 2:编码执行(Superpowers)

  1. 以 tasks.md 为输入,启动 brainstorming

  2. AI 用苏格拉底式提问澄清模糊点(你确认要改这个接口吗?影响范围想清楚了吗?)

  3. 创建 git worktree 隔离分支

  4. 拆解为 2-5 分钟粒度的小任务

  5. 子代理并行/串行执行(按依赖关系判断)

  6. 每个任务走 TDD:先写测试,再写实现,最后重构

  7. 两阶段代码审查:先过规范合规检查,再过代码质量审查

阶段 3:验证交付(gstack)

  1. /browse —— 打开页面,截图验证渲染效果

  2. /qa —— 跑端到端测试,确认核心链路正常

  3. /ship —— 发版:合并 base、跑测试、review diff、写 CHANGELOG

  4. /land-and-deploy —— 合并 PR、等 CI、验证生产

  5. /canary —— 监控上线后的错误率和性能指标

关键原则:没有测试/截图/QA 报告,不算完成。


4. 安装与初始化

4.1 OpenSpec安装

# 全局安装 OpenSpecnpm install -g @fission-ai/openspec@latest#验证安装openspec --version# 查看可用命令openspec --help
4.2 gstack安装
gstack 不在插件市场,直接从仓库安装:# 克隆 gstack 到 Claude Code skills 目录并运行安装脚本git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git \~/.claude/skills/gstack gstack 支持无前缀模式(/qa)和前缀模式(/gstack-qa)。如果你同时装了其他也有 /review 命令的插件,建议用前缀模式,彻底避免命名冲突。:cd .claude/skills/gstack/ && ./setup --prefixsetup 脚本会把 28 个 skill 符号链接到 `~/.claude/skills/` 顶层。之后你在对话里用 `/gstack-browse`、`/gstack-qa`、`/gstack-ship` 就能触发。setup 依赖 bun,没装的话先装:curl -fsSL https://bun.sh/install | bash安装完 bun 必须重启终端,否则系统识别不到新安装的命令。验证安装是否成功在 Claude Code 中输入/gstack**注意**:macOS 上 bun 编译的单文件二进制可能因代码签名问题被系统 kill如果遇到这种情况,将 `browse/dist/browse` 替换为 wrapper 脚本,改为通过 `bun run browse/src/cli.ts` 执行即可。
4.3 Superpowers安装
在 Claude Code 中安装superpowers
/plugin install superpowers@claude-plugins-official
5. 配置要点:CLAUDE.md 的核心规则

    要让这套工作流真正跑起来,需要在 ~/.claude/CLAUDE.md 中写明裁决规则,告诉 Claude 遇到什么情况该走哪个 skill。

## 1. Claude Code 配置:OpenSpec + superpowers + gstack主干由三个插件组成:- **OpenSpec** —— 规范与需求层(proposal / design / tasks)- **superpowers** —— 思考与流程层(plan / brainstorm / debug / TDD / review / verify)- **gstack** —— 执行与外部世界层(browser / QA / ship / deploy / canary / 护栏)类比:OpenSpec 是蓝图,superpowers 是大脑,gstack 是手脚。### 核心原则1. **规范先行**:任何需求变更必须先过 OpenSpec,调用/opsx:propose,产出 proposal.md + design.md + tasks.md,再动手写代码。2. **流程归 superpowers**:brainstorm、plan、debug、TDD、verify、code review。默认走 superpowers,不走 OMC / feature-dev 等同名第三方 skill。3. **执行归 gstack**:浏览器、QA、ship、deploy、canary、retro 走 gstack。4. **独立 reviewer 通道**:verification 和 code-review 分两个 pass,不能在同一上下文里合并。5. **证据优先**:没有测试/截图/QA 报告不算完成。6. **歧义先 brainstorm**:任何创造性工作前先调用 brainstorming。7. **最短路径优先**:能用一个 skill 解决的,不升级为完整闭环。### OpenSpec 规范工作流#### 双文件夹模型```openspec/  specs/     # 当前系统的事实来源(规范文件)  changes/   # 每次变更的完整提案```#### 每份变更必须包含三个文件`proposal.md` —— 为什么要做(背景、目标、成功标准、不做会怎样)`design.md` —— 技术方案(架构决策、接口设计、数据流、依赖关系)`tasks.md` —— 实施清单(可执行的具体任务,作为 Superpowers 的输入)#### 职责边界OpenSpec **只产出规范文档,不写代码**Superpowers **只按 tasks.md 执行编码流程**,不修改 OpenSpec 规范。gstack **只做验证和交付动作**,不参与需求分析或架构决策。三者之间通过**文件和命令**传递信息,不通过共享内存或隐式状态。#### 规范与执行的衔接1. 需求输入 → OpenSpec 输出 `tasks.md`2. `tasks.md` 作为 Superpowers 的输入启动 brainstorming3. 编码执行过程中如发现规范遗漏或错误,**回退到 OpenSpec 更新 design.md / tasks.md**,再继续执行### 任务分流#### 只读任务分析、解释、架构说明、代码阅读 —— 直接处理。真实 bug 排查但尚未修改 —— 用 systematic-debugging。#### 轻量任务单文件或小范围修改、明确 bug 修复、配置/文案调整、小测试补充。跳过完整 brainstorming / writing-plans / worktrees / 重 review 链。直接实现 + 定向验证 + 必要时 /browse 看效果。#### 中任务多文件但边界清晰,新功能或明确的重构。OpenSpec  /opsx:propose(必须首先调用)→ 简短 brainstorming + 短 writing-plans + 实现 + /browse 或 /qa + verification。#### 大任务跨模块、共享逻辑、新架构、公共 API 变更。完整闭环:OpenSpec  /opsx:propose(必须首先调用)→ brainstorming → writing-plans → /plan-*-review  → executing-plans + worktrees + TDD → /qa → verification  → code-review → finishing-branch → /ship → /land-and-deploy → /canary### 浏览器规则/browse 是唯一的浏览器入口。禁止使用 mcp__claude-in-chrome__*和 mcp__computer-use__* 来操作浏览器。### Subagent 策略一定派子代理:1. 用户明说 "并行 / parallel / dispatch"2. 2-4 个边界清晰、独立验证、无共享状态的子任务3. 纯只读的多目标研究一定不派:1. 任务有顺序依赖2. 多个子任务改同一文件 / contract / shared types3. package.json / lockfile / 根配置 / CI / schema / 总入口 默认串行4. 单一目标的 bug 修复5. 根因未明的调试### 安全护栏1. rm -rf / DROP TABLE / force-push / git reset --hard / kubectl delete必须先过 /careful 或 /guard2. 调试敏感模块时用 /freeze  限定可改范围3. /ship 和 /land-and-deploy 必须用户明确确认4. 密钥/凭证/API Key 不得硬编码5. 数据库访问用参数化查询6. 不用不可信输入拼接 shell 命令或 SQL### Change Delivery Gate声明完成、准备 commit / push / PR 之前必须满足:1. 已完成相关验证,并如实报告结果2. 已过对应质量门禁(review / verification)3. 关键验证无法执行时必须明确说明原因4. 禁止虚构命令输出5. 没有验证证据,不得声称"通过" / "完成"### 不要重复造轮子1. 需求分析先用/opsx:propose、proposal / design / tasks 文档编写2. 规范评审、技术方案确认3. tasks.md 作为 Superpowers 的唯一输入只走 superpowers:1. plan / brainstorming / writing-plans / executing-plans2. TDD / debugging / verification3. code review / subagent / worktrees / 分支收尾只走 gstack:1. 浏览器、QA、ship、deploy、canary、retro、document-release2. 多视角 plan review (CEO / Eng / Design)3. 危险命令护栏 / freeze 沙箱4. 安全审计 / design-consultation / investigate

6. 实战案例

    下篇我将开发一个孩子课外班作业管理系统从0到1实战一下。系统分为家长账号和孩子账号,分别实现不同的功能。
角色
功能
家长
1、录入孩子每周课外班课程情况,信息包括学科类别、课程名称、上课时间、每节课对应的作业及作业截止时间
2、录入孩子每天放学时间
3、录入每个作业的空白题目并自动识别,每道题单独分割出一个图片
4、录入每个题目的答案
5、设定每天孩子要完成的作业(类似在日历中建一个事项)
孩子和家长
作业管理功能:
1、在日历中查看每天作业计划,按计划写作业
2、每写完一项作业就提交,系统根据家长录入的答案自动批改作业(前期先手动录入答案,后续考虑自动识别和批改)
3、记录作业提交状态,若在规定时间内提交记录为已完成并显示绿色,若超时提交记录为超时完成并显示黄色,若未提交记录为未完成并显示红色
4、自动统计每月、每周孩子作业完成情况
错题本功能:
1、自动记录孩子错题,并根据艾宾浩斯遗忘曲线每天弹出需要复习的习题列表,每天复习10道题。
2、记录每次错题答案是否正确,对于连续3次都答对的题目自动剔除出错题本