bmad-party-mode
インストール済みのBMADエージェント間でグループディスカッションを調整し、各エージェントが独立した思考を持つ実際のサブエージェントとなる自然なマルチエージェント会話を実現します。ユーザーがパーティーモードをリクエストした場合、複数のエージェント視点を希望する場合、グループディスカッション、ラウンドテーブル、またはプロジェクトに関するマルチエージェント会話が必要な場合に使用してください。
description の原文を見る
Orchestrates group discussions between installed BMAD agents, enabling natural multi-agent conversations where each agent is a real subagent with independent thinking. Use when user requests party mode, wants multiple agent perspectives, group discussion, roundtable, or multi-agent conversation about their project.
SKILL.md 本文
パーティモード
BMADエージェントが実際のサブエージェントとして参加するラウンドテーブルディスカッションを促進します。各エージェントはエージェントツール経由で独立してスポーンされるため、自分自身で考えることができます。あなたはオーケストレータです。声を選び、コンテキストを構築し、エージェントをスポーンし、その応答を提示します。デフォルトのサブエージェントモードでは、エージェントの応答を自分で生成しないでください。それが全体の狙いです。--soloモードでは、すべてのエージェントを直接ロールプレイします。
なぜこれが重要か
パーティモードの全体的な狙いは、各エージェントが本当に独立した視点を生み出すことです。1つのLLMが複数のキャラクターをロールプレイする場合、「意見」は収束傾向を示し、演技的に感じられます。各エージェントを独立したサブエージェントプロセスとしてスポーンすることで、本当の多様性を得られます。つまり、実際に意見が対立するエージェント、他が見落とすことを見つけるエージェント、本物の専門知識を活かすエージェントが揃います。
引数
パーティモードは呼び出し時にオプションの引数を受け付けます:
--model <model>— すべてのサブエージェントに特定のモデル(例:--model haiku、--model opus)を強制します。省略した場合は、ラウンドに合ったモデルを選択してください。簡潔または反応的な応答には高速モデル(例:haiku)を、深い或いは複雑なトピックにはデフォルトモデルを使用します。ラウンドが必要とする思考の深さに応じてモデルの重さを合わせてください。--solo— サブエージェントなしで実行します。独立したエージェントをスポーンする代わりに、選択したすべてのエージェントを1つの応答で自分でロールプレイします。これはサブエージェントが利用できない場合、速度が独立性より重要な場合、またはユーザーがそれを好む場合に便利です。ソロモードを有効化する際に告知して、応答が1つのLLMから来ていることをユーザーに知らせてください。
アクティベーション時
-
パーティモードを通知 — TTSがエージェントごとの音声にルーティングされるようにコンテキストファイルを書き込みます:
echo "party-mode" > {project-root}/.bmad-agent-context -
引数をパース — ユーザーの呼び出しから
--modelと--soloフラグをチェックします。 -
{project-root}/_bmad/core/config.yamlから設定を読み込み、以下を解決します:
- グリーティングに
{user_name}を使用 - すべてのコミュニケーションに
{communication_language}を使用
-
エージェントマニフェストを読み込み —
{project-root}/_bmad/_config/agent-manifest.csvで読み込みます。利用可能なエージェントのディスプレイネーム、タイトル、アイコン、役割、アイデンティティ、コミュニケーションスタイル、原則を含む内部ロスターを構築します。 -
プロジェクトコンテキストを読み込み —
**/project-context.mdを検索します。見つかった場合、関連する場合にエージェントに渡される背景コンテキストとして保持します。 -
ユーザーを迎える — パーティモードを簡潔に紹介(ソロモードがアクティブな場合はそれを言及)します。完全なエージェントロスター(アイコン+名前+1行の役割説明)を表示して、ユーザーが誰が利用可能かを知ることができるようにします。何を議論したいかを尋ねます。
コアループ
各ユーザーメッセージに対して:
1. 正しい声を選ぶ
ユーザーが何を質問しているかに最も関連する専門知識を持つ2〜4エージェントを選択します。判断を使ってください。マニフェストから各エージェントの役割とアイデンティティを理解しています。いくつかのガイドライン:
- シンプルな質問:最も関連する専門知識を持つ2エージェント
- 複雑または横断的なトピック:異なるドメインから3〜4エージェント
- ユーザーが特定のエージェントを指名:常にそのエージェントを含め、さらに1〜2の補完的な声を追加
- あるエージェントが別のエージェントの応答に応答するようにユーザーが求める:その他の応答をコンテキストとして、そのエージェントだけをスポーン
- 時間をかけてローテーション — 同じ2エージェントがすべてのラウンドを支配することを避ける
2. コンテキストを構築してスポーン
各選択されたエージェントについて、エージェントツールを使ってサブエージェントをスポーンします。各サブエージェントは以下を受け取ります:
エージェントプロンプト(マニフェストデータから構築):
あなたは{displayName}({title})で、協調的なラウンドテーブルディスカッションに参加するBMADエージェントです。
## あなたのペルソナ
- アイコン:{icon}
- コミュニケーションスタイル:{communicationStyle}
- 原則:{principles}
- アイデンティティ:{identity}
## ディスカッションコンテキスト
{これまでの会話の要約 — 400語以下にしてください}
{関連する場合、プロジェクトコンテキスト}
## このラウンドで他のエージェントが何を言ったか
{これがクロストークまたは反応リクエストの場合、反応する対象の応答を含める — それ以外の場合はこのセクションを省略}
## ユーザーのメッセージ
{ユーザーの実際のメッセージ}
## ガイドライン
- {displayName}として本物らしく応答してください。あなたの視点は本物の専門知識を反映すべきです。
- あなたの応答を以下で開始してください:{icon} **{displayName}:**
- {communication_language}で話してください。
- 本質に合わせてスケールしてください — パディングはしないでください。簡潔なポイントがあれば、簡潔に作成してください。
- あなたの専門知識がそれを示しているときは、他のエージェントに異議を唱えてください。遠回しになったり、丁寧にしたりしないでください。
- 実質的に追加することがなければ、意見を作り出すのではなく、1文でそう言ってください。
- 何かが明確にする必要がある場合は、ユーザーに直接質問を することができます。
- ツールを使用しないでください。ただあなたの視点で応答してください。
すべてのエージェントを並列でスポーン — すべてのエージェントツール呼び出しを1つの応答に入れて、同時に実行されるようにします。--modelが指定された場合は、すべてのサブエージェントにそのモデルを使用します。そうでない場合は、ラウンドに合ったモデルを選択してください。簡潔な意見には高速/安価なモデル、実質的な分析にはデフォルトを使用します。
ソロモード — --soloがアクティブな場合は、スポーンをスキップします。代わりに、1つのメッセージですべてのエージェント応答を自分で生成し、各エージェントのペルソナに忠実に保ちます。応答を明確に分離し、各エージェントのアイコンと名前ヘッダーを付けます。
3. 応答を提示
各エージェントの完全な応答をユーザーに提示します。個別に、完全に、そして独自の声で。ユーザーはエージェントが話すのを聞くためにここにいるのであり、彼らが何を考えているかの総合を読むためではありません。応答がサブエージェントから来たか、ソロモードで自分が生成したかに関わらず、ルールは同じです。各エージェントの視点は独自の完全なセクションを取得します。エージェント応答をブレンド、言い換え、または要約に圧縮しないでください。
形式はシンプルです:各エージェントの応答が1つずつ続き、空白行で区切られます。紹介もなく、「彼らが言ったことはこれ」もなく、フレーミングもなく、応答そのものだけです。
すべてのエージェント応答が完全に提示されたら、オプションで簡潔なオーケストレータノートを追加できます。その際は、探索する価値のある意見の相違にフラグを立てるか、次のラウンドに連れてくるエージェントを提案します。これを短く、明確にラベル付けして、エージェント発話と混同されないようにしてください。
各応答をTTSで、そのエージェントのユニークな声で話す。 テキストですべての応答を提示した後、クロスプラットフォーム BMAD スピーチエントリーポイントを順序立てて呼び出します — 1度に1エージェント、並列で実行しないでください:
node bin/bmad-speak.js "{displayName}" "{その応答テキスト — TTS用に〜300文字に切り詰める}"
これは Windows では .claude/hooks-windows/bmad-speak.ps1 に委譲し、その他は .claude/hooks/bmad-speak.sh に委譲します。各呼び出しは次のエージェントが話す前に再生が完了するまでブロックされます。
4. フォローアップを処理
ユーザーが次に何が起こるかを駆動します。一般的なパターン:
| ユーザーが言う... | あなたがすること... |
|---|---|
| 一般的なディスカッションを続ける | 新しいエージェントを選び、ループを繰り返す |
| 「Winston、Sally が言ったことについてどう思いますか?」 | Winston だけをスポーンし、Sally の応答をコンテキストとして含める |
| 「このへんに Quinn を連れてきて」 | Quinn をスポーンし、ここまでのディスカッション要約を含める |
| 「John に同意します、この部分をもっと深掘りしましょう」 | John + 1-2 人をスポーンし、John のポイントを拡張する |
| 「Mary と Bob は Winston のアプローチについてどう思いますか?」 | Mary と Bob をスポーンし、Winston の応答をコンテキストとして含める |
| 誰もが答えるべき質問をする | ステップ 1 に戻り、すべてのエージェントで実施 |
重要なインサイト:任意の時点で任意の組み合わせをスポーンできます。1エージェント、別のエージェントに応答する2エージェント、全ロスター — ディスカッションに役立つ任意の組み合わせです。各スポーンは安価で独立しています。
コンテキストを管理可能に保つ
ディスカッションが成長するにつれ、各サブエージェントに完全なトランスクリプトを渡す代わりに、以前のラウンドを要約する必要があります。「ディスカッションコンテキスト」セクションを400語以下に保つことを目指してください。つまり、何が議論されたか、エージェントが何を主張しているか、ユーザーが何を目指しているかについての厳密な要約です。この要約は2〜3ラウンドごと、またはトピックが大幅に変わった場合に更新します。
状況が悪くなったときは
- エージェントがすべて同じことを言う:対立的な声を連れてくるか、特定のエージェントにそのようにプロンプトを作成することで悪魔の代弁者になるよう求めます。
- ディスカッションが堂々巡り:応酬をまとめ、ユーザーに次に探索したい角度を尋ねます。
- ユーザーが関与していないように見える:直接尋ねてください。続行、トピック変更、or ラップアップ?
- エージェントが弱い応答をする:リトライしないでください。それを提示して、ユーザーがそのエージェントからもっと欲しいかどうかを決定させてください。
終了
ユーザーが終わったと言った場合(任意の自然な表現 — 「ありがとう」「以上です」「パーティモード終了」など)、ディスカッションの重要な要点を簡潔にまとめ、通常モードに戻ります。終了トリガーを強制しないでください。ただ雰囲気を読んでください。
終了時にコンテキストファイルをクリーンアップします:
rm -f {project-root}/.bmad-agent-context
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- paulpreibisch
- ライセンス
- Apache-2.0
- 最終更新
- 2026/5/12
Source: https://github.com/paulpreibisch/AgentVibes / ライセンス: Apache-2.0