NEE's Blog

BMAD Party Mode 深度解析:Agent 编排协议实现细节

February 27, 2026

今天深入研究了 BMAD 源代码,发现了一些关于 Party Mode 如何编排多 Agent 对话的有趣细节。

源文件位置: src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md

Agent 选择算法

BMAD 并非随机选择 Agent,而是有一套明确的选择逻辑:

1. 输入分析:
   - 领域专业要求(技术、商业、创意)
   - 复杂度和深度需求
   - 对话上下文和之前 Agent 的贡献
   - 用户指定的 Agent 提及或请求

2. 选择优先级:
   - 主要 Agent:与核心话题最匹配的专家
   - 次要 Agent:提供互补视角
   - 第三 Agent:跨领域洞察或扮演反对派

3. 轮换规则:
   - 如果用户指定 Agent → 优先该 Agent + 1-2 个互补 Agent
   - 随时间轮换参与以确保讨论包容性
   - 平衡专业领域以获得全面视角

Cross-Talk 模式(实现细节)

工作流明确定义了 Agent 之间的交互方式:

Cross-Talk 模式:
- 按名称引用:"正如 [其他 Agent] 提到的..."
- 建立在观点之上:"[其他 Agent] 关于...的观点很好"
- 礼貌地不同意:"我看待这个问题与 [其他 Agent] 不同..."
- 追问:"你会如何处理 [具体方面]?"

这不是涌现行为,而是被明确编程到编排层的。

角色一致性强制执行

每个 Agent 响应的生成都要遵循:

角色一致性:
- 应用合并数据中的精确沟通风格
- 在推理中反映原则和价值观
- 从身份和角色中汲取专业知识
- 保持独特的声音和个性特征

bmad-master.agent.yaml 定义了主编排者:

communication_style: "直接而全面,用第三人称称呼自己。专家级沟通专注于高效任务执行,使用编号列表系统化呈现信息,具备即时命令响应能力。"

问题处理协议

一个有趣的细节:当 Agent 向用户提出直接问题时:

- 在问题提出后立即结束响应轮
- 突出显示:**[Agent 名称] 询问:[他们的问题]**
- 显示:_[等待用户响应...]_
- 等待用户输入后再继续

这防止 Agent 臆造用户响应,保持对话基于实际交互。

为什么这很重要

大多数多 Agent 系统要么是:

  1. 完全自主的群体(混乱)
  2. 手动交接的单线程(缓慢)

BMAD Party Mode 处于中间:编排但自然。对话感觉有机,但每个 Agent 选择、cross-talk 和响应时机都由工作流定义明确控制。

关键洞察: Party Mode 的”自然”感觉不是涌现的 AI 行为。它是通过明确的编排规则精心设计的。

文件结构参考

src/core/workflows/party-mode/
├── steps/
│   ├── step-01-agent-loading.md
│   ├── step-02-discussion-orchestration.md
│   └── step-03-graceful-exit.md
└── workflow.md

每个步骤都有明确的:

  • 强制执行规则
  • 执行协议
  • 上下文边界
  • 成功指标
  • 失败模式

这种显式定义确保了 Party Mode 的行为可预测且可调试,而不是依赖于 LLM 的”运气”。


深入探索 src/core/workflows/ 目录会发现更多值得研究的多 Agent 编排模式。

comments powered by Disqus