Beginner

OpenClawマルチロールチームを0から1まで構築する

OpenClawマルチロールチームをゼロから構築する完全ガイド

OpenClawマルチロールチームを0から1まで構築する#

前回の記事「《OpenClawの天井知らずの請求額にさようなら:20分でプライベートAPIマトリックスを構築、セルフホストキーで超低コストマルチアカウント》」では、GPTビジネスアカウントを使って20元でアカウントプールを構築し、超低コストでのOpenClaw利用を実現しました。念のため:私のテストでは、単一のビジネスアカウントで5時間以内に100回以下の会話に抑えることをお勧めします。マルチボットチーム連携を構築したい場合は、複数のビジネスアカウントを追加購入するか、異なるモデル(Gemini、GLMなど、これらも前回のチュートリアルで設定可能)を使用することを強くお勧めします。
P.S.: 前回のアカウントプール構築記事はすでに5万回閲覧されています。Xianyuの販売者も私に気づきました。割引をお願いしたところ、承諾してくれました。ここでは販売者のリンクは掲載しませんが、ビジネスアカウントを購入する際は、DMで私に連絡してください。販売者に「ResearchWang13」から来たと伝えれば、少し良い価格が得られます〜

📚 目次#

  • マルチボットチーム連携とは?
  • 初級ステージ:基本概念と前提条件
  • 中級ステージ:ディレクトリ計画とエージェント作成
  • 上級ステージ:コアアーキテクチャと完全設定
  • エキスパートステージ:メモリ基準とマルチチーム分離
  • 実践タスクチェックリスト
  • よくある質問
  • 選択アドバイスと次のステップ

マルチボットチーム連携とは?#

複数の独立したTelegram Botを、分業体制を持つ連携エージェントチームとして組織化することです。適切なアーキテクチャ設定により、異なるBotに異なる役割(例:マスターマインド、プログラマー、研究者など)を担わせ、複雑なタスクの自動化フローを実現できます。
3つの連携モードのコア比較:
  • モードA(マスターマインド + スペシャリスト): マスターマインドが統一スケジューリングとタスク割り当てを担当;スペシャリストは独立して作業。厳密なプロセス制御が必要な流れ作業に適しています。
  • モードB(独立共有型): マスターマインドなし;スペシャリストがユーザーと直接対話し、メモリを共有。タスク境界が明確で、ユーザーが誰に連絡すべきかを正確に知っているシナリオに適しています。
  • モードC(ハイブリッド推奨): マスターマインドがスケジューリングを担当、スペシャリスト同士でメモリを共有、ユーザーはマスターマインドをバイパスしてスペシャリストに直接連絡可能。これはプロダクショングレードの推奨ソリューションで、前2つのモードの利点を組み合わせ、単一障害点を回避します。

ステージ1:基本概念と前提条件#

ステップ1:前提条件を明確にする
チームを組み立てる前に、各Botは基本的な登録とID取得が必要です。チームの役割割り当て(例:マスターマインド1名、スペシャリスト3名:コーダー、研究者、ライター)を決定する必要があります。
ステップ2:認証情報を取得する
TelegramのBotFather(/newbot)で各役割の新しいボットを作成し、すべてのbotTokenを保存します。同時に、権限設定のために個人のTelegram数値IDを取得する必要があります。
> 🔨 実践タスク1:Botトークンと個人IDを取得する
bash
# 方法1:ボットにDMを送り、ログで`from.id`フィールドを確認
openclaw logs --follow

# 方法2:Bot API経由で取得
curl "https://api.telegram.org/bot<token>/getUpdates"
  • 完了基準: すべての役割のbotTokenと自身のTelegram数値IDを正常に記録する。

ステージ2:ディレクトリ計画とエージェント作成#

ステップ3:ディレクトリ構造を計画する
論理的なディレクトリ構造は、マルチボット連携の基礎です。コア原則は:スペシャリストのworkspaceは同じディレクトリを指す(共有メモリ)が、agentDirは独立している(独立したアイデンティティ)。
> 🔨 実践タスク2:ワークスペースディレクトリを作成する
ターミナルで、以下の構造に従ってフォルダを作成します:
text
~/.openclaw/
├── workspace-main/           # マスターマインドの独立ワークスペース
├── workspace-team-a/         # チームAスペシャリストの共有ワークスペース(モードB/C用)
├── agents/
│   ├── main/
│   │   ├── agent/            # マスターマインドのagentDir(認証、設定)
│   │   └── sessions/
│   ├── coder/
│   │   ├── agent/
│   │   └── sessions/
│   ├── researcher/
│   │   ├── agent/
│   │   └── sessions/
│   └── writer/
│       ├── agent/
│       └── sessions/
└── openclaw.json
  • 完了基準: 共有workspace(メモリ)と独立agentDir(アイデンティティ)の違いを理解し、ローカルに基本フォルダを確立する。
ステップ4:エージェントインスタンスを作成する
OpenClawにチームメンバーを登録します。
text
# チームメンバーを順次追加
openclaw agents add main
openclaw agents add coder
openclaw agents add researcher
openclaw agents add writer

ステージ3:コアアーキテクチャと完全設定#

ステップ5:連携モードを選択して適用する(推奨:モードC)
openclaw.jsonを開き、ニーズに基づいて対応する設定を記述します。以下は**推奨モードC(ハイブリッドモード)**の例です:マスターマインドは独立ワークスペース、スペシャリストはワークスペースを共有、agentToAgentが有効、ユーザーはスペシャリストに直接連絡可能。
> 🔨 実践タスク3:モードCを設定する
openclaw.jsonファイルを編集します:
json
{
  "agents": {
    "list": [
      {
        "id": "main",
        "workspace": "~/.openclaw/workspace-main",
        "agentDir": "~/.openclaw/agents/main/agent"
      },
      {
        "id": "coder",
        "workspace": "~/.openclaw/workspace-team-a",
        "agentDir": "~/.openclaw/agents/coder/agent",
        "tools": { "deny": ["browser", "nodes"] }
      },
      {
        "id": "researcher",
        "workspace": "~/.openclaw/workspace-team-a",
        "agentDir": "~/.openclaw/agents/researcher/agent",
        "tools": { "deny": ["exec", "write", "edit"] }
      },
      {
        "id": "writer",
        "workspace": "~/.openclaw/workspace-team-a",
        "agentDir": "~/.openclaw/agents/writer/agent",
        "tools": { "deny": ["exec", "browser", "nodes"] }
      }
    ]
  },
  "session": { "dmScope": "main" },
  "tools": {
    "agentToAgent": {
      "enabled": true,
      "allow": ["main", "coder", "researcher", "writer"]
    }
  },
  "bindings": [
    { "agentId": "main", "match": { "channel": "telegram", "accountId": "main" } },
    { "agentId": "coder", "match": { "channel": "telegram", "accountId": "coder" } },
    { "agentId": "researcher", "match": { "channel": "telegram", "accountId": "researcher" } },
    { "agentId": "writer", "match": { "channel": "telegram", "accountId": "writer" } }
  ],
  "channels": {
    "telegram": {
      "accounts": {
        "main": {
          "botToken": "111111:TOKEN_MAIN",
          "dmPolicy": "pairing"
        },
        "coder": {
          "botToken": "222222:TOKEN_CODER",
          "dmPolicy": "allowlist",
          "allowFrom": ["tg:YOUR_NUMERIC_ID"]
        },
        "researcher": {
          "botToken": "333333:TOKEN_RESEARCHER",
          "dmPolicy": "allowlist",
          "allowFrom": ["tg:YOUR_NUMERIC_ID"]
        },
        "writer": {
          "botToken": "444444:TOKEN_WRITER",
          "dmPolicy": "allowlist",
          "allowFrom": ["tg:YOUR_NUMERIC_ID"]
        }
      }
    }
  }
}
(注:モードAまたはBを使用したい場合は、対応するロジックに従ってworkspace共有状態とdmPolicy権限設定を変更してください。)
  • 完了基準: チーム設定をopenclaw.jsonに正常に書き込み、保存する。

ステージ4:メモリ基準とマルチチーム分離#

ステップ6:各エージェントのSOUL.mdを設定する
チームメンバーがそれぞれの職責を果たすことを保証するために、ペルソナ(SOUL.md)を設定する必要があります。
マスターマインド SOUL.mdworkspace-main/SOUL.mdに配置):
markdown
# SOUL.md - マスターマインド

あなたはチームの調整役であり、外部のエントリーポイントです。

## 責任

- ユーザーの意図を理解し、タスクの複雑さを評価する。
- 単純なタスクは自分で直接処理する;毎回委任する必要はない。
- コーディングタスクコーダーに委任(`sessions_send`)。
- 研究/検索タスク研究者に委任。
- 執筆/コピーライティングタスクライターに委任。
- スペシャリストの結果を収集し、統合してユーザーに返信する(単純に転送しない)。

## 原則

- タスクを委任する際は、背景と期待される出力形式を明確に述べる。
- スペシャリストが終了するのを待ってから統合する;急がない。
- 要約時に真の統合を行い、ユーザーに完全な回答を提供する。
スペシャリスト SOUL.mdworkspace-team-a/SOUL.mdまたはそれぞれのagentDirに配置):
markdown
# SOUL.md - スペシャリスト

あなたはチームのプロフェッショナルメンバーです。マスターマインドからタスクを割り当てられるか、ユーザーから直接連絡を受ける可能性があります。

## 共有メモリ基準

- `MEMORY.md`を読み、チーム全体のコンテキストを理解する。
- メモリに書き込む際は、自分自身を識別する。形式:`[coder] 今日...を完了`
- 他のエージェントが書いたメモリエントリを上書きしない。

## 原則

- 自分の専門分野に集中する。
- タスク完了時に結果を明確に返す。
- 他のスペシャリストが既に行った作業を認識し、重複を避ける。
ステップ7:起動と検証
> 🔨 実践タスク4:チームを起動して検証する
以下のコマンドを使用して、すべての設定が有効になり正常に実行されることを確認します:
bash
# 設定を有効にするためにゲートウェイを再起動
openclaw gateway restart

# エージェントリストとバインディングを検証
openclaw agents list --bindings

# 各チャネルのステータスを検証
openclaw channels status --probe

# リアルタイムログ(デバッグ用)
openclaw logs --follow
  • 完了基準: コンソールにエラーがなく、各Botが対応するTelegramメッセージに正常に応答する。

実践タスクチェックリスト#

初級ステージ(必須)
  • タスク1:すべてのBotトークンと個人のTelegram IDを取得する。
中級ステージ(推奨)
  • タスク2:仕様に従って共有および独立ディレクトリ構造を確立し、エージェントを登録する。
上級ステージ(中級)
  • タスク3:openclaw.jsonでモードC(ハイブリッドモード)のコア設定を完了する。
エキスパートステージ(チャレンジ)
  • タスク4:マスターマインドとスペシャリストのSOUL.mdを作成し、ゲートウェイを再起動してマルチボット通信が機能することを検証する。

よくある質問#

Q1:モードCでは、スペシャリストによる同時メモリ書き込みは競合しますか? 時々ありますが、実用的な影響は最小限です;一般的に同じ行に同時に書き込むことはありません。メモリに書き込む際にエージェント識別子を追加することをお勧めします(例:[coder] xxx問題を修正...)。これにより混乱を効果的に減らせます。
Q2:マスターマインドをバイパスしてスペシャリストに直接連絡できますか? モードCでは可能です。スペシャリストのdmPolicy: "allowlist"により、数値IDを介して直接DMできます。モードAでは、スペシャリストはdmPolicy: "disabled"に設定され、マスターマインド経由での通信が強制されます。
Q3:agentToAgentを有効にした後、スペシャリストはマスターマインドに積極的に連絡できますか? はい、allowリストは双方向です。スペシャリストもsessions_sendを使用して進捗を報告するためにマスターマインドに積極的にメッセージを送信できます。
Q4:スペシャリストがワークスペースを共有する場合、同じSOUL.mdも共有するということですか? はい、共有ワークスペースはSOUL.mdも共有されることを意味します。スペシャリストに完全に異なるペルソナを与える必要がある場合は、SOUL.mdをそれぞれのagentDirに配置するか、JSON設定のsystemPromptフィールドを使用して個別に定義することをお勧めします。
Q5:OpenClawをアップグレードした後、設定は失われますか? いいえ、openclaw.jsonは個人のローカルファイルです;公式アップグレードでは上書きされません。

選択アドバイスと次のステップ#

選び方に迷ったら、以下のパスを参照してください:
  • 始めたばかりで、ボットが少ない(2-3個): モードBを選択。設定が簡単で、非常に迅速に開始できます。
  • プロセス制御が必要な複雑なタスク: モードAを選択。制御が強力で、標準化されたワークフローに適しています。
  • プロダクショングレード、長期的に安定した運用: 直接**モードC(ハイブリッド)**に進む。柔軟性が高く、フォールトトレランスに優れています。
  • 複数の独立した業務ラインチーム: 各チーム内で