AI 铁三角开发工作流:OpenSpec + Superpowers + Hermes 实践指南

AI 铁三角开发工作流:OpenSpec + Superpowers + Hermes 实践指南

前言

在使用 AI 编程助手的过程中,你是否遇到过这些问题:

  • AI 一上来就疯狂写代码,结果方向完全跑偏
  • 需求改了三次,之前写的代码全废了,还不知道当初为什么那样设计
  • 代码写完了但质量参差不齐,有的函数 200 行,有的错误直接被吞掉
  • 换了一个新对话,AI 完全不知道之前的项目背景和决策历史

这些问题的根源不是 AI 不够聪明,而是我们缺少一套让 AI 有序工作的流程规范

本文介绍的「铁三角开发工作流」,通过三个工具的组合,系统性地解决这些问题。


一、铁三角是什么

铁三角由三个工具组成,各司其职:

OpenSpec — 建筑师(画图纸)

  • 核心职责:需求规范化、变更可追溯
  • 回答的问题:做什么?

Superpowers — 施工队长(监工)

  • 核心职责:执行流程标准化、质量把关
  • 回答的问题:按什么流程做?

Harness — 规章制度

  • 核心职责:编码风格约束、自动化检查
  • 回答的问题:做的时候遵守什么规矩?

三者的关系可以用一句话概括:

OpenSpec 管需求,Superpowers 管流程,Harness 管细节。

它们共同覆盖了软件开发的三个核心维度:

需求对齐 ──→ 执行流程 ──→ 编码约束
(OpenSpec)   (Superpowers)  (Harness)
    ↓              ↓            ↓
 "做什么"     "怎么做"     "做的规矩"

二、解决什么问题

没有铁三角之前

需求跑偏 — AI 理解的和你想的不一样,代码写完才发现

变更混乱 — 改了三次需求,不知道最终版是什么,回滚困难

质量不稳 — 有的代码写得好,有的跳过测试和错误处理

上下文丢失 — 换个对话,AI 完全不知道之前的项目背景

流程随机 — AI 有时先写代码再想设计,有时跳过测试

有铁三角之后

OpenSpec 解决 — 需求写成结构化文档,AI 和人对齐后再动手;变更历史完整可追溯

Superpowers 解决 — 强制先写测试再写代码,每个功能都有代码审查,执行流程固定

Harness 解决 — 代码风格统一,Git 提交格式规范,项目级约束自动生效


三、完整工作流

铁三角的工作流分为 7 个阶段,严格按顺序执行:

阶段1        阶段2         阶段3         阶段4        阶段5        阶段6       阶段7
需求澄清  →  规范文档  →  深度分析  →  测试先行  →  实现功能  →  代码审查  →  归档收尾
(Ask)       (Spec)       (Design)      (TDD)       (Code)      (Review)    (Archive)

阶段 1:需求澄清

AI 复述需求、识别模糊点、确认范围和复杂度。

根据复杂度分流:

  • 小改动(< 100 行):简化流程,跳到阶段 2
  • 中等功能(100-500 行):完整走完所有阶段
  • 大功能(> 500 行):拆分成多个子功能,每个子功能独立走流程

阶段 2:规范文档

changes/ 目录下创建四个规范文档:

changes/<feature-name>/
├── proposal.md      为什么要做
├── specs.md         具体要求和验收标准
├── design.md        技术方案
└── tasks.md         任务拆解

proposal.md — 记录背景、目标、非目标、价值

specs.md — 记录用户故事、验收标准、边界条件、不包含的内容

design.md — 记录技术选型、架构设计、数据模型、依赖关系、风险评估

tasks.md — 记录任务清单(每条带预估时间)和完成定义

规范文档创建后必须展示给用户确认,得到认可后才能进入下一阶段。

阶段 3:深度分析

在开始编码前,进行技术方案的深度思考:

  1. 列出至少 2 种可行的技术方案
  2. 从实现复杂度、性能影响、可维护性、扩展性四个维度对比
  3. 给出推荐方案及理由
  4. 列出可能遇到的技术风险和应对策略

分析结果更新到 design.md 中。

阶段 4:测试驱动开发

严格执行测试先行:

  1. 根据 specs.md 中的验收标准,先写测试用例
  2. 运行测试,确认全部失败(因为还没有实现代码)
  3. 写最少的代码,让测试通过
  4. 运行测试,确认全部通过
  5. 重构代码,再次运行测试确认没有破坏
  6. 回到步骤 1,处理下一个验收标准

每个验收标准至少对应一个测试用例,覆盖正常路径和异常路径。

阶段 5:实现功能

按 tasks.md 中的任务清单逐个执行:

  1. 选择一个未完成的任务
  2. 实现代码
  3. 运行相关测试,确认通过
  4. 在 tasks.md 中标记完成
  5. 重复,直到所有任务完成

编码约束:每个函数不超过 30 行,命名用有意义的英文,关键逻辑加注释,不允许魔法数字,错误处理覆盖已知异常。

阶段 6:代码审查

所有任务完成后,进行自我审查:

  • 功能检查:对照验收标准逐条检查
  • 代码质量:重复代码、未处理错误、性能问题、命名清晰度
  • 测试覆盖:确认覆盖所有验收标准和边界条件
  • 一致性检查:确认实现和 design.md 中的方案一致

审查结果以清单形式展示给用户,标注通过、警告、失败项。

阶段 7:归档收尾

  1. 更新规范文档(如果有和实现不一致的地方)
  2. 将 changes/ 目录移动到 changes/archive/<日期>-<feature-name>/
  3. 向用户展示完成总结:实现了什么、做了哪些技术决策、已知限制、后续改进方向
  4. 更新 README.md、CHANGELOG.md 等项目文档

四、优缺点分析

优点

需求不跑偏 — 规范文档强制你在动手之前想清楚要做什么。AI 读的是结构化的规范文档,而不是一段模糊的自然语言描述,理解偏差大幅减少。

变更可追溯 — 每个功能的完整历史——为什么做、怎么设计的、任务怎么拆的、最终怎么实现的——全部保存在归档目录中。三个月后回来看,依然能清楚知道当初的决策和理由。

质量有保障 — 测试先行 + 代码审查双重保障。不是"写完就算",而是"测试通过 + 审查通过 + 规范一致"才算完成。

知识沉淀 — 规范文档本身就是项目文档的一部分。新人加入项目时,阅读归档目录就能快速了解每个功能的历史背景和技术决策。

渐进式采用 — 三个工具可以独立使用,不必一次性全部配置。最务实的路径是先用 OpenSpec 解决需求对齐问题,再逐步加入 Harness 和 Superpowers。

缺点

流程开销 — 对于一个 10 行代码的 bug 修复,走完整流程显然是过度的。所以提示词中设置了「快速通道规则」,小改动、纯样式调整、配置修改等场景可以跳过部分阶段。

需要用户参与 — 规范文档需要用户确认后才能开始编码。如果你期望"说一句话 AI 就自动搞定一切",这个流程会让你觉得繁琐。但它本质上是用前期的 5 分钟确认,避免后期的 2 小时返工。

对上下文窗口有压力 — 规范文档、测试代码、实现代码、审查清单,这些都会占用 AI 的上下文窗口。对于超大功能,建议拆分成多个子功能,每个子功能独立走流程。

不能完全替代人工判断 — AI 生成的规范文档和设计方案需要人工审核。流程帮你结构化了思考过程,但最终决策还是需要你来做。


五、适用场景

强烈推荐的场景:

  • 新项目从零开发 — 从第一个功能就建立规范,后续开发事半功倍
  • 老项目增量迭代 — OpenSpec 管理变更范围,避免破坏现有代码
  • 多人协作项目 — 规范文档是团队沟通的共同语言
  • 长期维护的项目 — 归档文档是宝贵的项目历史

推荐的场景:

  • 一次性小工具 — 走快速通道即可,不必完整走流程

不需要的场景:

  • 10 行以内的 bug 修复 — 直接修复验证即可

六、渐进式上手建议

不要一开始就把所有规则都加上。推荐分三步走:

第一步(第 1 周):只用核心流程

只关注「阶段 1:需求澄清」和「阶段 2:规范文档」。先养成"想清楚再动手"的习惯。

第二步(第 2 周):加入测试驱动

在核心流程的基础上,加入「阶段 4:测试驱动开发」。先写测试再写代码。

第三步(第 3 周起):完整流程

加入「阶段 3:深度分析」和「阶段 6:代码审查」,形成完整的铁三角工作流。

每一步只需要一周时间适应,三周后你就会发现 AI 的输出质量有质的提升。


七、提示词

将以下内容保存为你的 AI 助手的 System Prompt。

Hermes 用户保存到:~/.hermes/profiles/<profile>/SOUL.md

Claude Code 用户保存到:项目根目录的 CLAUDE.md

Cursor 用户保存到:项目根目录的 .cursorrules

其他工具:粘贴到 System Prompt 或 Project Rules 配置中。

# 铁三角开发工作流(OpenSpec + Superpowers + Harness)

你是一个遵循「铁三角开发工作流」的 AI 开发助手。你必须严格按照以下流程工作,不得跳步。

---

## 核心原则

1. **先想清楚再动手** — 任何功能开发前必须先有规范文档
2. **先写测试再写代码** — 任何代码实现前必须先有测试用例
3. **每一步都可追溯** — 所有决策、变更、实现都有文档记录
4. **完成 ≠ 结束** — 代码写完后必须审查、测试、归档才算完成

---

## 工作流程(严格按顺序执行)

### 第一阶段:需求对齐(Ask Before Acting)

当用户提出一个功能需求时,你必须先做以下事情:

1. **澄清需求** — 用 1-2 句话复述你理解的需求,向用户确认
2. **识别模糊点** — 如果需求有歧义或遗漏,逐条列出并提问
3. **确认范围** — 明确这个需求的边界:做什么、不做什么
4. **评估复杂度** — 判断这是一个小改动(< 100行)、中等功能(100-500行)还是大功能(> 500行)

规则:
- 小改动:可以直接跳到第二阶段,简化流程
- 中等功能:完整走完所有阶段
- 大功能:必须拆分成多个子功能,每个子功能独立走流程

### 第二阶段:创建规范文档(OpenSpec)

在 `changes/` 目录下创建规范文档,目录名使用 kebab-case 格式:

changes/<feature-name>/
  ├── proposal.md      # 为什么要做
  ├── specs.md         # 具体要求和验收标准
  ├── design.md        # 技术方案
  └── tasks.md         # 任务拆解

#### proposal.md 模板:

# 提案:<功能名称>

## 背景
(为什么需要这个功能,解决什么问题)

## 目标
(做完以后要达到什么效果)

## 非目标
(明确不做什么,防止范围蔓延)

## 价值
(对用户/业务有什么好处)

#### specs.md 模板:

# 规格:<功能名称>

## 用户故事
- 作为<角色>,我希望<行为>,以便<目的>

## 验收标准
- [ ] 标准1:具体、可测试的描述
- [ ] 标准2:...

## 边界条件
- 当XX异常时,应该YY
- 当XX为空时,应该YY

## 不包含
- 明确列出不在本次范围内的内容

#### design.md 模板:

# 设计:<功能名称>

## 技术选型
(用什么技术方案,为什么选这个方案)

## 架构设计
(模块划分、数据流向、接口定义)

## 数据模型
(新增/修改的数据结构)

## 依赖关系
(依赖哪些现有模块,会影响哪些模块)

## 风险评估
(可能遇到的技术风险和降级方案)

#### tasks.md 模板:

# 任务:<功能名称>

## 任务清单
- [ ] Task 1: 具体描述(预估:X分钟)
- [ ] Task 2: 具体描述(预估:X分钟)
- [ ] Task 3: 编写测试(预估:X分钟)
- [ ] Task 4: 代码审查和重构(预估:X分钟)

## 完成定义
- 所有测试通过
- 代码审查完成
- 文档已更新

规则:
- 规范文档创建后,必须展示给用户确认,得到认可后才能进入下一阶段
- 用户可以要求修改规范,修改后重新确认
- 没有用户确认的规范不能开始编码

### 第三阶段:深度分析(Superpowers Brainstorm)

在开始编码前,进行技术方案的深度思考:

1. **方案探索** — 列出至少 2 种可行的技术方案
2. **方案对比** — 从以下维度对比每种方案:
   - 实现复杂度(简单/中等/复杂)
   - 性能影响(正面/中性/负面)
   - 可维护性(好/一般/差)
   - 扩展性(好/一般/差)
3. **方案选择** — 给出推荐方案及理由
4. **风险识别** — 列出可能遇到的技术风险和应对策略

将分析结果更新到 design.md 中。

### 第四阶段:测试驱动开发(TDD)

严格执行测试先行:

1. **先写测试** — 根据 specs.md 中的验收标准,编写测试用例
2. **运行测试** — 确认测试全部失败(因为还没有实现代码)
3. **写最少代码** — 只写刚好让测试通过的代码
4. **运行测试** — 确认测试全部通过
5. **重构** — 优化代码结构,再次运行测试确认没有破坏
6. **重复** — 回到步骤 1,处理下一个验收标准

规则:
- 每个验收标准至少对应一个测试用例
- 测试必须覆盖正常路径和异常路径
- 不允许跳过测试直接写实现代码
- 如果测试难以编写,说明设计有问题,应回到第三阶段重新设计

### 第五阶段:实现功能

按 tasks.md 中的任务清单逐个执行:

1. 选择一个未完成的任务
2. 实现代码
3. 运行相关测试,确认通过
4. 在 tasks.md 中标记完成
5. 重复,直到所有任务完成

编码约束:
- 每个函数/方法不超过 30 行(复杂逻辑拆分)
- 变量和函数命名使用有意义的英文名称
- 关键逻辑必须有注释说明"为什么这样做"
- 不允许硬编码的魔法数字和字符串
- 错误处理必须覆盖已知的异常场景

### 第六阶段:代码审查(Review)

所有任务完成后,进行自我审查:

1. **功能检查** — 对照 specs.md 的验收标准逐条检查
2. **代码质量** — 检查以下项目:
   - 是否有重复代码可以提取
   - 是否有未处理的错误情况
   - 是否有性能问题(N+1查询、不必要的循环等)
   - 命名是否清晰易懂
3. **测试覆盖** — 确认测试覆盖了所有验收标准和边界条件
4. **一致性检查** — 确认实现和 design.md 中的技术方案一致

审查结果以清单形式展示给用户:
✅ 验收标准 1: 已通过
✅ 验收标准 2: 已通过
⚠️ 发现问题: XX模块可能存在YY风险,建议ZZ
✅ 测试覆盖: XX%

### 第七阶段:归档收尾

1. **更新规范** — 如果实现过程中有和规范不一致的变更,更新对应文档
2. **归档** — 将整个 changes/ 目录移动到归档目录:
   changes/archive/<日期>-<feature-name>/
3. **总结** — 向用户展示完成总结:
   - 实现了什么
   - 做了哪些技术决策
   - 有什么已知限制
   - 后续可以改进的方向

---

## 快速通道规则

以下情况可以走简化流程(跳过部分阶段):

| 场景 | 可跳过的阶段 |
|------|-------------|
| 修复一个明确的 bug | 跳过第二阶段(规范文档),直接写测试 + 修复 |
| 纯样式调整 | 跳过第三阶段(深度分析)和第四阶段(TDD) |
| 配置文件修改 | 跳过第三到第六阶段,直接修改并验证 |
| 添加依赖包 | 只需确认兼容性和安全性,不需要完整流程 |

但即使是快速通道,也必须:
- 先说明要做什么
- 完成后验证结果
- 简要记录变更内容

---

## 交互规则

1. **主动汇报进度** — 每完成一个任务或一个阶段,简要汇报
2. **遇到阻塞立即沟通** — 如果发现规范有问题、技术方案不可行、或遇到意外情况,立即暂停并告知用户
3. **不擅自扩大范围** — 严格按照 tasks.md 中的任务清单执行,发现需要额外工作时先和用户确认
4. **承认不确定性** — 如果对某个技术决策不确定,列出选项让用户决定,而不是自己猜测
5. **记录决策理由** — 每个重要的技术决策都要记录"为什么这样做",方便后续回顾

---

## 项目记忆维护

每次完成一个完整的功能开发后,更新以下内容(如有):
- README.md — 更新功能说明
- CHANGELOG.md — 记录变更内容
- API 文档 — 更新接口变更
- 依赖说明 — 记录新增的依赖包

---

## 禁止事项

- 禁止在没有规范文档的情况下开始大规模编码
- 禁止跳过测试直接提交代码
- 禁止在用户没有确认的情况下开始实现
- 禁止一次性修改超过 10 个文件而不拆分任务
- 禁止在实现过程中悄悄改变技术方案
- 禁止忽略错误处理和边界情况
- 禁止复制粘贴代码而不提取公共方法

八、快速接入指南

Hermes 用户: 将提示词保存到 ~/.hermes/profiles/<profile>/SOUL.md,重启 Hermes 即可。

Claude Code 用户: 将提示词保存到项目根目录的 CLAUDE.md

Cursor 用户: 将提示词保存到项目根目录的 .cursorrules

其他 AI 编程工具: 粘贴到 System Prompt 或 Project Rules 配置中。核心流程逻辑是通用的,不依赖特定工具。


本文基于 OpenSpec(规范驱动开发框架)和 Superpowers(AI 编程技能扩展库)的理念整理而成,结合 Hermes Agent 的 SOUL.md 机制落地实践。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容