Appearance
你的团队有没有一个需求,现成的 Agent 角色都答不了?项目上线前的安全审查清单,每次 PR 前都要过一遍,枯燥、容易漏。Amelia 会做,但她不是安全专家,审查质量不稳定。BMAD 的 bmb 模块就是为这个存在的——打造只干这一件事、干得极好的角色。
Agent 的设计哲学:角色即 Persona,专业即边界
在开始写 YAML 之前,先想清楚一件事:BMAD 的 Agent 不是工具,是角色。
这个区别很关键。
一个「工具」是你给它一个任务,它执行,它完成。一个「角色」有自己的专业背景、思考方式、交互风格,和它对话更像和一个有立场的人对话。
BMAD 的九个内置角色都有名字、有人格:Winston 是谨慎的架构师,Amelia 是注重测试的开发者,Bob 是热爱流程的敏捷教练。这不是花哨,是工程经验的沉淀——给模型一个稳定的角色框架,比每次对话重新定义行为可靠得多,调试起来也有迹可循。
所以造自定义 Agent,第一步不是打开编辑器写 YAML,是想清楚这个角色是谁:
- 它的专业边界在哪里?它只做什么,不做什么。
- 它的思维方式是什么?保守还是激进,原则驱动还是结果驱动。
- 它在什么时候被调用?明确触发场景,避免模糊。
想清楚这三件事,YAML 配置就水到渠成了。
Agent YAML 配置规范
BMAD 的 Agent 以 YAML 文件定义。一个完整的配置文件包含以下核心字段:
yaml
name: security-reviewer
description: 专业代码安全审查,专注 OWASP Top 10 和团队内部安全规范
triggers:
- SR
- security
persona: |
你是 Alex,一位专注代码安全的高级工程师。你有超过十年的安全审查经验,
对 OWASP Top 10、SQL 注入、XSS、密钥管理有深度的理解。
你的审查风格是:严格、系统、不放过任何可疑点,但也会区分高危和低危问题。
你不写新代码,只审查现有代码。你的输出是一份有优先级的问题清单。
workflows:
- name: security-review
description: 对指定代码或 PR 执行安全审查
steps:
- name: understand-scope
description: 理解审查范围和上下文
- name: systematic-scan
description: 按 OWASP Top 10 分类系统扫描
- name: prioritize-findings
description: 按高危/中危/低危分类问题工作流设计要点
核心字段说明
| 字段 | 必填 | 说明 |
|---|---|---|
name | ✅ | 角色名称,全局唯一 |
description | ✅ | 角色描述,用于系统识别 |
triggers | ✅ | 触发词列表,命中任一词激活角色 |
persona | ✅ | 人格定义,越详细越稳定 |
workflows | ✅ | 工作流列表,定义角色能力 |
触发词设计
触发词是角色被激活的入口。设计时要注意:
- 专属性:触发词不要与其他角色重叠
- 简短性:1-2 个词最佳,便于快速调用
- 语义一致性:触发词要能准确反映角色能力
工作流结构
每个工作流包含多个步骤(steps),步骤之间可以:
- 顺序执行:一个步骤完成后再执行下一个
- 条件分支:根据上一步结果决定下一步
- 并行执行:多个步骤同时进行
防冲突策略:多 Agent 共存的关键
当团队有多个自定义 Agent 时,触发冲突是常见问题。BMAD 提供了几种解决策略:
1. 触发词优先级
在 YAML 中设置 priority 字段,数值越高越优先匹配。
2. 上下文感知
Agent 可以通过上下文判断自己是否应该响应。比如安全审查 Agent 只在检测到代码变更时激活。
3. 互斥规则
设置 exclusive_with 字段,声明与哪些 Agent 互斥。
实战示例:代码安全审查 Agent
完整的安全审查 Agent 配置:
yaml
name: security-reviewer
description: 专业代码安全审查,专注 OWASP Top 10 和团队内部安全规范
triggers:
- SR
- security
- 安全审查
priority: 80
persona: |
你是 Alex,一位专注代码安全的高级工程师。你有超过十年的安全审查经验,
对 OWASP Top 10、SQL 注入、XSS、密钥管理有深度的理解。
你的审查风格是:严格、系统、不放过任何可疑点,但也会区分高危和低危问题。
你不写新代码,只审查现有代码。你的输出是一份有优先级的问题清单。
workflows:
- name: security-review
description: 对指定代码或 PR 执行安全审查
steps:
- name: understand-scope
description: 理解审查范围和上下文
action: ask_clarifying_questions
- name: systematic-scan
description: 按 OWASP Top 10 分类系统扫描
checks:
- SQL_INJECTION
- XSS
- CSRF
- AUTH_BYPASS
- SECRETS_EXPOSED
- name: prioritize-findings
description: 按高危/中危/低危分类问题
- name: generate-report
description: 生成结构化问题清单
format: markdown团队协作建议
- 先复用再创造:看看 BMAD 的九个内置角色能不能满足需求
- 小步迭代:先做简单的自定义角色,再逐步增加能力
- 文档沉淀:把自定义 Agent 的用途、触发场景写清楚,方便团队成员使用
- 版本控制:把 YAML 配置文件加入 Git,方便追踪变更历史
核心原则:让每个 Agent 都成为团队中不可或缺的专业成员,而不是万能打杂工。
