# 02 - BMAD-METHOD 核心架构
## 1. 整体架构设计
### 1.1 三层架构模型
```
┌─────────────────────────────────────────┐
│ 应用层 (Application Layer) │
│ │
│ 用户 ←→ IDE ←→ 代理菜单 ←→ 工作流触发 │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ 代理层 (Agent Layer) │
│ │
│ 19+ 专业代理 (PM, Architect, Dev...) │
│ - 角色定义 (Persona) │
│ - 专业知识 (Domain Knowledge) │
│ - 工作流菜单 (Menu) │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ 工作流层 (Workflow Layer) │
│ │
│ 63+ 结构化工作流程 │
│ - 指令文档 (Instructions) │
│ - 模板文件 (Templates) │
│ - 任务调用 (Task Invocations) │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ 框架层 (Core Layer) │
│ │
│ BMad-CORE 基础能力 │
│ - 配置管理 │
│ - 路径解析 │
│ - 依赖解析 │
│ - Party Mode 协调 │
└─────────────────────────────────────────┘
```
### 1.2 模块依赖关系
```
BMad-CORE (基础框架)
├── 必需:所有模块都依赖
│
├── BMad Method (BMM - 主模块)
│ ├── 依赖 CIS (用于头脑风暴)
│ └── 集成 BMGD (游戏开发扩展)
│
├── BMad Builder (BMB - 扩展工具)
│ └── 独立运行,创建新模块
│
├── Creative Intelligence Suite (CIS)
│ └── 独立或与其他模块集成
│
└── BMad Game Development (BMGD)
└── 使用 BMM 的 Sprint 工作流
```
---
## 2. 目录结构详解
### 2.1 顶级目录结构
```
/home/user/BMAD-METHOD/
│
├── README.md # 项目主文档
├── CONTRIBUTING.md # 贡献指南
├── CHANGELOG.md # 版本更新日志
├── LICENSE # MIT 许可证
├── package.json # Node.js 项目配置
├── .nvmrc # Node 版本:22
│
├── src/ # 📦 源代码目录
│ ├── core/ # BMad-CORE 基础框架
│ ├── modules/ # 功能模块
│ │ ├── bmm/ # BMad Method (2.3 MB)
│ │ ├── bmb/ # BMad Builder (463 KB)
│ │ ├── cis/ # Creative Intelligence (154 KB)
│ │ └── bmgd/ # Game Development (556 KB)
│ └── utility/ # 共享资源
│
├── tools/ # 🛠️ 工具集
│ ├── cli/ # 安装和构建工具
│ │ ├── bmad-cli.js # CLI 入口
│ │ ├── commands/ # 命令实现
│ │ └── bundlers/ # Web 打包器
│ ├── flattener/ # 文档展平工具
│ └── validate-*.js # 验证工具
│
├── docs/ # 📚 项目级文档
│ ├── ide-info/ # 15 个 IDE 集成指南
│ ├── installers-bundlers/ # 安装系统文档
│ └── *.md # 各种指南
│
├── web-bundles/ # 🌐 Web 部署包
│ ├── bmm/ # BMM Web 版本
│ ├── bmb/ # BMB Web 版本
│ └── cis/ # CIS Web 版本
│
├── test/ # ✅ 测试套件
│ ├── test-agent-schema.js
│ └── test-installation-components.js
│
├── bmad/ # 💾 已安装实例(示例)
│ ├── core/
│ ├── bmm/
│ ├── _cfg/ # 用户配置
│ └── agents/ # 编译后的代理
│
└── .claude/ # 🤖 IDE 配置(示例)
└── commands/ # Claude Code 斜杠命令
```
### 2.2 源代码目录详解
#### src/core/ - 核心框架
```
src/core/
├── agents/
│ └── bmad-master.agent.yaml # 主协调代理
│
├── workflows/
│ ├── brainstorming/ # 头脑风暴工作流
│ │ ├── workflow.yaml
│ │ ├── instructions.md
│ │ └── brainstorming-techniques.csv
│ └── party-mode/ # 多代理协作
│ ├── workflow.yaml
│ └── instructions.md
│
├── tasks/ # 原子级任务
│ ├── workflow.xml # 工作流任务
│ ├── adv-elicit.xml # 高级引导任务
│ └── adv-elicit-methods.csv # 引导方法库
│
├── tools/ # 核心工具
│ └── shard-doc/ # 文档分片工具
│
├── config.yaml # 核心配置
└── _module-installer/ # 安装配置
└── install-config.yaml
```
#### src/modules/bmm/ - BMad Method 模块
```
src/modules/bmm/
├── README.md # 模块概述
├── config.yaml # 模块配置
│
├── agents/ # 12 个专业代理
│ ├── pm.agent.yaml # 产品经理 (John)
│ ├── analyst.agent.yaml # 分析师 (Mary)
│ ├── architect.agent.yaml # 架构师 (Winston)
│ ├── sm.agent.yaml # Scrum Master (Bob)
│ ├── dev.agent.yaml # 开发者 (Amelia)
│ ├── tea.agent.yaml # 测试架构师 (Murat)
│ ├── ux-designer.agent.yaml # UX 设计师 (Sally)
│ ├── tech-writer.agent.yaml # 技术文档师 (paige)
│ ├── game-designer.agent.yaml # 游戏设计师
│ ├── game-dev.agent.yaml # 游戏开发者
│ ├── game-architect.agent.yaml # 游戏架构师
│ └── game-sm.agent.yaml # 游戏 Scrum Master
│
├── workflows/ # 34 个工作流
│ ├── workflow-status/ # 工作流状态管理
│ ├── 1-analysis/ # Phase 1: 分析 (5个)
│ │ ├── brainstorm-project/
│ │ ├── market-research/
│ │ ├── competitive-analysis/
│ │ ├── user-research/
│ │ └── product-brief/
│ │
│ ├── 2-plan-workflows/ # Phase 2: 规划 (6个)
│ │ ├── prd/ # PRD 工作流
│ │ │ ├── workflow.yaml
│ │ │ ├── instructions.md
│ │ │ ├── prd-template.md
│ │ │ └── create-epics-and-stories/
│ │ ├── tech-spec/ # 技术规格
│ │ ├── create-ux-design/ # UX 设计
│ │ └── brownfield-document/ # 现有代码文档化
│ │
│ ├── 3-solutioning/ # Phase 3: 方案 (2个)
│ │ ├── architecture/
│ │ └── solutioning-gate-check/
│ │
│ └── 4-implementation/ # Phase 4: 实现 (10个)
│ ├── sprint-planning/
│ ├── epic-tech-context/
│ ├── create-story/
│ ├── story-context/
│ ├── dev-story/
│ ├── story-review/
│ ├── story-ready/
│ ├── correct-course/
│ └── sprint-retrospective/
│
├── docs/ # 18 个指南文档
│ ├── README.md # 文档中心
│ ├── quick-start.md # 快速开始
│ ├── agents-guide.md # 代理指南
│ ├── scale-adaptive-system.md # 3轨系统
│ ├── workflows-*.md # 工作流指南
│ ├── faq.md # 常见问题
│ └── glossary.md # 术语表
│
├── teams/ # 预配置团队
│ ├── quick-flow-team.yaml
│ ├── bmad-method-team.yaml
│ └── enterprise-team.yaml
│
└── _module-installer/
└── install-config.yaml
```
### 2.3 安装后的目录结构
用户安装后在项目中创建:
```
your-project/
├── bmad/ # BMAD 安装目录
│ ├── core/ # 核心框架
│ │ ├── agents/
│ │ ├── workflows/
│ │ ├── tasks/
│ │ └── config.yaml
│ │
│ ├── bmm/ # BMad Method
│ │ ├── agents/ # 编译后的 .md 文件
│ │ ├── workflows/
│ │ └── config.yaml
│ │
│ ├── bmb/ # BMad Builder (可选)
│ ├── cis/ # Creative Intelligence (可选)
│ ├── bmgd/ # Game Development (可选)
│ │
│ └── _cfg/ # 用户配置和清单
│ ├── agents/ # 代理定制文件
│ ├── manifest.yaml # 安装清单
│ ├── workflow-manifest.csv # 工作流目录
│ ├── agent-manifest.csv # 代理元数据
│ └── files-manifest.csv # 文件完整性
│
├── .claude/ # Claude Code 工件
│ └── commands/
│ ├── bmad-bmm-workflows-prd.md
│ └── ... (所有工作流命令)
│
├── .cursor/ # Cursor 工件
│ └── rules/
│
├── .windsurf/ # Windsurf 工件
│ └── workflows/
│
└── docs/ # 项目输出文档
├── bmm-workflow-status.yaml # 工作流状态
├── sprint-status.yaml # Sprint 状态
├── PRD.md # 产品需求文档
├── architecture.md # 架构文档
└── ... (其他输出文档)
```
---
## 3. 技术栈和依赖
### 3.1 开发环境要求
```json
{
"Node.js": ">= 20.0.0",
"推荐版本": "22.x (见 .nvmrc)",
"包管理器": "npm",
"操作系统": "跨平台 (Linux, macOS, Windows)"
}
```
### 3.2 核心依赖分析
#### 运行时依赖 (15 个)
**CLI 框架**:
```javascript
commander@14.0.0 // CLI 命令框架
inquirer@8.2.6 // 交互式问答
ora@5.4.1 // 终端加载指示器
chalk@4.1.2 // 终端着色
boxen@5.1.2 // 盒式输出
figlet@1.8.0 // ASCII 艺术字体
```
**数据处理**:
```javascript
js-yaml@4.1.0 // YAML 解析和生成
xml2js@0.6.2 // XML 处理
csv-parse@6.1.0 // CSV 解析
```
**文件系统**:
```javascript
fs-extra@11.3.0 // 增强的文件系统操作
glob@11.0.3 // 文件模式匹配
ignore@7.0.5 // .gitignore 支持
```
**工具库**:
```javascript
semver@7.6.3 // 版本管理
wrap-ansi@7.0.0 // ANSI 文本换行
@kayvan/markdown-tree-parser // Markdown 解析
```
#### 开发依赖 (13 个)
**代码质量**:
```javascript
eslint@9.33.0 // 代码检查
prettier@3.5.3 // 代码格式化
eslint-config-prettier@10.1.8 // ESLint + Prettier 集成
```
**测试工具**:
```javascript
jest@30.0.4 // 测试框架
c8@10.1.3 // 代码覆盖率
```
**Git 工具**:
```javascript
husky@9.1.7 // Git hooks
lint-staged@16.1.1 // 暂存文件 lint
```
**Schema 验证**:
```javascript
zod@4.1.12 // Schema 验证
yaml-eslint-parser@1.2.3 // YAML 解析
```
### 3.3 构建和脚本
```json
{
"scripts": {
"install:bmad": "安装 BMAD 到项目",
"bundle": "生成 Web 部署包",
"test": "完整测试套件",
"test:schemas": "代理 Schema 验证",
"test:install": "安装组件测试",
"validate:schemas": "YAML Schema 验证",
"validate:bundles": "Web Bundle 完整性",
"lint": "ESLint 检查 (max 0 warnings)",
"format:check": "Prettier 格式检查",
"format:fix": "自动格式化"
}
}
```
### 3.4 质量保证流程
#### Pre-commit Hook
```bash
# 自动运行 (通过 husky)
1. lint-staged
├── 自动修复 JS/YAML 文件
├── 格式化所有文件
└── 仅处理 staged 文件
2. npm test
├── Schema 验证
├── 安装测试
├── Bundle 验证
├── Lint 检查
└── 格式检查
```
#### CI/CD (GitHub Actions)
```bash
# 每个 PR 自动运行
1. 并行执行
├── npm run test:schemas
├── npm run test:install
├── npm run validate:bundles
├── npm run lint
└── npm run format:check
2. 全部通过才能合并
```
---
## 4. 配置系统
### 4.1 配置层级
```
1. 核心配置 (bmad/core/config.yaml)
├── project_name
├── output_folder
├── user_name
└── communication_language
2. 模块配置 (bmad/bmm/config.yaml)
├── 继承核心配置
├── document_output_language
├── user_skill_level
└── project_track (quick-flow/bmad-method/enterprise)
3. 代理定制 (bmad/_cfg/agents/*.yaml)
├── 覆盖代理属性
├── 多语言支持
└── 更新时保留
```
### 4.2 路径占位符系统
工作流和代理使用占位符,运行时解析:
```yaml
# 编译时解析
{project-root} → /home/user/my-project
{output_folder} → /home/user/my-project/docs
{installed_path} → /home/user/my-project/bmad/bmm/workflows/prd
# 配置值解析
{user_name} → 从 config.yaml 读取
{communication_language} → 从 config.yaml 读取
{config_source}:key → 从指定配置读取键值
# 系统生成
{date} → 当前日期
{timestamp} → 当前时间戳
```
### 4.3 智能输入发现
工作流自动查找输入文档:
```yaml
input_file_patterns:
product_brief:
whole: "{output_folder}/*brief*.md" # 优先整体文档
sharded: "{output_folder}/*brief*/index.md" # 降级到分片
research:
whole: "{output_folder}/*research*.md"
sharded: "{output_folder}/*research*/index.md"
```
**处理逻辑**:
1. 尝试匹配 `whole` 模式
2. 如果找不到,尝试 `sharded` 模式
3. 加载找到的文档
4. 如果都没有,提示用户
---
## 5. 编译和安装系统
### 5.1 YAML 到 Markdown 编译
**为什么编译?**
- IDE 通常直接读取 Markdown 文件
- YAML 便于配置和维护
- 编译时注入激活块和处理器
**编译流程**:
```
src/modules/bmm/agents/pm.agent.yaml
↓
[读取 YAML]
↓
[解析元数据、角色、菜单]
↓
[注入激活步骤 XML]
↓
[应用 IDE 特定处理器]
↓
bmad/bmm/agents/pm.md (Markdown)
```
**激活步骤**:
```xml
加载配置文件
设置运行时变量
显示代理菜单
```
### 5.2 安装阶段
**6 阶段安装**:
```
阶段 1: 收集用户输入
├── 目标目录
├── 选择模块 (BMM, BMB, CIS, BMGD)
├── 选择 IDE
└── 自定义配置
阶段 2: 预安装检查
├── 验证目标目录
├── 检测 v4 安装(升级路径)
├── 备份现有安装
└── 4 阶段依赖解析
阶段 3: 安装核心和模块
├── 复制文件到 {target}/bmad/
├── 编译 YAML → Markdown
├── 合并 customize.yaml
└── 注入激活块
阶段 4: IDE 集成
├── 初始化 IDE 处理器
├── 生成 IDE 工件
│ ├── Claude Code: .claude/commands/
│ ├── Cursor: .cursor/rules/
│ └── 其他 13 个 IDE
└── 执行平台钩子
阶段 5: 生成清单
├── manifest.yaml (安装元数据)
├── workflow-manifest.csv
├── agent-manifest.csv
├── task-manifest.csv
└── files-manifest.csv
阶段 6: 验证和完成
├── 文件完整性检查
├── 代理编译验证
├── IDE 工件确认
└── 显示摘要和后续步骤
```
### 5.3 依赖解析
**4 阶段依赖解析系统**:
```
阶段 1: 直接依赖
└── 模块直接声明的依赖
阶段 2: 传递依赖
└── 依赖的依赖
阶段 3: 可选依赖
└── 建议但非必需
阶段 4: 冲突解决
└── 版本冲突和循环依赖检测
```
---
## 6. Web 打包系统
### 6.1 用途和目标
**目标**: 为 Web 部署创建自包含的代理和工作流包
**特点**:
- 单个 XML 文件包含所有依赖
- 无需文件系统访问
- 适用于 Web IDE 和浏览器环境
### 6.2 打包流程
```
输入: src/modules/bmm/agents/pm.agent.yaml
↓
编译(forWebBundle: true)
├── YAML → XML
├── 使用 web-bundle-activation-steps.xml
└── 递归解析所有依赖
↓
嵌入依赖
├── 工作流 YAML
├── 指令 Markdown
├── 模板文件
├── 数据 CSV
└── 任务 XML
↓ (所有包装在 标签)
输出: web-bundles/bmm/agents/pm.xml (自包含)
```
### 6.3 Web Bundle 结构
```xml
...
...
```
---
## 7. 小结
BMAD-METHOD 的架构特点:
✅ **模块化设计** - 核心 + 可选模块
✅ **配置驱动** - YAML 配置,编译时处理
✅ **IDE 无关** - 支持 15 个 IDE
✅ **可扩展** - 使用 BMB 创建新模块
✅ **更新安全** - 用户配置独立保存
✅ **质量保证** - 完整的测试和验证流程
**下一步**: 阅读 [03-模块详解.md](./03-模块详解.md) 了解各模块功能细节