1つの実行中の Gateway 内で、複数の_分離された_エージェントを実行できます。各エージェントは独自のワークスペース、状態ディレクトリ(Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
agentDir)、セッション履歴を持ち、さらに複数のチャネルアカウント(例: 2つの WhatsApp)も併用できます。受信メッセージはバインディングを通じて適切なエージェントにルーティングされます。
ここでいうエージェントとは、ワークスペースファイル、認証プロファイル、モデルレジストリ、セッションストアを含む、ペルソナごとの完全なスコープです。agentDir は、このエージェントごとの設定を ~/.openclaw/agents/<agentId>/ に保持するオンディスクの状態ディレクトリです。バインディングは、チャネルアカウント(例: Slack ワークスペースや WhatsApp 番号)をそれらのエージェントの1つにマッピングします。
「1つのエージェント」とは何か?
エージェントは、独自の以下を持つ、完全にスコープ化された頭脳です。- ワークスペース(ファイル、AGENTS.md/SOUL.md/USER.md、ローカルノート、ペルソナルール)。
- 認証プロファイル、モデルレジストリ、エージェントごとの設定のための状態ディレクトリ(
agentDir)。 ~/.openclaw/agents/<agentId>/sessions配下のセッションストア(チャット履歴 + ルーティング状態)。
ここでも
sessions_history は、より安全なクロスセッション想起パスです。生のトランスクリプトダンプではなく、境界付けされサニタイズされたビューを返します。アシスタントの想起では、考慮タグ、<relevant-memories> の足場、プレーンテキストのツール呼び出し XML ペイロード(<tool_call>...</tool_call>、<function_call>...</function_call>、<tool_calls>...</tool_calls>、<function_calls>...</function_calls>、および切り詰められたツール呼び出しブロックを含む)、格下げされたツール呼び出しの足場、漏洩した ASCII/全角のモデル制御トークン、不正な MiniMax ツール呼び出し XML が、秘匿化/切り詰めの前に除去されます。~/.openclaw/skills などの共有ルートから読み込まれ、設定されている場合は有効なエージェントの Skills 許可リストでフィルタリングされます。共有ベースラインには agents.defaults.skills を、エージェントごとの置き換えには agents.list[].skills を使用します。Skills: エージェントごと vs 共有 と Skills: エージェント Skills 許可リスト を参照してください。
Gateway は1つのエージェント(デフォルト)または多数のエージェントを並べてホストできます。
ワークスペースに関する注意: 各エージェントのワークスペースはデフォルト cwdであり、強制的なサンドボックスではありません。相対パスはワークスペース内で解決されますが、サンドボックス化が有効でない限り、絶対パスはホスト上の他の場所に到達できます。サンドボックス化を参照してください。
パス(クイックマップ)
- 設定:
~/.openclaw/openclaw.json(またはOPENCLAW_CONFIG_PATH) - 状態ディレクトリ:
~/.openclaw(またはOPENCLAW_STATE_DIR) - ワークスペース:
~/.openclaw/workspace(または~/.openclaw/workspace-<agentId>) - エージェントディレクトリ:
~/.openclaw/agents/<agentId>/agent(またはagents.list[].agentDir) - セッション:
~/.openclaw/agents/<agentId>/sessions
単一エージェントモード(デフォルト)
何もしない場合、OpenClaw は単一のエージェントを実行します。agentIdのデフォルトはmainです。- セッションは
agent:main:<mainKey>としてキー付けされます。 - ワークスペースのデフォルトは
~/.openclaw/workspaceです(OPENCLAW_PROFILEが設定されている場合は~/.openclaw/workspace-<profile>)。 - 状態のデフォルトは
~/.openclaw/agents/main/agentです。
エージェントヘルパー
新しい分離されたエージェントを追加するには、エージェントウィザードを使用します。bindings を追加します(またはウィザードに任せます)。
次で確認します。
クイックスタート
各エージェントワークスペースを作成する
ウィザードを使用するか、ワークスペースを手動で作成します。各エージェントには、
SOUL.md、AGENTS.md、任意の USER.md を含む独自のワークスペースに加え、専用の agentDir と ~/.openclaw/agents/<agentId> 配下のセッションストアが割り当てられます。エージェント、アカウント、バインディングを追加する
agents.list にエージェントを、channels.<channel>.accounts にチャネルアカウントを追加し、bindings でそれらを接続します(例は下記)。複数エージェント = 複数の人、複数の人格
複数エージェントでは、各agentId が完全に分離されたペルソナになります。
- 異なる電話番号/アカウント(チャネルごとの
accountId)。 - 異なる人格(
AGENTS.mdやSOUL.mdなど、エージェントごとのワークスペースファイル)。 - 分離された認証 + セッション(明示的に有効化しない限り相互干渉なし)。
クロスエージェント QMD メモリ検索
あるエージェントが別のエージェントの QMD セッショントランスクリプトを検索する必要がある場合は、agents.list[].memorySearch.qmd.extraCollections 配下に追加コレクションを追加します。すべてのエージェントが同じ共有トランスクリプトコレクションを継承する必要がある場合にのみ、agents.defaults.memorySearch.qmd.extraCollections を使用します。
1つの WhatsApp 番号、複数の人(DM 分割)
1つの WhatsApp アカウントを使いながら、異なる WhatsApp DM を別々のエージェントにルーティングできます。peer.kind: "direct" で送信者 E.164(例: +15551234567)にマッチさせます。返信は引き続き同じ WhatsApp 番号から送信されます(エージェントごとの送信者 ID はありません)。
ダイレクトチャットはエージェントのメインセッションキーに集約されるため、真の分離には1人につき1エージェントが必要です。
- DM アクセス制御は、エージェントごとではなく、WhatsApp アカウントごとにグローバルです(ペアリング/許可リスト)。
- 共有グループの場合は、グループを1つのエージェントにバインドするか、ブロードキャストグループを使用します。
ルーティングルール(メッセージがエージェントを選ぶ仕組み)
バインディングは決定的で、最も具体的なものが優先されます。同順位の解決と AND セマンティクス
同順位の解決と AND セマンティクス
- 同じ階層で複数のバインディングがマッチした場合、設定順で最初のものが優先されます。
- バインディングが複数のマッチフィールド(例:
peer+guildId)を設定している場合、指定されたすべてのフィールドが必要です(ANDセマンティクス)。
アカウントスコープの詳細
アカウントスコープの詳細
accountIdを省略したバインディングは、デフォルトアカウントのみにマッチします。- すべてのアカウントにまたがるチャネル全体のフォールバックには
accountId: "*"を使用します。 - 後で同じエージェントに対して明示的なアカウント ID を持つ同じバインディングを追加した場合、OpenClaw は既存のチャネルのみのバインディングを複製せず、アカウントスコープにアップグレードします。
複数アカウント / 電話番号
複数アカウントをサポートするチャネル(例: WhatsApp)は、各ログインを識別するためにaccountId を使用します。各 accountId は異なるエージェントにルーティングできるため、1つのサーバーで複数の電話番号をホストしてもセッションが混在しません。
accountId が省略されたときのチャネル全体のデフォルトアカウントが必要な場合は、channels.<channel>.defaultAccount を設定します(任意)。未設定の場合、OpenClaw は存在すれば default にフォールバックし、それ以外は設定済みアカウント ID の先頭(ソート済み)にフォールバックします。
このパターンをサポートする一般的なチャネルには、次のものがあります。
whatsapp,telegram,discord,slack,signal,imessageirc,line,googlechat,mattermost,matrix,nextcloud-talkzalo,zalouser,nostr,feishu
概念
agentId: 1つの「頭脳」(ワークスペース、エージェントごとの認証、エージェントごとのセッションストア)。accountId: 1つのチャネルアカウントインスタンス(例: WhatsApp アカウント"personal"と"biz")。binding:(channel, accountId, peer)と任意の guild/team ID によって、受信メッセージをagentIdにルーティングします。- ダイレクトチャットは
agent:<agentId>:<mainKey>に集約されます(エージェントごとの「main」、session.mainKey)。
プラットフォーム例
エージェントごとの Discord ボット
エージェントごとの Discord ボット
各 Discord ボットアカウントは一意の
accountId にマッピングされます。各アカウントをエージェントにバインドし、ボットごとに許可リストを維持します。- 各ボットをギルドに招待し、メッセージコンテンツインテントを有効にします。
- トークンは
channels.discord.accounts.<id>.tokenに置きます(デフォルトアカウントではDISCORD_BOT_TOKENを使用できます)。
エージェントごとの Telegram ボット
エージェントごとの Telegram ボット
- BotFather でエージェントごとに1つのボットを作成し、それぞれのトークンをコピーします。
- トークンは
channels.telegram.accounts.<id>.botTokenに置きます(デフォルトアカウントではTELEGRAM_BOT_TOKENを使用できます)。
エージェントごとの WhatsApp 番号
エージェントごとの WhatsApp 番号
Gateway を起動する前に各アカウントをリンクします。
~/.openclaw/openclaw.json (JSON5):一般的なパターン
- WhatsApp の日常利用 + Telegram での集中作業
- 同じチャンネルで、1つのピアだけ Opus へ
- WhatsApp グループにバインドされたファミリーエージェント
チャンネルごとに分割します。WhatsApp は高速な日常用エージェントに、Telegram は Opus エージェントにルーティングします。注記:
- 1つのチャンネルに複数のアカウントがある場合は、バインディングに
accountIdを追加します(例:{ channel: "whatsapp", accountId: "personal" })。 - ほかはチャットのまま、単一の DM/グループを Opus にルーティングするには、そのピア用の
match.peerバインディングを追加します。ピア一致は常にチャンネル全体のルールより優先されます。
エージェントごとのサンドボックスとツール設定
各エージェントは、独自のサンドボックスとツール制限を持つことができます。setupCommand は sandbox.docker の下にあり、コンテナ作成時に1回実行されます。解決後のスコープが "shared" の場合、エージェントごとの sandbox.docker.* オーバーライドは無視されます。- セキュリティ分離: 信頼できないエージェントのツールを制限します。
- リソース制御: 特定のエージェントをサンドボックス化し、ほかのエージェントはホスト上に残します。
- 柔軟なポリシー: エージェントごとに異なる権限を設定できます。
tools.elevated は グローバル かつ送信者ベースです。エージェントごとには設定できません。エージェントごとの境界が必要な場合は、agents.list[].tools を使用して exec を拒否します。グループを対象にする場合は、agents.list[].groupChat.mentionPatterns を使用して、@メンションが意図したエージェントに明確に対応するようにします。関連
- ACP エージェント — 外部コーディングハーネスを実行する
- チャンネルルーティング — メッセージがエージェントにルーティングされる仕組み
- プレゼンス — エージェントのプレゼンスと可用性
- セッション — セッションの分離とルーティング
- サブエージェント — バックグラウンドのエージェント実行を生成する