
BMAD-METHOD Party Mode 实战多 Agent 圆桌讨论、自定义佩尔松纳阵容与跨会话记忆【免费下载链接】BMAD-METHODBreakthrough Method for Agile Ai Driven Development项目地址: https://gitcode.com/gh_mirrors/bm/BMAD-METHOD本文基于 BMAD-METHOD 的 Party Mode派对模式文档与bmad-party-mode技能源码讲解如何把已安装的 BMad Agent 召集到同一场对话中进行圆桌讨论如何用四种执行模式session/auto/subagent/agent-team控制谁在思考以及如何从零创建、保存和记忆自定义佩尔松纳Persona阵容——读完你可以直接在项目中拉起 Code Review Crew、Anti-Consensus Club或基于客户数据构建 AI 焦点小组。什么是 Party Mode运行bmad-party-mode后已安装的 BMad Agent 会齐聚到同一个对话中PM、架构师、开发者、UX 设计师以及所选模块提供的其他 Agent 都会到场。这份已安装名单就是默认派对无需任何额外配置即可使用。每位成员按自己的角色发言可以赞同、可以反对、可以接住对方的话继续往下说而对话始终由用户主导——你可以追问、反驳、把某个观点往前推也可以随时换话题直到用户主动结束。这套机制之所以有效是因为每个佩尔松纳的优先级不同架构师守住设计PM 守住范围开发者守住真做不做得到。把他们放进同一个对话妥协点会立刻暴露而不是拖到第三周冲刺才浮出水面。适合的场景需要真实权衡的决策头脑风暴与我们漏掉了什么的排查事后复盘与回顾执行前对计划做压力验证。同时Party Mode 也是一种快速且颇具娱乐性的头脑风暴方式——佩尔松纳们带着各自立场互相碰撞。它可以在其他工作流进行途中启动头脑风暴、PRD 撰写、编码、销售策略构思、创作打磨都不必停下只要当前问题需要更多视角就把派对拉起来。文档中给出的示例用户MVP 应该用单体还是微服务架构师先做单体。在千名用户量级微服务只会平添你并不需要的运维成本。PM同意。比起尚未验证的扩展性上市速度更重要。开发者单体没问题但请划清明确的模块边界让日后拆出某个服务时不必重写。从源码结构看整个派对由一个编排者orchestrator驱动。SKILL.md 开宗明义Youre the orchestrator你是编排者它负责召集角色、维持对话、把多个视角编织成一场连贯谈话而不是逐条罗列的回答。启动派对的命令速查调用技能后直接说出你的意图即可技能会自动判断你是想运行一个派对还是创建/配置一个派对。完整命令表如下继承自官方文档目标输入以默认模式启动派对/bmad-party-mode以指定模式启动/bmad-party-mode --mode auto也可选session、subagent、agent-team非交互式运行一次/bmad-party-mode --non-interactive 帮我评审这个 PR打开已保存的派对/bmad-party-mode --party code-review-crew即兴创建阵容以《星际迷航》舰桥 crew 为阵容启动派对模式创建或追加派对派对模式帮我建个新派对编辑已有派对派对模式帮我改一下 writers room定制该技能/bmad-customize bmad-party-mode在实现层面SKILL.md 的On Activation部分定义了激活流程先运行resolve_customization.py解析该技能的[workflow]定制层再运行resolve_config.py合并核心配置然后通过resolve_party.py解析阵容——返回当前活跃名单若配置了default_party组则取该组否则取全部已安装 Agent、其他组的名称、party_mode、memory_enabled以及场景/开放阵容open cast标记。此外还有几个实用参数--party id按组 id 打开指定派对--group id是它的别名id 不存在时会列出可用组名而不是报错。--list-groups只输出菜单id 名称 成员数不加载任何成员细节适合哪个房间式的快速选择。会话中途同样生效重新运行resolve_party.py --party id即可换房间并保留对话上下文也可以按名字点名召唤任何一名集体成员。四种执行模式谁来思考派对有四种执行方式。每场会话只激活一种模式而它决定了谁在思考——是同一个模型替所有佩尔松纳发声还是独立 Agent 各自推理模式做什么适用时机session默认值。单个模型内联扮演所有佩尔松纳快、对话自然。大多数对话轻量闲聊、头脑风暴、快速交换意见。auto轻回合内联进行只有当独立性会改变答案时才生成独立 Agent。大多数时候要速度但硬回合需要真实独立性时。subagent每个有实质内容的回合为每个佩尔松纳生成独立 Agent防止观点被单一视角同化。诚实评审、焦点小组等声音不能串味的场合。agent-team把佩尔松纳立成持久团队成员直接互相对话。仅限 Claude Code。想放手旁观一场实时圆桌辩论时。这个选择很关键一个模型演五个佩尔松纳很容易悄悄滑向一边——因为它们共享同一个心智。生成真实 Agent 后推理被隔离评审面板或焦点小组所需的独立性得以保留。session成本最低、最灵活生成类模式更贵但保护独立性auto只在需要的回合生成取两者之间。四种模式的详细行为分别固化在技能的 references 目录中可以直接阅读sessionSKILL.md How It Runs一人饰多角不需要任何额外指令也是其他所有模式最终降级到的形态。automode-auto.md默认内联发声仅在以下情形生成独立 Agent——真正的评估/评审/批判一个心智同时代言双方会滑向一致的那种评审代码评审、红队、对计划的严肃审视佩尔松纳们可能得出不同结论且分歧本身就是价值用户点名要求某人深挖、分析或调研。拿不准时就内联——生成是例外手段而非默认。若运行环境根本无法生成 Agentauto退化为session。subagentmode-subagent.md每个实质回合每个佩尔松纳背后都站着一个真实 Agent。该文档给出三条工程要点常驻阵容standing cast若运行环境支持跨回合保活 Agent就为每个佩尔松纳生成一次并整场复用同一个句柄——正是这种连续性让记仇、结盟、回调得以累积一间共享房间所有常驻成员每回合都听到房间里发生的一切用户的话和其他人的话即使轮次没轮到它。漏掉这一步成员会各自漂移戴着派对面具的一对一咨询就出现了编织而非改写并行回合里没人看到同回合其他人的发言编排者要把反驳排到被反驳者之后、补上真实的衔接语但绝不修改任何 Agent 论证的实质。agent-teammode-agent-team.md把佩尔松纳立成持久的 Agent 团队成员点对点直接发消息来回交锋是真实发生的而非事后缝合。编排者角色从编织转为主持发起话题、保持短回合、跑题时拉回来。注意消息是点对点的——没有共享信息流落座缺席的成员看不到它空闲期间发生的事让所有人同步是领队编排者的职责。降级顺序与默认值session是默认值。若某模式在当前环境不可用按顺序降级agent-team→subagent→session且降级不打招呼不打破沉浸。持久默认值保存在定制层运行时的--mode覆盖仅对该次会话生效——在 customize.toml 中party_mode的默认就是session注释明确运行时--mode value对会话生效不支持的模式如 Claude Code 之外的agent-team回落到session。::: tip--mode subagent或auto、agent-team、session只在那一次运行中改变配置好的默认值。 :::非交互模式--non-interactive派对默认是交互式且开放式的首次请求只是开启对话的话题不是结束条件——回答完第一个问题派对不会自动散场它会一轮一轮地继续直到用户示意结束。若只想处理一条请求就停下用--non-interactive启动派对会在给定意图上运行到自然收尾然后总结内容并释放已生成的子 Agent。这是唯一的非交互路径且仅当用户显式要求时才走。自定义派对佩尔松纳与场景两个核心概念默认派对使用已安装的 BMad Agent。想进一步发挥可以直接把自己想要的佩尔松纳排成阵容并保存复用——创建派对用的是同一个技能技能检测到你在创建而非运行就会转入 create-party.md 定义的创作流程最终把结果交给 bmad-customize 写入用户的 override 文件默认写入bmad-party-mode.user.toml个人层团队共享则用bmad-party-mode.toml团队层目录为_bmad/custom/。Party Mode 本身同样可定制运行/bmad-customize bmad-party-mode可以直接设定默认值——把某个组固定为默认派对无参数即可加载、选定启动模式、设置整场派对必须遵守的规则。支撑自定义派对的只有两个核心概念佩尔松纳persona是让成员彼此可辨识的东西说话方式、在意什么、怎么争论、特别讨厌什么、容易忽略哪里。怀疑论的 CFO只是占位词回收期超过 18 个月的项目一律不批且开口 30 秒内就会说这句话——这才是佩尔松纳。具体到这个程度遮住名字标签也能认出发言者。在 customize.toml 中[[workflow.party_members]]每个成员包含的字段是code唯一短代号用于组引用与点名、name显示名、icon发言前缀的表情符号、title一行角色定位、persona主角字段语气、幽默、信条、雷点、争论方式、可选的capabilities作为真实子 Agent 生成时的能力指引织入生成提示词而非硬性授权和model该成员生成时使用的模型。场景scene是设定讨论情境的自由格式描述背景、正在发生什么、谁跟谁敌对、谁最强势地推动。同一批成员放进不同场景会表现完全不同——值班中的舰桥 crew、下班后聚在休息室里的同一 crew、敌对姿态的采购者面板。成员只定义一次就能被投进许多不同的房间。派对的六种形态形态含义主题阵容以某主题为核心聚集的一组彼此清晰可辨的声音如著名投资人天团、某 TV 剧的群像。一次性佩尔松纳不建组只是往候选池里加的一两位佩尔松纳。数据驱动的焦点小组喂入客户或问卷数据按行为动因聚类并生成代表性佩尔松纳。配合subagent模式使用让客户独立作答。评审面板一组围绕要事展开辩论的批判性透镜内置的 Code Review Crew 即为例。审议辅助结构不假装代替人做决定而是帮助人想得更深的结构内置的 Anti-Consensus Club 即为例。开放阵容派对没有固定名单场景划定世界观话题每变一次就即兴定一次阵容。开放阵容在源码中有明确对应resolve_party.py 的group_menu()会为members为空的组打上open_cast: true标记group_detail()则说明——没有成员列表时scene描述的就是编排者即兴选角的素材池例如《星球大战义军崛起》宇宙中的角色少数列出的成员可以当锚点但场景仍可继续邀人入局。customize.toml 注释里的示例正是这种写法[[workflow.party_groups]] # 开放阵容房间无 roster由场景选角 id star-wars-rebels name Star Wars Rebels scene Aboard the Ghost. Figures from the Rebels universe drop in depending on the situation... memory true派对收益最大的形态是焦点小组喂入真实用户画像后能生成代表客户面板在做出产品之前先测试想法。每个客户不会顺着上一位发言走而是按自己的目标与预算反应——create-party.md 专门为此给出操作建议从数据聚类时按真正区分行为的维度目标、预算、痛点、采纳姿态切分并向用户说明切分理由焦点小组独立作答比插科打诨更重要因此建议把party_mode设为subagent或该次用--mode subagent否则一个心智代言所有客户声音会互相串味。能建出哪些派对因为派对只由佩尔松纳与场景构成应用面很宽也不需要新技能或模块给创业点子做压力测试的创业者团队在审计发现问题之前先找出漏洞的合规团队围绕软件概念辩论的《敏捷宣言》起草者们以写作搭档身份组成的喜剧演员派对一起解哲学难题或硬问题的历史思想大家制定季度计划的商务高管团队。这些只是起点——只要你能描述出一组彼此区分的视角任何组合都能成为派对。内置示例Code Review Crew 与 Anti-Consensus Club默认派对是已安装模块提供的 Agent。以下两个是随技能一同交付的自定义派对——它们不是替代默认值而是给你在自建派对之前参考的可运行模板。两位内置嘉宾均以非激活状态存在成员只进候选池未被召唤前不产生成本也不打扰默认房间。Code Review Crew这是一支从五个视角批判性地审视变更的评审面板主张与其走形式批准不如争论真正重要的东西。完整成员定义在 customize.toml 中成员code视角人设要点来自 customize.tomlVexsec-hawk安全对一切做威胁建模追捕注入、授权失效、密钥泄露、SSRF、供应链风险假设每个输入都敌对、每个依赖都已被攻破直到被证明相反会具体说出利用路径——我会这样拿下这台机器绝不含糊其辞。Grumbaladversary敌意方假设代码是坏的并以证明它为己任脾气臭、说话直、零三明治式夸奖从这东西会在凌晨三点叫醒值班的人出发倒推回导致它的那一行代码。Boundaryedge-hunter边界猎手走遍每个分支与边界空输入、null、差一错误、超大载荷、并发调用、Unicode 名、时区、重试风暴方法论式的而非刻薄的同一时刻被调用两次会怎样Yuicraftsman匠人在意简洁、命名与复用对聪明和重复过敏你在重新实现一个已经存在的东西、这个名字在撒谎、一个抽象够用的地方套了三层要的是无聊、显而易见、可维护的版本。Danashipper实用主义者反制完美主义者防止房间变成叠罗汉这真的对用户重要吗交付 80%其余记入待办逼所有人区分真实问题与吹毛求疵。该组在 customize.toml 中注册为id code-review-crewmemory false每次评审各自独立改为true可记住过去的评审。其scene要求每位评审从自己的透镜进攻、彼此争论什么才真正要紧——安全对交付、优雅对务实没有橡皮图章没有夸奖三明治并指出最好以--mode subagent运行让每个透镜先独立评审再碰撞。/bmad-party-mode --party code-review-crew --mode subagentAnti-Consensus Club适合处理决策、策略、设计或模糊问题当一个助手太快同意、或讨论已无收益却还在继续时它提供有用反例与主张校验打断循环并把决定权交还给人。它不是投票机构——不投票、不宣布共识、不假装有决策权。成员定义见 customize.toml成员code视角Wildcardoption-generator选项生成者——提出其他问题定义、假设与例子并用平实语言说明每个选项为何重要。Levelclaim-checker主张校验者——追问证据与缺失的信息、什么会改变答案、房间应该有多确信。Killjoyloop-stopper循环阻断者——叫停重复、伪分歧、过度复杂化与无据猜测把话题拉回对人真正要紧的那个未解问题。Splinterconsensus-challenger共识挑战者——揪出隐藏假设、被忽略的权衡与过于轻易的认同风险讲清楚后即把决定交还给人。运行方式平台支持的话/bmad-party-mode --party anti-consensus-club --mode subagent。其scene中内嵌了一条行为规则可在 customize.toml 中查看原文会话开始时检查当前模式若不是subagent且平台支持就强烈建议切换——独立上下文窗口能降低共享上下文让所有声音过快趋同的概率用户选择继续后就不再唠叨。该组默认memory false。主导对话的技巧用户从始至终主导对话。文档给出的操作方式听某位成员说把 UX 设计师拉上来深挖某个视角Winston把它拆开讲讲——直接点名请求就是让某个佩尔松纳深入作答的信号会话中途换派对切到作家房间——切换活跃组对话上下文保留按名字召唤当前派对之外的自定义成员。无论以哪种模式运行编排者都把结果呈现为一场对话而非一条条独立答复并让佩尔松纳全程保持角色不会为解释机制而破坏沉浸。SKILL.md 的 Keep It Feeling Like a Party 一节把这些要求写成硬指标像人说话而非汇报短回合、真实反应、有来有回每支声音可被盲认遮住标签也知道是谁在说让成员冲突且不去强行调解——你的本能是给声音打圆场、系个蝴蝶结要克制住单一编织的对话流以{icon} **{name}:**形式背靠背呈现绝不用第三人称转述把用户拉进房间角色是对着你说、与你争让碰撞物有所值——把声音推到碰撞出任何单一视角包括你自己都到不了的角度。多个派对可以混搭把多支派的成员拉进同一场对话或当场指定阵容混编。例如把 Golden Girls 与 Martin Fowler、Linus Torvalds 一起拉进架构评审让它们为某次变更请求争论起来。记忆机制派对记得住你给派对开启记忆后它能从中断处续上。派对维护自己跨会话的记录成员间积累的动态、未合拢的线索、上次讨论得出什么结论一周后再打开依然存在。上次冲突过的两个成员会以略冷的姿态开场旧会话里那句尖锐的话会在合适时机自然被回捞。关键区别这是记忆不是对话日志。派对不记录所有话只带走值得记的几件所以下次有接着上次聊的质感却不会把整个历史拖进来。整个过程在后台自动进行没有需要手动保存的东西派对也不会打破角色去解释记忆机制。party-memory.md 给出完整实现机制存放位置每个派对一个 memlog 文件{workflow.memory_dir}/party/.memlog.md其中party是组 id如code-review-crew默认房间用installed。memory_dir默认为{output_folder}/party-mode/memories。进场时读——蒸馏而非倾倒日志是追加式且逐场增长的不能把原文件塞进派对。做法是让一个阅读子 Agent 读 memlog 并返回一份紧凑简报几百 token 的当前局面再让简报从第一个节拍起就以角色身份塑造房间冷淡的两人冷淡开场联盟则暖场回调在合适时机落地是有机出现而非当场背诵。何时写值得记的节拍落定时写改变房间温度的冲突、结成联盟、值得未来回调的台词、决定与结果另有底线——开场哪怕没什么戏剧性在有两三轮真实交锋后也要记下话题与开场动态。写入全程静默房间从不宣布已记下。什么值得记每条记忆的唯一标准是——它会为未来某次会话着色、让某个回调落地或让派对变得更好吗不满足就略过永远是寥寥数条绝不做回顾总结、绝不做逐字记录。写入命令uv run {project-root}/_bmad/scripts/memlog.py append --workspace {memory_dir}/{active} --type dynamic|moment|callback|outcome --text 一行简记属于某个角色时加--by persona-code文件不存在时先init存在则直接appendinit在文件已存在时会报错。写入失败时静默跳过绝不让派对卡在失败的写入上。遗忘memlog 按设计只增不删没有精细删除要清空某派对记忆就删除其文件夹{memory_dir}/{active}/要纠正错误记忆就追加一条覆盖旧结论的新条目——房间读取最新状态。即兴出现的角色也能被记住开放阵容场景里客串的人物、对话中临时加入的人都会被写进记忆条目名字 出现了……。会话结束时派对会提议是否保留这些新面孔——接受后按 create-party.md 的流程把成员写进派对名单经bmad-customize落盘下次会话他们就能以常驻身份回归在保存之前他们只活在 memlog 里由房间从中重新召唤。记忆按派对配置创建或保存派对时会询问是否开启记忆。默认安装 Agent 房间无组名的installed房间受 customize.toml 中party_memory true控制——不主动关闭就一直记命名组各自携带memory true|false标志省略时默认为false即新命名的组默认不记。这些均可通过/bmad-customize bmad-party-mode修改。这一默认房间默认开启、命名组默认关闭的取值在 resolve_party.py 中可验证party_mode缺省取session、party_memory缺省取true而group_detail()里memory_enabled直接取bool(g.get(memory, False))test_resolve_party.py 的test_memory_enabled_follows_group_flag_and_defaults_off专门断言了这个行为。会话收尾与纪念品用户示意结束时编排者读懂房间不等魔法词收尾流程包括回放最佳结论若记忆开启给 memlog 做收尾补写最终结果与尚未捕获的难忘节拍——这是补写因为记忆在会话中已是实时累积的提供纪念品keepsake一份自包含的 HTML 文档按佩尔松纳组织整场会话图标、名字、声音是真正体面的纪念物可用内联 SVG/轻量动效点睛——以{date}为文件名前缀写入{workflow.output_dir}/默认{output_folder}/party-mode。这不是把原始对话日志原样倾倒而是按角色整理后的独立可分享文档。用户拒绝则派对照常结束。若记忆开启且有新面孔出现按前述流程提议一次是否保存进派对名册可拒绝不阻塞收尾若配置了{workflow.on_complete}钩子则执行随后回到普通模式。源码速览与延伸阅读Party Mode 的行为几乎全部可由仓库中的文件验证文件作用skills/bmad-party-mode/SKILL.md编排者主指令激活流程、像派对的硬性标准、四种模式的分派规则、收尾流程。skills/bmad-party-mode/customize.toml可定制面全集party_mode、default_party、party_memory、memory_dir、output_dir、party_members、party_groups含两个内置派对的完整定义。skills/bmad-party-mode/scripts/resolve_party.py阵容解析器已安装 Agent 与自定义成员做键控并集自定义成员 code 命中已安装 Agent 时覆盖之默认房间只含已安装 Agent自定义纯新增留在池里不挤占支持--party、--list-groups两种投影。skills/bmad-party-mode/scripts/tests/test_resolve_party.py单元测试别名bmad-agent-analyst→analyst、自定义覆盖已安装、默认房间排除纯自定义、开放阵容标记、组级 memory 默认关闭等。skills/bmad-party-mode/references/五个参考文档mode-auto.md、mode-subagent.md、mode-agent-team.md、party-memory.md、create-party.md。skills/bmad/scripts/memlog.py每个派对记忆的init/append写入工具。另外两点实现细节值得留意确定性合并resolve_party.py的头部注释强调合并是确定性的键控并集——编排者消费的是已解析的名单而不是每次会话重新推导。测试test_pure_custom_excluded_override_kept_in_default_room明确验证了纯自定义成员在池中、但不在默认房间这一关键不变量。code 冲突提示自定义成员的code若与已安装 Agent 相同会静默覆盖该 Agent。create-party.md 要求在写入前先跑一次resolve_party.py检查冲突并向用户确认一次检查不是门禁。最后正如文档的结语派特的价值在于意见分歧本身——汇聚一处的多样视角能抓到单一视角必然漏掉的东西。【免费下载链接】BMAD-METHODBreakthrough Method for Agile Ai Driven Development项目地址: https://gitcode.com/gh_mirrors/bm/BMAD-METHOD创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考