概述
BMAD-METHOD 是最近比较火的开源项目:https://github.com/bmad-code-org/BMAD-METHOD/tree/main。短短几个月时间收获14.5k的star。
这个项目之所以可以获取到这么多的关注,其中一个重要的原因是,大家在使用各种copilot或者agent工具进行开发的时候,逐渐意识到一个问题,就是agent目前虽然有能力进行一些小的具体需求的开发,但是很难跟对整个项目有一个比较全面的把控。
以iFlow CLI为例,目前常见的做法是在项目的根目录下通过/init命令,可以初始化一个IFLOW.md文件,来缓存一部分对于代码仓库的理解,但是上下文长度的限制导致IFLOW.md不能过长,也就限制了对仓库的理解和对开发进度的跟踪等。
BMAD-METHOD 基于常见的自定义命令 Sub Command 以及和敏捷开发流程的结合,极大地丰富了agent在开发过程中的上下文,提高了生产力。
目前BMAD-METHOD已经支持iFlow CLI,所以以下教程以iFlow CLI和VSCODE的开发环境为例。并以一个新建项目simple-todo来介绍BMAD-METHOD的主要用法和思想。
安装
1. 输入npx bmad-method@latest install,选择iFlow CLI
2. 安装成功后应该可以看到在项目目录下定义了很多自定义的Sub Command和.bmad-core文件夹
使用流程
在https://github.com/bmad-code-org/BMAD-METHOD/blob/main/docs/user-guide.md中,作者定义了详细的使用流程图。
整体上分为两步:planning workflow和development workflow。根据自己所处的节点位置,判断下一步应该使用什么样的agent或者task。
由于篇幅关系,这里主要按照planning workflow的精简流程来做
/analyst 进行brainstorm
1. 进入analyst交互
输入/BMAD:agents:analyst,即可进入与analyst的对话框,可以看到这里有很多可选任务。
输入数字或者类似*help的命令可以进入下一步。
我们首先可以通过brainstorm来拓展自己的想法,这里选择填入任务2
2. 主题讨论
选择任务2并输入自己的主题后,可以看到agent先选择读取facillitate-brainstorming-session.md文件后,有针对性地进行回复。这就是bmad流程下agent比较聪明一点,他不会一口气把所有的要求读完,而是在不断地交互中,按照要求在不同的情境下有选择的去读取一些配置或者上下文文件。
3. 生成文档
经过一系列讨论和思考之后,agent会输出一份文档,位于docs/brainstorming-session-results.md
https://github.com/liyuyun-lyy/simple-todo/blob/main/docs/brainstorming-session-results.md
/analyst 生成brief
1. /clear清空历史
进入下一阶段前,先执行/clear 清空一下当前的会话,这样有利于避免agent被之前的对话干扰。
再次选择analyst,这次选择4. create-project-brief 选项
2. 读取brainstorm.md
agent这是根据自身的上下文,去读取project-brief-tmpl.yaml文件,再开始根据brainstorm.md去生成brief
3. 生成brief.md
agent在yolo模式下,最终会根据brainstorm.md生成一个docs/brief.md文件
https://github.com/liyuyun-lyy/simple-todo/blob/main/docs/brief.md
/pm 生成prd
1. 进入pm交互
输入/BMAD:agents:pm,可以看到不同的角色对应的能力模型是不一样的
2. 读取brief.md
选择7. *create-prd,agent会浏览项目中的文档,读取已经生成的brief.md文件
3. 逐节生成
每当agent输出一部分文档内容,都会交互式地寻求一些反馈。你可以选择直接继续,生成下一个章节,也可以给出建议,丰富当前片段
4. 生成文档
文档最终被输出到docs/prd.md下
https://github.com/liyuyun-lyy/simple-todo/blob/main/docs/prd.md
/architect 生成architectecture
1. 进入architect交互
/BMad:agents:architect 进入交互。架构师的功能主要是生成前端和后端的架构文档
2. 根据prd生成architecture.md
到这里,后端架构文档也已经生成好,planning的部分也就做的差不多了。
https://github.com/liyuyun-lyy/simple-todo/blob/main/docs/architecture.md
/shard-doc 文档分片
如果观察下我们已经生成的文档,会发现它们都是单个的文档,有可能会很长,过长的上下文不利于现在的agent进行理解。这时我们可以沿用bmad的思路,对长文本进行分片。
他提供了两个可供拆分的文件,prd.md和architecture.md,这里我们先选择prd.md。
拆分后的结构包括一个index.md文件和多个按照标题2切分的文本。通过这种方式,可以把一个几百行的文件拆分成多个几十行的小文件,并通过index索引来串起来,这对于大模型对于整个项目的理解就十分友好。
index文件:https://github.com/liyuyun-lyy/simple-todo/blob/main/docs/prd/index.md
原理解析
Sub Command
仔细查看BMAD-METHOD给项目配置的目录,会发现在.iflow/commands下配置了一系列文件,这些文件都属于Sub Command。
按照iFlow的约定,在系统根目录或者项目的根目录的.iflow/commands下按照一定格式编写的toml文件或者md文件,都会被识别为Sub Command,通过/ 命令可以搜索到
以analyst.md为例,这里面除了一些通用的要求外,还严格定义了这个anayst依赖的外部文件。
以brainstorm {topic}这个comamnd来说,他的依赖的facilitate-brainstorming-session.md的task和brainstorming-output-tmpl.yaml的template。也正是这里对依赖的声明,让agent在执行的过程中才会去加载这两个文件,并进行下一步的任务。
commands:
- help: Show numbered list of the following commands to allow selection
- brainstorm {topic}: Facilitate structured brainstorming session (run task facilitate-brainstorming-session.md with template brainstorming-output-tmpl.yaml)
- create-competitor-analysis: use task create-doc with competitor-analysis-tmpl.yaml
- create-project-brief: use task create-doc with project-brief-tmpl.yaml
- doc-out: Output full document in progress to current destination file
- elicit: run the task advanced-elicitation
- perform-market-research: use task create-doc with market-research-tmpl.yaml
- research-prompt {topic}: execute task create-deep-research-prompt.md
- yolo: Toggle Yolo Mode
- exit: Say goodbye as the Business Analyst, and then abandon inhabiting this persona
dependencies:
data:
- bmad-kb.md
- brainstorming-techniques.md
tasks:
- advanced-elicitation.md
- create-deep-research-prompt.md
- create-doc.md
- document-project.md
- facilitate-brainstorming-session.md
templates:
- brainstorming-output-tmpl.yaml
- competitor-analysis-tmpl.yaml
- market-research-tmpl.yaml
- project-brief-tmpl.yaml
Demo地址
相关的BMAD-METHOD的配置和生成的文档都提交到了simple-todo这个仓库里:



















