92 lines
3.9 KiB
Markdown
92 lines
3.9 KiB
Markdown
# BMad方法指导原则
|
||
|
||
BMad方法是一个用于AI辅助软件开发的自然语言框架。这些原则确保贡献能保持该方法的有效性。
|
||
|
||
## 核心原则
|
||
|
||
### 1. 开发代理必须精简
|
||
|
||
- **最小化开发代理的依赖**: 在IDE中工作的开发代理必须有最小的上下文开销
|
||
- **为代码节省上下文**: 每一行都很重要 - 开发代理应专注于编码,而不是文档
|
||
- **Web代理可以更大**: 在Web UI中使用的规划代理(PRD编写者、架构师)可以有更复杂的任务和依赖
|
||
- **小文件,按需加载**: 多个小的、专注的文件比包含许多分支的大文件更好
|
||
|
||
### 2. 自然语言优先
|
||
|
||
- **一切都是markdown**: 代理、任务、模板 - 都用纯英文编写
|
||
- **核心中没有代码**: 框架本身不包含编程代码,只有自然语言指令
|
||
- **自包含的模板**: 模板被定义为YAML文件,具有结构化的部分,包括元数据、工作流配置和内容生成的详细说明
|
||
|
||
### 3. 代理和任务设计
|
||
|
||
- **代理定义角色**: 每个代理都是一个具有特定专业知识的角色(例如,前端开发人员、API开发人员)
|
||
- **任务是程序**: 代理为完成工作而遵循的逐步说明
|
||
- **模板是输出**: 带有生成说明的结构化文档
|
||
- **依赖关系很重要**: 明确声明只需要什么
|
||
|
||
## 实践指南
|
||
|
||
### 何时添加到核心
|
||
|
||
- 仅限通用的软件开发需求
|
||
- 不增加开发代理的上下文负担
|
||
- 遵循现有的代理/任务/模板模式
|
||
|
||
### 何时创建扩展包
|
||
|
||
- 软件开发之外的特定领域需求
|
||
- 非技术领域(商业、健康、教育、创意)
|
||
- 专业技术领域(游戏、基础设施、移动)
|
||
- 大量的文档或知识库
|
||
- 任何会使核心代理膨胀的东西
|
||
|
||
有关详细示例和想法,请参阅[扩展包指南](../docs/expansion-packs.md)。
|
||
|
||
### 代理设计规则
|
||
|
||
1. **Web/规划代理**: 可以有更丰富的上下文、多个任务、广泛的模板
|
||
2. **开发代理**: 最小的依赖、专注于代码生成、精简的任务集
|
||
3. **所有代理**: 清晰的角色、特定的专业知识、明确定义的能力
|
||
|
||
### 任务编写规则
|
||
|
||
1. 编写清晰的逐步程序
|
||
2. 使用markdown格式以提高可读性
|
||
3. 保持开发代理任务的专注和简洁
|
||
4. 规划任务可以更详尽
|
||
5. **倾向于多个小任务,而不是一个大的分支任务**
|
||
- 而不是一个有许多条件路径的任务
|
||
- 创建多个专注的任务供代理选择
|
||
- 这使上下文开销保持最小
|
||
6. **重用通用任务** - 不要创建新的文档创建任务
|
||
- 使用现有的`create-doc`任务
|
||
- 传递带有结构化部分的适当YAML模板
|
||
- 这保持了一致性并减少了重复
|
||
|
||
### 模板规则
|
||
|
||
模板遵循使用YAML格式的[BMad文档模板](../common/utils/bmad-doc-template.md)规范:
|
||
|
||
1. **结构**: 模板在YAML中定义,具有清晰的元数据、工作流配置和章节层次结构
|
||
2. **关注点分离**: LLM的指令在`instruction`字段中,与内容分开
|
||
3. **可重用性**: 模板与代理无关,可以在不同的代理之间使用
|
||
4. **关键组件**:
|
||
- 用于元数据的`template`块(id、name、version、output设置)
|
||
- 用于交互模式配置的`workflow`块
|
||
- 定义文档结构的`sections`数组,带有嵌套的子部分
|
||
- 每个部分都有`id`、`title`和`instruction`字段
|
||
5. **高级功能**:
|
||
- 使用`{{variable_name}}`语法进行变量替换
|
||
- 带有`condition`字段的条件部分
|
||
- 带有`repeatable: true`的可重复部分
|
||
- 带有`owner`和`editors`字段的代理权限
|
||
- 用于指导的示例数组(从不包含在输出中)
|
||
6. **干净的输出**: YAML结构确保所有处理逻辑与生成的内容分开
|
||
|
||
## 请记住
|
||
|
||
- 力量在于自然语言的编排,而不是代码
|
||
- 开发代理编码,规划代理规划
|
||
- 保持开发代理精简以实现最大的编码效率
|
||
- 扩展包处理专业领域
|