BMAD-METHOD:通用 AI 代理框架的工作流程与原理解析

概述

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这个仓库里:

https://github.com/liyuyun-lyy/simple-todo/tree/main

2 个赞

:call_me_hand: :call_me_hand: :call_me_hand:

1 个赞