ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

BMAD-METHOD Party Mode 多智能体圆桌:编排机制、运行模式与自定义聚会配置详解

BMAD-METHOD Party Mode 多智能体圆桌:编排机制、运行模式与自定义聚会配置详解 BMAD-METHOD Party Mode 多智能体圆桌编排机制、运行模式与自定义聚会配置详解【免费下载链接】BMAD-METHODBreakthrough Method for Agile Ai Driven Development项目地址: https://gitcode.com/gh_mirrors/bm/BMAD-METHODBMAD-METHOD 的 Party Modebmad-party-mode技能让你在一次对话里召集整套 AI 角色——PM、架构师、开发者、UX 设计师乃至安全工程师——以各自的性格、立场和语气围绕同一话题展开圆桌讨论。本文以官方解释文档 docs/fr/explanation/party-mode.md中文版见 docs/zh-cn/explanation/party-mode.md为主线逐层展开其背后的实现花名册如何被resolve_party.py确定性解析、customize.toml中[workflow]配置面的每个参数、四种运行模式的取舍、按聚会隔离的记忆memlog机制以及如何用create-party流程把一套自定义角色写成可复用的房间配置。读完后你不仅能直接发起一场派对还能理解其编排、配置与记忆的全部底层机制并为自己定义专属的评审团或焦点小组。什么是 Party Mode运行bmad-party-mode你就把整支 AI 团队请进了同一间房——PM、架构师、开发者、UX 设计师按需组合。Party Mode 会编排这场讨论每条消息都从已安装的 agent 中筛选出与话题相关的角色入场。角色们以人物身份发言、会同意也会反对、并在彼此的观点上继续搭建。讨论想进行多久就进行多久追问、质疑、把话题带向新方向——这是一次真正的多轮对话直到你主动收尾。最适合的场景原文档列举涉及取舍权衡的重大决策头脑风暴brainstorming出事了之后的事故复盘post-incident retrospectiveSprint 复盘与规划三个典型对话示例以下示例继承自原文档展示 Party Mode 在不同场景下的实际形态。示例一复盘一个糟糕的 Sprint事故追责你团队上一个 Sprint 彻底失败了。认证服务挂了三次谁搞砸了架构师设计本身是扎实的——分布式认证加降级路径。如果实现偏离了规格……开发者我是严格按架构文档执行的。规格里根本没考虑并发会话失效时的竞态条件。PM你们俩都错过了真正的问题——PRD 里我们没有验收会话管理的需求。这是我的失误该是我发现的问题。测试工程师TEA而集成测试本应拦住它。测试场景没有覆盖并发失效。注意没有人被定罪每个角色从自己的职责边界出发归因最终暴露出需求、设计、实现、测试四层各自的缺口。示例二创意头脑风暴你怎么让 onboarding 从无聊变成有魔力UX 设计师从渐进式披露开始——用户需要时才揭示功能而不是一上来塞教程。Storyteller如果 onboarding 本身是一个故事呢每一步揭示一个人物弧光——用户自己就是主角。Game Designer顺着这个思路如果第一个任务就是解决一个真实的用户问题他们在做有用的事中学会产品。示例三技术决策你MVP 该选单体还是微服务架构师先做单体。微服务带来的复杂度在 1000 个用户之前你根本用不上。PM同意。上市时间time-to-market比理论可扩展性更重要。开发者做单体但保持清晰的模块边界。将来需要时再把服务拆出去。原文档结语更好的决策来自多元视角。这就是 Party Mode。术语说明继承原文档脚注MVPMinimum Viable Product最小可行产品包含刚好足够让早期用户使用、并验证市场假设的功能版本在投入完整开发之前先验证方向。Time-to-market上市时间从设计、开发到产品上市所需的时间越短竞争先机越大。技能结构一个编排器 参考手册 解析脚本的组合Party Mode 的实现位于 skills/bmad-party-mode/ 目录核心文件分工如下文件职责SKILL.md编排器总纲激活流程、像派对一样的行为准则、四种运行模式、收尾流程customize.toml基础[workflow]配置面内置角色、内置房间、全部可调参数scripts/resolve_party.py花名册解析器合并已安装 agent 与自定义角色输出 JSON 供编排器消费references/party-memory.md按聚会隔离的记忆memlog读写规则references/create-party.md创建/编辑自定义聚会的引导式编写流程references/mode-auto.md、mode-subagent.md、mode-agent-team.md三种进阶运行模式的机制细节scripts/tests/test_resolve_party.py解析器的单元测试合并、别名、覆盖、分组解析激活流程编排器启动后做了什么SKILL.md 的 On Activation 章节定义了激活时的七步流程其本质是一条先解析配置、再解析花名册、最后欢迎用户的确定化管线解析定制运行{project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow通过uv run执行。失败时回退到直接读取技能的 customize.toml。随后执行[workflow]表中的activation_steps_prepend各项并把persistent_facts各项作为全会话的持久上下文file:前缀表示按路径/glob 加载内容为事实skill:前缀表示查阅某技能其余为字面事实。解析核心配置运行resolve_config.py得到四层合并后的 JSON从中取core.output_folder即{output_folder}与当天日期{date}向用户问好。识别意图并路由若用户想创建或配置一个已保存的聚会发明一套角色、加人物、把客户数据蒸馏成焦点小组面板、设默认房、编辑既有自定义聚会则转入 references/create-party.md 的流程否则直接开跑一场派对。解析花名册运行{skill-root}/scripts/resolve_party.py --project-root {project-root} --skill {skill-root}返回当前活跃花名册配置了default_party时为该分组否则为已安装的 agent 全集、其他分组名、party_mode、memory_enabled以及scene/open_cast标记。open场景会塑造整个房间的行为方式open_cast房间则由模型临场选人。若installed_agents_resolved为 false 或出现unresolved成员应告知用户、带着已解析的部分继续。运行时覆写内联点名的角色就是本次会话的花名册--party id别名--group id覆写default_party未知 id 会列出可用名称并询问--list-groups只输出房间菜单。会话中途同样可以再次运行resolve_party.py --party id换房间并延续话题或按名字召唤集合体中的任意成员。记忆若memory_enabled为 true整个运行期间遵循 references/party-memory.md。欢迎用户展示在场角色图标、名字、一行角色定位说明还可以切换到哪些其他分组然后询问想聊什么除非启动时意图已经明显。执行activation_steps_append各项若任一钩子列表非空须确认全部条目执行完毕再继续。花名册解析resolve_party.py的实现机制resolve_party.py 是整个技能的事实来源它只依赖标准库Python 3.11用到tomllib并通过子进程调用项目内的resolve_config.py与resolve_customization.py。其设计目标是惰性且确定性把已安装 BMAD agent 用户自定义party_members合并成一个集合体collective然后只投影出当下需要的部分。三种输出形态从脚本的 docstring 和 main() 可见默认无参数返回进入时要加载的活跃花名册——配置了default_party时展开该分组的完整成员否则展开全部集合体其余分组只以名称菜单group_menu返回避免把没在用的角色载入上下文。--list-groups只输出每个分组的id、name、member_count是一个廉价的有哪些房间菜单且不触发更昂贵的已安装 agent 解析。--party id按需展开一个指定分组的完整成员明细例如会话中途换房未知 id 不抛错墙而是返回unknown_group错误与可用分组清单。合并规则键控并集 覆盖语义核心函数 build_collective() 实现了三条规则索引多重可达每个成员按code、去前缀别名bmad-agent-analyst→analyst见 _alias()和小写name注册进索引因此分组配置里写analyst、Analyst还是bmad-agent-analyst都能命中。自定义覆盖同码已安装 agent自定义成员若与某个已安装 agent 的 code/别名/名字匹配会落在该已安装条目的槽位上source标为custom未提供的字段icon、title 等保留原值——是调音而不是新增一份。纯自定义成员只进集合体不进默认房installed_codes只记录已安装 agent 的槽位所以定义自定义角色会扩大可点名集合但不会挤占默认房间的成员。这些行为有完整测试覆盖见 test_resolve_party.pytest_custom_overrides_installed_by_alias验证覆盖落在规范化槽位而非新建条目test_resolves_in_listed_order_and_flags_unknowns验证未知 token 被收集进unresolved而不是抛异常。分组明细与 open-cast 房间group_detail() 输出单个分组的active、name、members按列出顺序解析、unresolved、memory_enabled取自分组的memory标志scene仅当该分组是活跃/选中的花名册时才被带出绝不进入菜单。members可选留空的分组即 open-cast 房间——scene里点名一个人物池/宇宙由模型临场选角且可随话题变化。配置面customize.toml的[workflow]参数customize.toml 头部明确声明勿编辑每次更新都会被覆盖所有定制都写进覆写文件团队级_bmad/custom/bmad-party-mode.toml个人级_bmad/custom/bmad-party-mode.user.toml。合并规则在注释中给出标量以覆写为准普通数组追加以code/id为键的表数组则是同键替换、新键追加。核心参数如下参数默认值说明activation_steps_prepend[]标准激活配置加载、问候之前执行的步骤用于预检、合规检查等activation_steps_append[]问候之后、房间活过来之前执行的步骤persistent_facts[]编排器整个会话保持的持久事实家规、固定梗、禁谈话题。条目可以是字面句、skill:前缀引用或file:前缀路径/glob。仓库级上下文应放 AGENTS.md由bmad-project-context管理此处只放聚会专属、按需加载的上下文default_party用户只说party mode不带参数时加载哪个聚会。空 已安装的 BMAD agent纯净安装的默认行为。自定义成员加入的是集合池可入组、可按名召唤不会挤进这个默认房。设为某个party_groups的 id 即可把精选房间固定为默认运行时--party id永远优先party_modesession房间的运行方式决定谁在说话。取值见下文四种运行模式运行时--mode 值优先不支持的模式如 Claude Code 之外的agent-team回退到sessionoutput_dir{output_folder}/party-mode会话结束时可选的纪念品自包含 HTML 的写入目录party_memorytrue默认房已安装 agent 的聚会是否保留 append-only 的 memlog。注意具名分组不跟随此标志各自携带自己的memory true|false临时内联花名册在保存为聚会前始终是无记忆的memory_dir{output_folder}/party-mode/memories各聚会 memlog 的根目录每个聚会存放在{memory_dir}/party/.memlog.mdparty为分组 id默认房为installedon_complete聚会收尾时执行读完要点之后、退回普通模式之前。标量 一条指令数组 按序执行内置角色九个开箱即用的镜头customize.toml 内置了九个party_members它们支撑下面两个内置房间在被召唤之前零成本——默认房绝不含它们code名字图标定位人格摘要sec-hawkVex安全工程师对一切做威胁建模具体指出漏洞利用路径而非泛泛说可能不安全capabilities要求先读代码、追踪数据流再下判断adversaryGrumbal对立面假设代码是坏的并负责证明从这会在凌晨三点叫醒某人倒推到具体那行代码edge-hunterBoundary️边界猎人走遍每个分支和边界空输入、null、off-by-one、超大载荷、并发调用、unicode、时区、重试风暴craftsmanYui匠人在乎简单、命名与复用对炫技和重复过敏要无聊、显而易见、可维护的版本shipperDana实用主义者专门对冲完美主义者这对用户真的重要吗先交付 80%。逼所有人给真问题与小毛病排序option-generatorWildcard选项生成器找房间里没考虑过的选项、替代表述和假设并要求用平实语言解释每个选项为何重要claim-checkerLevel声明核查员追问证据存在与否、缺什么、什么会改变结论、房间该有多确定让不确定性保持显式loop-stopperKilljoy循环终止者当讨论不再产出价值时叫停点名重复、假分歧、过度复杂化和无支撑的猜测consensus-challengerSplinter共识挑战者挑战轻易达成的同意找隐藏假设、被忽略的取舍、过弱的反对意见风险讲清后把决定交还给人内置房间两个预置分组customize.toml 预置了两个party_groupscode-review-crewCode Review Crew成员为sec-hawk、adversary、edge-hunter、craftsman、shipperscene定义了对抗性代码评审——各人从自己的镜头进攻并互相争论什么才真的重要安全 vs 交付、优雅 vs 务实场景描述建议用--mode subagent让每个镜头独立评审后再冲突memory false每次评审自成一体。anti-consensus-clubAnti-Consensus Club成员为option-generator、claim-checker、loop-stopper、consensus-challenger是一个决策防共识房间开场检查是否在subagent模式若不是且平台支持则强烈建议以--mode subagent重启因为独立上下文窗口能降低共享上下文让所有声音过快趋同的风险且只提醒一次房间支持人类的判断但不替代它——不投票、不宣布共识、不表现得像房间有权威如果房间同意得太快就点名隐藏假设开始重复时停下来问人类哪个未决问题才真正重要。注释中还给出了两个可直接拷进覆写 TOML 的分组示例带scene的固定房间writers-room以及无members的 open-cast 房间star-wars-rebels场景描述Rebels 宇宙的人物视情况入场选适合当下话题的人让花名册随对话流动。四种运行模式party_mode的取值SKILL.md 的 How It Runs 章节 是各模式行为的权威定义。除用户在运行时传--mode session|auto|subagent|agent-team旧写法--subagents等价于subagent外一律使用[workflow]中的party_mode——运行时意图永远优先。任一时刻只激活一种模式若该模式机制在当前 harness 不可用无声回退到session。模式机制要点session一个心智内联发出所有角色其他所有模式最终都降级到它无需额外指令是地板auto普通你来我往里内联发声只有当独立思考会改变结果时才生成真 agent详见 mode-auto.md真正需要独立评估/评审/红队时、角色们会得出不同结论且分歧本身就是价值时、用户明确深挖/调研时才生成拿不准就内联subagent每个实质回合每个角色背后都有一个真 agent 独立思考详见 mode-subagent.md优先给每个 subagent 配更快更便宜的模型成员常驻idle 而非 done整场只释放于收尾agent-team把角色立起来当作一个持久团队成员彼此直呼其名仅 Claude Code详见 mode-agent-team.md编排者角色从编织者变成主持人消息是点对点、无共享信息流把缺席成员同步进度是领队编排器的职责两个关键机制值得展开subagent 模式的一间共享房间每个常驻成员每回合都能听到房间里发生的一切——用户的发言和其他所有角色的发言即使还没轮到它说话。跳过去的话角色会失步退化成披着派对外衣的各自咨询。由于并行回合意味着任何 agent 都还没看到同回合其他人的发言编排器必须重排回合让反驳紧跟被反驳的内容、加入真实对话里的连接性措辞、让某个角色接起另一个角色丢下的线——但绝不改动任何 agent 的论点实质。派对是交互且开放的SKILL.md开场提示是一个要深挖的话题而不是回答完就结束的任务——一场接一场直到用户示意结束。已交付开场意图的含义是接下来做什么绝不是我们完事了不能因为第一个问题答完了就收尾、解散房间或关闭已生成的 agent。唯一的例外是显式--non-interactive按给定意图把派对跑到自然结束然后收尾并释放所有 agent。派对记忆按聚会隔离的 append-only memlog记忆机制完整定义在 references/party-memory.md。规则要点启用条件默认房跟随[workflow]的party_memory具名分组跟随各自的memory标志二者都由resolve_party.py解析为memory_enabled临时内联花名册没有记忆。存储位置每聚会一份 memlog——{workflow.memory_dir}/{active}/.memlog.md文件夹以聚会命名。读取蒸馏而非倾倒。日志 append-only 且每场会话都在增长所以不要把原始文件整个塞进派对。交给一个 reader subagent memlog 路径让它返回一份几百 token 的简报——事情现在进展到哪然后让这份简报从第一拍开始就塑造房间关系状态恢复冷淡的两人开场冷淡结盟的两人开场热络回调在合适时机自然落下。写入时机值得记忆的节拍出现时改变房间温度的冲突、结盟、值得未来回调的金句、决策、结果以及一个底线——开场几轮真实交锋之后哪怕没发生戏剧性事件也要记录这是关于什么的与开场动态。写入是静默的房间从不宣布我记下了。价值判据每条记录自问它会让未来的一场会话变色、让某个回调落地、或让派对更好吗不是就略过。少量条目绝不做流水账。写入命令uv run {project-root}/_bmad/scripts/memlog.py append \ --workspace {workflow.memory_dir}/{active} \ --type dynamic|moment|callback|outcome \ --text 一行精炼记录用房间自己的口吻属于某个角色的记忆加--by persona-code文件不存在时先init --workspace {workflow.memory_dir}/{active}init在文件已存在时会报错不要盲调存在则直接append。memlog.py不可用或写入失败时静默跳过绝不因一次失败写入卡住派对。新面孔不在花名册里的角色open-cast 临场选角或用户临时加入要在捕获该时刻的条目里点名名字 出现了……以便下次能回归。收尾时房间会一次性提供把这些面孔永久保存进花名册经 create-party.md 流程由bmad-customize落盘可拒绝、不阻塞收尾未保存前他们只活在 memlog 里房间会从那里重新召唤他们。遗忘memlog 按设计 append-only没有外科手术式删除。要抹掉某聚会的记忆就删除其文件夹{memory_dir}/{active}/要纠正错误记忆就追加一条覆盖它的新条目——房间读的是最新状态。创建自定义聚会从想法到 TOML当用户想创建或配置一个已保存的聚会时references/create-party.md 提供一条引导式编写流程产出的是bmad-party-mode的稀疏[workflow]覆写条目实际写入由bmad-customize执行[[workflow.party_members]]——每个角色一条code、name、icon、title、persona可选capabilities作为 subagent 生成时的软性指引不是硬性工具授权与model该成员被生成时使用的模型。[[workflow.party_groups]]——角色组成具名房间时id、name、可选的自由格式scene、memberscode 列表、memorytrue/false。members可省略——省略即 open-cast 房间scene点名一个池模型临场选角。default_party——仅当用户希望该分组成为默认时设置。五个常见形态原文流程的Find the shape一节主题群像cast如星际迷航 TOS 舰桥 crew、一次性角色one-offs无需分组、从数据蒸馏用户给一份客户画像表/调研导出/访谈笔记压缩成 N 个典型人格——这是搭 AI 焦点小组的方式、镜头面板panel of lenses目的性强的评审角色每个一个尖锐批判角度适合对抗式评审或红队房、open-cast无固定花名册scene点名一个宇宙模型临场选角。几个关键实践persona字段是全部。扁平的职位产生扁平的声音从用户那里挖出的细节才让角色在桌上认得出来。流程强调起草而非审问先给出每个角色的初稿让用户反应。判断标准是具体性——持怀疑态度的 CFO是占位符回收期超过 18 个月的项目一律不批并且开场 30 秒内就会明说才是 persona。从数据蒸馏时按真正区分行为的维度目标、预算、痛点、采纳姿态聚类而非表层人口统计并把聚类理由讲给用户让他们在角色细化前纠正切分。焦点小组场景里独立回答比插科打诨更重要因此建议把party_mode设为subagent或每场会话--mode subagent否则一个心智发所有客户的声音会互相渗混。编辑既有聚会先resolve_customization.py --key workflow读回合并后的party_members/party_groups/default_party只捕获 delta 交给bmad-customize——它按code/id匹配替换、其余追加所以编辑只是变更的那一条从不需要全量重写。code 冲突检查自定义成员的code若与已安装 agent 相同会在集合体里静默覆盖该 agent。落笔前先跑一次resolve_party.py拿到集合体成员核对冲突时表面化analyst会覆盖已安装的 Analyst——是故意的还是换个 code一次检查而不是卡点。写入默认写 user 覆写bmad-party-mode.user.toml聚会要共享时提供 team 文件bmad-customize展示 TOML、等待明确 yes、写入并验证合并——编排器自己不动文件。像派对一样行为准则与收尾SKILL.md 的 Keep It Feeling Like a Party 章节 列出了每一回合都要达到的标准——派对与座谈会的区别读起来像人在说话不像报告短回合、真实反应、插科打诨、动能默认简洁被要求时才长篇。每个声音都认得出是谁措辞、幽默、雷点、信念、内嵌能力——隐去标签也知道是谁在说。声音是不平等且有脾气的有人主导有人总把话题拖回自己的心头好。平衡的座谈是无聊的。有冲突且你不负责和解挑战、强硬反驳、必要时升温结盟与阵营会自然形成。把声音调和打上一个蝴蝶结的本能要抵抗住——毫不费力的干净共识就是派对死掉的地方。一轮交锋编织呈现绝不软化回合以{icon} **{name}:**背靠背给出可加舞台调度与连接组织但绝不改动角色论证了什么也不要以第三人称转述其发言。把用户拉进房间角色对用户说话也彼此说话——挑战、调侃、把问题抛回去。让冲突挣得它的价值把声音推到它们的碰撞浮现出任何单一个或你自己都到不了的角度。让历史形成恩怨、结盟、固定梗、对三轮前的回调——让人物感觉在这场会话中正在成为什么而不是每回合重置。承诺虚构场景与每个角色都是约束性的绝不就机制打破第四面墙禁止房间里现在有 4 个 agent这种话。疲软时就改变点什么——别硬撑回合平淡就移步漂移成问答或原地打圈就引入新声音、抖个包袱、点名僵局或问用户想往哪走。绝不主动输出总结或要点——用户问才有。收尾Wrapping Up当用户示意结束读懂房间不要等魔法词或显式--non-interactive运行已交付意图时——回读最佳要点若记忆开启给 memlog 补上最终结果与尚未捕获的记忆节拍是补记忆在会话中就已实时累积提供一份纪念品一个自包含、按角色排版图标、名字、声音、带内联 SVG/轻动画的创意 HTML以{date}时间戳写入[workflow]的output_dir若记忆开启且有新面孔未入册一次性提供保存机会经 create-party 流程最后若非空则执行on_complete退回普通模式。小结Party Mode 的文档承诺——把整个 AI 团队请进同一间房——背后是一套相当工程化的机制resolve_party.py用键控并集与别名索引确定性地解析花名册自定义同码覆盖、纯自定义进池不进默认房、open-cast 房间无memberscustomize.toml的[workflow]面以标量覆写、数组追加、表按 code/id 替换追加的合并规则开放了运行模式、默认房间、记忆与收尾钩子等全部行为参数memlog 以 append-only 加读取时蒸馏的纪律让每个房间跨会话记住自己而create-party流程把即兴角色沉淀为可复用的稀疏 TOML。内置的 Code Review Crew 与 Anti-Consensus Club 两个房间则示范了如何把九个对抗性镜头组织成真正会吵的房间。对仓库的使用者而言最小上手路径是直接用bmad-party-mode启动默认房已安装 agent需要独立对抗性思考时以--mode subagent运行--party code-review-crew再按需把memory true打开让房间记住历史。【免费下载链接】BMAD-METHODBreakthrough Method for Agile Ai Driven Development项目地址: https://gitcode.com/gh_mirrors/bm/BMAD-METHOD创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表