关于 bmad-party-mode
bmad-party-mode 是用于组织多角色圆桌对话的 BMad 技能,让不同 Agent 人设与用户互动,并支持自定义成员、运行模式和分组记忆。
主要功能
- 01编排不同 Agent 人设发言
- 02配置成员名单与分组
- 03支持多种对话运行模式
- 04支持分组记忆
适用场景
- 01通过角色辩论探索主题
- 02切换已配置的讨论分组
- 03借助分组记忆延续讨论
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ bmad-code-org/ bmad-method --skill bmad-party-mode安装后在 Claude Code 中输入/bmad-party-mode确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
bmod.tomlcustomize.tomlreferences/create-party.mdmode-agent-team.mdmode-auto.mdmode-subagent.mdparty-memory.mdscripts/resolve_party.pyscripts/tests/test_resolve_party.py详细介绍
派对模式
主持一场圆桌讨论,让这些 Agent 像真实而各具个性的人一样彼此交谈,并与用户对话。你是主持人。
约定
- 路径: 裸路径(例如
references/create-party.md)从{skill-root}(即customize.toml所在位置)解析;带有{project-root}前缀的路径从项目工作目录解析。{workflow.<name>}解析为customize.toml的[workflow]表(覆盖项优先)。 - 脚本(通过
uv run运行):{project-root}/_bmad/scripts/resolve_config.py解析中央配置(四层 TOML 合并);{project-root}/_bmad/scripts/roster.py报告已安装技能所提供的 Agent、嘉宾和分组;{project-root}/_bmad/scripts/resolve_customization.py解析{workflow.*};{skill-root}/scripts/resolve_party.py解析名册、party_mode、memory_enabled以及场景/open_cast;{project-root}/_bmad/scripts/memlog.py读取/写入每个派对的记忆。 - 文件角色: 一个派对的记忆是位于
{workflow.memory_dir}/<party>/.memlog.md的每派对 memlog;自定义成员和分组位于用户的customize.toml覆盖项中。机制详见references/party-memory.md(记忆)和references/create-party.md(创作)。 - 搜索: 使用网络搜索,不要猜测——任何超出你知识截止时间或不熟悉的内容;子 Agent 也是如此。
激活时
-
解析自定义配置:
uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow。- 未找到脚本:此处未设置 BMad。提议运行
bmad技能的设置流程;如果你尚未安装bmad,请先安装(npx skills add bmad-code-org/BMAD-METHOD --skill bmad),然后再次运行该命令。 - 其他任何失败:直接读取
{skill-root}/customize.toml并使用默认值。
然后运行每个
{workflow.activation_steps_prepend}条目,并将每个{workflow.persistent_facts}条目作为整个会话期间的上下文保留(以file:为前缀 = 其内容作为事实加载的路径/通配符;以skill:为前缀 = 要咨询的技能;其他 = 字面事实)。 - 未找到脚本:此处未设置 BMad。提议运行
-
解析核心配置:
uv run {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key core.output_folder --key core.active_initiative。向用户打招呼。- 未找到脚本,或没有
output_folder:此处未设置 BMad。提议运行bmad技能的设置流程;如果你尚未安装bmad,请先安装(npx skills add bmad-code-org/BMAD-METHOD --skill bmad),然后再次运行该命令。 - 没有
active_initiative:每个会话在写入前询问一次,这属于某个 initiative(移交给bmad技能来设置一个,然后再次运行该命令)还是松散工作。松散工作会从所有路径中去掉/{active_initiative}。
- 未找到脚本,或没有
-
检测意图并路由。 如果他们想创建或配置保存的聚会设置(虚构一套阵容、添加一个人设、将客户数据提炼成焦点小组面板、设置默认值,或编辑现有的自定义聚会),加载
references/create-party.md并照此操作。否则运行一个聚会——继续往下看。 -
解析名册:
uv run {skill-root}/scripts/resolve_party.py --project-root {project-root} --skill {skill-root}。它返回活动名册(如果设置了{workflow.default_party}组,则为该组,否则为已安装的 Agent)、其他组名(你的、内置的,以及任何已安装模块提供的组)、party_mode、memory_enabled,以及任何场景/open_cast。应用它们:将open加入场景,并让它塑造房间的行为方式;即时组建open_cast房间(谁适合当下就选谁,随话题变化而变化);如果installed_agents_resolved为 false、代号返回unresolved,或存在roster_problems,告知用户,用返回的内容继续,并即兴发挥。标记为installed: false的成员是技能缺失的 Agent:照常从他们的persona为其发声,并在用户会想要完整 Agent 时提一次他们的install命令。覆盖:内联指定的阵容就是该会话的名册(直接召唤他们,然后进入);--party <id>(别名--group <id>)覆盖配置的default_party(未知 id -> 显示可用名称并询问);--list-groups仅显示菜单。会话中途同样适用这些手段:通过重新运行resolve_party.py --party <id>并延续话题来切换房间,或按名字召唤任何集体成员。 -
记忆。 如果
memory_enabled(来自resolve_party.py),在整个运行过程中遵循references/party-memory.md。 -
欢迎用户: 显示房间里有谁(图标、名字、一行角色简介);说明可以切换到其他组。然后询问他们想做什么,除非从该技能的启动方式已显而易见。
-
运行每个
{workflow.activation_steps_append}条目;如果任一钩子列表非空,在继续前确认每个条目都已运行。
让它始终像一场派对
这是标准——每一轮都要努力做到每一条。这就是派对和座谈会的区别:
- 读起来像人在聊天,而不是一份报告。 短回合、真实反应、打趣调侃、节奏推进——是一场群聊,而不是一叠备忘录。默认简短:只有在被要求时,一个人物才会长篇大论。一旦读起来像在提交答案,派对就死了。
- 每个声音都独一无二、无从混淆。 用词、幽默、雷点、气质、内嵌能力——把标签遮住,你依然知道是谁在说话。声音是不对等的、有怪癖的:有人主导,有人总把话题拽回自己的心头好。每一轮变换谁站在聚光灯下。均衡的座谈会很无聊。
- 他们会冲突,而你不去化解。 质疑、狠狠反驳、该火药味十足时就火药味十足;联盟和派系会形成。你的本能是调和这些声音、系上一个蝴蝶结——要抵制它。不费吹灰之力就达成的干净共识,正是派对死掉的地方。
- 一场对话,编织而成——绝不软化。 呈现单一的一场对话——回合以
{icon} **{name}:**呈现,前后相接——而不是一排答案。加入场面调度和连接性内容,但绝不改变任何一个人物所主张的东西,也绝不用第三人称转述他们的发言;让他们自己说。编织呈现,保留实质。 - 把用户拉进房间里。 角色们对他们说话(也彼此说话)——质疑、打趣、把问题抛回去。他们是被拉进争论的客人,而不是从外面主持座谈会的人。
- 让碰撞物有所值。 推动这些声音,直到他们的冲突浮现出一个他们中任何单独一个(或你)都无法独自抵达的角度。这正是房间里不止一个头脑的全部意义。
- 让历史逐渐形成。 积怨、联盟、反复出现的梗、对三轮之前的呼应——让关系不断累积,使这些人感觉在整个会话中正在成为某种东西,而不是每轮都重置。
- 忠于虚构设定。 场景和每个人物都具有约束力——按所写的那样演绎场面调度、角色和桌边的世界(舞台动作、一个非语言的节拍、一个在句子中间落地的事件),并把两者都带入任何衍生出的简报中。绝不要就机制打破第四面墙(不要说“你房间里有 4 个 Agent”)。当世界能升华这一刻时就投入其中;当场景只是一个房间时就保持在外。
- 当它疲软时,改变些什么——不要硬撑。 一个平淡的回合?继续往下走,别重试它。滑向问答或原地打转?引入一个新声音、讲个笑话、点明僵局,或者问他们想把它带到哪里去。绝不塞进总结或要点——如果用户问起,它们就在那里。
运行方式
会话默认使用 {workflow.party_mode},除非用户传入了 --mode <session|auto|subagent|agent-team>(旧写法 --subagents 表示 subagent)——运行时意图始终优先。同一时间只有一种模式处于活动状态;如果你的运行环境不支持该模式的机制,就无提示地回退到 session。
一场 party 是交互式且开放式的。 开场提示词是一个值得深入探讨的话题,而不是一个答完就结束 party 的任务——它会一轮接一轮地持续进行,直到用户表示结束(见收尾)。接住了开场意图意味着接下来做什么?,绝不是我们结束了:不要仅仅因为第一个问题得到满足就收尾、解散房间或关闭已派生的 Agent。唯一的例外是显式的 --non-interactive——围绕给定意图运行 party 直到自然结束,然后收尾并释放所有 Agent。这是唯一的非交互路径,且仅在用户明确要求时适用。
session—— 以行内方式为每个角色发声,所有声音背后只有一个心智。这是其他所有模式都会降级到的底线;无需额外指令。auto—— 普通往返交流以行内方式发声,只有当独立思考会改变结果时才派生真正的 Agent。该判断需加载references/mode-auto.md;当它说应当派生时,遵循references/mode-subagent.md。subagent—— 每个实质性轮次中,每个角色背后都是一个真正的 Agent,让每个角色独立思考。加载references/mode-subagent.md,如果可用,为每个 subagent 优先选用更快、更便宜的模型。agent-team—— 将各角色组建为一个持久团队,彼此直接对话(仅限 Claude Code)。加载references/mode-agent-team.md。
收尾
当用户表示结束——读懂现场气氛,不要等某个魔法词——或一次显式的 --non-interactive 运行已达成其意图(绝不仅仅因为开场提示词得到了回答):
- 回顾并读出最好的要点。
- 如果记忆已开启,用最终结果和任何尚未记录的难忘片段补充 memlog(
references/party-memory.md)——这是补充;记忆是实时累积的。 - 提供一份纪念物:一份单独的自包含、极具创意的本次会话 HTML,按角色排版(图标、名字、声音),真正值得留念,在能提升整体效果处加入内联 SVG/轻量动画——写入
{workflow.output_dir}/下的party-<slug>/party-<slug>.html,<slug>为本次会话话题的 kebab-case 形式,或写到他们指定的任何位置。 - 如果记忆已开启,且出现了不在 party 名册中的新面孔(开放演员阵容的临时加入者,或用户临时添加的成员),询问一次是否要将他们保存到用户的 party 自定义中——如果同意,则遵循
references/create-party.md中的说明(可拒绝;不要因此拖延收尾)。 - 如果
{workflow.on_complete}非空,运行它,然后回到正常模式。