第二章. BMAD 角色体系:21 个代理的分工逻辑
第二章. BMAD 角色体系:21 个代理的分工逻辑
Prorise第二章. BMAD 角色体系:21 个代理的分工逻辑
本章将拆解 BMAD 的目录结构和角色分工,理解为什么需要 21 个代理,以及它们如何通过工件传递信息。
2.1. 先看看 BMAD 装了什么
在理解角色之前,我们先把 BMAD 的仓库拉下来看看。它以一个 Github 仓库 的形式存在,安装后会在你的项目里生成一个 .bmad 目录。
安装和初始化
1 | npx bmad-method@alpha install |
安装程序会启动一个交互式配置向导。这个过程会问你一系列问题,我们逐个解释:
问题 1:安装目录
1 | ? Installation directory: C:\Users\YourName\Desktop\BMAD |
这个没什么好说的,选一个你想放项目的地方。
问题 2:选择开发工具
1 | ? Select tools to configure: |
必须按空格键选中,然后按回车确认。只是高亮不算选中。
这里选择你用的 IDE。我们的教程以 Claude Code 为例,但其他 IDE 的流程本质上是一样的。
问题 3:配置语言和输出
1 | ? What shall the agents call you? Prorise |
这里有个关键点:对话语言和文档语言可以分开设置。
- 对话语言:AI 用什么语言跟你交流
- 文档语言:PRD、架构文档等工件用什么语言输出
我选了中文,因为 PRD 和架构文档用中文写更自然。但如果你的团队是国际化的,可以选英文。
问题 4:选择模块
1 | ? Select modules to install: |
这里有三个模块:
| 模块 | 全称 | 作用 |
|---|---|---|
| BMM | BMad Method | 完整的敏捷开发流程,包含 21 个 Agent 和 50+ 工作流 |
| BMB | BMad Builder | 用来创建自定义 Agent 和工作流 |
| CIS | Creative Innovation Suite | 创新和头脑风暴工具 |
第一次使用建议只选 BMM,因为想先体验标准流程。等熟悉了再用 BMB 定制自己的 Agent。
问题 5:是否启用 TTS
1 | ? Claude Code supports TTS (Text-to-Speech). Would you like to enable it? No |
这个功能可以让 AI 用语音跟你对话。我选了 No,因为这部分我们不需要,没必要下载额外依赖。
安装完成后,会看到:
1 | ✨ BMAD is ready to use! |
2.2. 目录结构:核心文件在哪里
安装完后,项目里会多两个目录:
1 | 📂 BMAD/ |
_bmad 目录:三个模块的分工
这个目录包含三个模块:
1 | _bmad/ |
我们逐个拆解。
core 模块:基础能力层
1 | core/ |
这里的 bmad-master 是总控 Agent,负责协调其他所有 Agent。它就像一个项目经理,知道什么时候该叫哪个 Agent 出来干活。
tasks 目录里是可复用的任务定义。比如 review-adversarial-general.xml 定义了 对抗性审查让一个 AI 挑战另一个 AI 的输出,找出逻辑漏洞和潜在问题 的逻辑:让一个 AI 挑战另一个 AI 的输出,找出问题。
这解决了什么问题?防止 AI 自嗨。如果只有一个 AI 生成代码,它可能会觉得自己写得很完美。但如果有另一个 AI 专门挑刺,就能发现很多隐藏的问题。
bmm 模块:21 个角色的定义
1 | bmm/ |
这里才是真正的 21 个角色和 50+ 工作流。
打开 agents/analyst.md,你会看到需求分析师的完整定义:
1 | # Business Analyst |
每个 Agent 的定义包含三个部分:
- 职责边界:这个 Agent 负责什么,不负责什么
- 工作方式:这个 Agent 怎么思考问题
- 输出规范:这个 Agent 产出什么格式的工件
这解决了什么问题?防止角色越界。如果没有明确的职责定义,Analyst 可能会开始讨论技术实现,Architect 可能会开始质疑需求合理性。但有了这些定义,每个 Agent 只关注自己的领域。
workflows 目录:四阶段的具体流程
这个目录是 BMAD 的核心。我们重点看四个阶段的目录结构。
1-analysis 阶段:
1 | 1-analysis/ |
每个工作流都拆成了多个步骤。比如 create-product-brief 有 6 个步骤:初始化 → 愿景 → 用户 → 指标 → 范围 → 完成。
为什么要拆这么细?因为大脑一次只能处理 7±2 个信息块。如果一次性问你 20 个问题,你会懵。但如果分成 6 个步骤,每个步骤问 3-4 个问题,你就能清晰地回答。
2-plan-workflows 阶段:
1 | 2-plan-workflows/ |
PRD 工作流有三种模式:
| 模式 | 步骤数 | 适用场景 |
|---|---|---|
| 创建模式 (steps-c) | 12 | 从零开始写 PRD |
| 编辑模式 (steps-e) | 4 | 修改现有 PRD |
| 验证模式 (steps-v) | 13 | 检查 PRD 质量 |
这解决了什么问题?防止文档质量参差不齐。如果没有验证模式,你可能会写出一份 “看起来很完整,但实际上漏洞百出” 的 PRD。但有了 13 个验证步骤,每个步骤检查一个维度(完整性、一致性、可测试性等),就能确保 PRD 的质量。
3-solutioning 阶段:
1 | 3-solutioning/ |
这个阶段的关键是 check-implementation-readiness。它会检查:
- PRD 和架构文档是否一致?
- 所有 Epic 都有对应的技术方案吗?
- 技术栈能满足非功能需求吗?
- 有没有遗漏的依赖或风险?
只有通过这 6 个检查,才能进入开发阶段。这就是我们在第一章提到的 “人在回路” 检查点。
4-implementation 阶段:
1 | 4-implementation/ |
这个阶段的工作流是循环的:规划 → 开发 → 评审 → 回顾 → 下一个迭代。
bmad-quick-flow:
1 | bmad-quick-flow/ |
Quick Flow 是完整流程的简化版。它只有两个工作流:
- quick-spec:4 步生成技术规格说明
- quick-dev:6 步完成开发(包含自检和对抗性审查)
注意 quick-dev 的第 5 步是 “对抗性审查”。即使是简化版,也保留了质量检查机制。
testarch 目录:
1 | testarch/ |
这个目录包含 35 个测试知识文档,涵盖 TDD、契约测试、性能测试等各种测试模式。
为什么需要这么多测试文档?因为测试是最容易被忽略的环节。很多开发者写完代码就觉得完成了,但实际上没有测试的代码是不可靠的。BMAD 通过提供完整的测试知识库,确保每个 Story 都有对应的测试策略。
_config 目录:配置和清单
1 | _config/ |
这些 .customize.yaml 文件是用来定制 Agent 行为的。打开 bmm-dev.customize.yaml,你会看到:
1 | agent: |
你可以修改这些配置,让 Dev Agent 使用你喜欢的代码风格。
各种 manifest 文件记录了系统里有哪些 Agent、工作流、任务。打开 agent-manifest.csv:
1 | id,name,module,path,enabled |
这个清单的作用是 让系统知道有哪些 Agent 可用。当你输入 *agent pm 时,系统会查这个清单,找到 bmm-pm 对应的定义文件,然后加载它。
_bmad-output 目录:工件的归宿
1 | _bmad-output/ |
这个目录一开始是空的。当你跑完工作流后,所有生成的文档、代码、测试报告都会存在这里。
比如跑完 PRD 工作流后:
1 | _bmad-output/ |
跑完架构设计后:
1 | _bmad-output/ |
注意文件名都带了日期。这是因为 工件是有版本的。如果你三个月后修改了 PRD,会生成一个新的文件 prd-20250415.md,而不是覆盖旧文件。这样你可以随时对比不同版本的差异。
2.3. 四个阶段在做什么
现在我们知道了 BMAD 的目录结构,接下来理解四个阶段的分工逻辑。
Analysis:把模糊想法变成清晰问题
这个阶段的目标是:把 “我想要个用户管理” 变成 “需要哪些字段、权限、接口”。
为什么需要这个阶段
因为大部分需求一开始都是模糊的。
产品说 “我想要个用户管理”,但他没说:
- 用户有哪些字段?姓名、邮箱、手机号?
- 用户有哪些权限?管理员、普通用户、访客?
- 用户怎么登录?账号密码、手机验证码、第三方登录?
如果直接开始写代码,这些问题会在实现过程中不断冒出来。每次冒出来,都要停下来讨论,然后改代码。
Analysis 阶段就是把这些问题提前问清楚。
这个阶段产出什么
一个 产品简报包含背景、目标、约束、风险、成功标准的需求分析文档,包含:
- 背景:为什么要做这个功能
- 目标:这个功能要解决什么问题
- 约束:有哪些限制条件(时间、预算、技术栈)
- 风险:可能遇到哪些问题
- 成功标准:怎么判断这个功能做成功了
对比:有 Analysis vs 没有 Analysis
没有 Analysis 的情况:
1 | 你:帮我写个用户管理模块 |
改了 5 次,每次都要重新生成代码。
有 Analysis 的情况:
1 | Analyst:这个用户管理模块,需要支持哪些功能? |
一次性把需求问清楚,后面不用反复改。
Planning:拆任务表和里程碑
这个阶段的目标是:把需求拆成 10 个可执行的任务,排好优先级。
为什么需要这个阶段
因为一个大需求直接开始写,很容易失控。
“用户管理模块” 听起来很简单,但实际上包含:
- 用户表设计
- 注册接口
- 登录接口
- 权限校验
- 角色管理
- 第三方登录
- 用户列表
- 用户详情
- 用户编辑
- 用户删除
如果不拆任务,你会在这 10 个功能之间跳来跳去,最后哪个都没做完。
Planning 阶段就是把大需求拆成小任务,一个一个做。
这个阶段产出什么
两个工件:
- PRD 文档:详细描述每个功能的用户故事和验收标准
- Epic 和 Story 列表:把 PRD 拆分成可执行的开发任务
PRD 的核心是 验收标准。它用可验证的条件定义 “什么叫做完了”:
1 | ## Story: 用户登录 |
注意每一条都是 可测试的。QA 代理在审查代码时,会逐条检查这些标准是否满足。
Solutioning:定技术方案和架构
这个阶段的目标是:定技术栈、画架构图、定接口规范。
为什么需要这个阶段
因为同一个需求,可以有多种实现方式。
“用户管理模块” 可以用:
- 技术栈:Node.js + Express + MySQL,或者 Python + Django + PostgreSQL
- 架构:单体应用,或者微服务
- 认证方式:JWT,或者 Session
如果不提前定方案,开发过程中会不断纠结 “用哪个更好”。
Solutioning 阶段就是把技术方案定下来,后面不用纠结。
这个阶段产出什么
两个工件:
- 架构文档:描述系统的整体架构、技术栈、关键设计决策
- 接口契约:定义所有接口的请求和响应格式(OpenAPI 格式)
架构文档的核心是 约束而非自由。它不是告诉 Dev “你可以用任何数据库”,而是明确规定 “必须用 PostgreSQL,且所有表必须有 created_at 和 updated_at 字段”。
Implementation:写代码和测试
这个阶段的目标是:按任务写代码,每个任务一个 Story。
为什么用 Story 而不是直接修改文件
因为 Story 是可追溯的。
一个 Story 包含:
- 变更说明:为什么要改
- 影响范围:改了哪些文件
- 代码 diff:具体改动
- 测试用例:如何验证
如果直接修改文件,三个月后你不记得为什么这么改。但如果用 Story,你可以随时查看这个 Story 的变更说明。
这个阶段产出什么
每个任务产出一个 Story 文档:
1 | # Story 1.1: 用户注册接口 |
2.4. 角色切换的黄金法则
BMAD 的一个核心原则是:一次只用一个代理,且必须在新的干净对话中启动。
什么是角色污染?
假设你在同一个对话中先用 SM 创建了一个 Story,然后直接让 Dev 实现。这时候会发生什么?
AI 的上下文中既有 SM 的 “规划思维”,又有 Dev 的 “实现思维”。结果就是 Dev 可能会:
- 擅自修改 Story 的验收标准(因为它觉得 “这样实现更简单”)
- 偏离架构文档的约束(因为它 “忘记” 了架构师的规定)
这就是角色污染。两个角色的职责混在一起,导致输出质量下降。
正确的切换方式
步骤 1:完成当前角色的任务
在 SM 对话中,创建完 Story 后,把内容保存到项目目录:
1 | docs/stories/story-1.1.md |
步骤 2:开启新的干净对话
关闭当前对话,打开一个全新的对话窗口。
步骤 3:激活新角色
在新对话中输入:
1 | *agent dev |
这时 Dev 代理会读取 docs/stories/story-1.1.md 文件,基于这份文档开始工作。它的上下文中 只有 Story 的内容,没有 SM 的思考过程。
为什么要这么麻烦?
因为这确保了 职责的单一性。每个代理只关注自己的任务:
- SM 只负责拆分 Story,不关心怎么实现
- Dev 只负责实现功能,不关心为什么要这样拆分
- QA 只负责审查质量,不关心实现细节
这种分离带来了两个好处:
- 输出质量更高:每个代理都能专注于自己的领域,不会被其他角色的思维干扰
- 可追溯性更强:每个阶段的输出都有独立的文档,三个月后回来看,能清楚地知道 “当时为什么这么做”
2.5. 本章总结与角色速查表
让我们回顾一下核心要点:
BMAD 的目录结构
| 目录 | 作用 | 关键文件 |
|---|---|---|
| core/ | 基础能力层 | bmad-master.md, 对抗性审查任务 |
| bmm/ | 21 个角色和 50+ 工作流 | 各个 Agent 定义,四阶段工作流 |
| _config/ | 配置和清单 | Agent 定制文件,manifest 清单 |
| _bmad-output/ | 工件输出 | PRD、架构文档、Story 等 |
四个阶段的分工
| 阶段 | 目标 | 输出工件 |
|---|---|---|
| Analysis | 把模糊想法变成清晰问题 | 产品简报 (Product Brief) |
| Planning | 拆任务表和里程碑 | PRD + Epic/Story 列表 |
| Solutioning | 定技术方案和架构拆解 Story | 架构文档 + 接口契约 |
| Implementation | 写代码和测试 | Story 文档 + 代码 |
角色切换检查清单
在切换角色前,问自己三个问题:
如果三个问题的答案都是 “是”,才能切换到下一个角色。



