主要な用語
- Channel:
whatsapp,telegram,discord,slack,signal,imessage,webchat - AccountId: チャンネルごとのアカウントインスタンスです。対応しているチャンネルで使用されます。
- チャンネルごとの既定アカウント:
channels.<channel>.defaultAccountを使うと、送信時のパスでaccountIdを明示していない場合に使うアカウントを指定できます。- マルチアカウント構成では、2 つ以上のアカウントがある場合に明示的な既定値 (
defaultAccountまたはaccounts.default) を設定してください。設定しないと、フォールバックルーティングで最初に正規化されたアカウント ID が選ばれることがあります。
- マルチアカウント構成では、2 つ以上のアカウントがある場合に明示的な既定値 (
- AgentId: 分離されたワークスペースとセッションストアを持つエージェント識別子です。
- SessionKey: コンテキスト保存と同時実行制御に使うキーです。
セッションキーの形式(例)
ダイレクトメッセージはエージェントの main セッションに集約されます。agent:<agentId>:<mainKey>(デフォルト:agent:main:main)
- グループ:
agent:<agentId>:<channel>:group:<id> - チャンネル/ルーム:
agent:<agentId>:<channel>:channel:<id>
- Slack / Discord のスレッドでは、ベースキーに
:thread:<threadId>が追加されます。 - Telegram のフォーラムトピックでは、グループキーに
:topic:<topicId>が含まれます。
agent:main:telegram:group:-1001234567890:topic:42agent:main:discord:channel:123456:thread:987654
メインDMルートのピン留め
session.dmScope が main の場合、ダイレクトメッセージは 1 つのメインセッションを共有することがあります。所有者以外の DM によってセッションの lastRoute が上書きされるのを防ぐため、OpenClaw は次の条件をすべて満たす場合に、allowFrom から固定対象の所有者を推定します。
allowFromにワイルドカード以外のエントリが 1 つだけある- そのエントリを、当該チャンネルの具体的な送信者 ID に正規化できる
- 受信した DM の送信者が、その固定された所有者と一致しない
lastRoute は更新しません。
ルーティングルール(エージェントの選択方法)
ルーティングでは、各受信メッセージに対して 1 つのエージェント が選ばれます。- 完全一致する peer (
peer.kind+peer.idを持つbindings) - 親 peer 一致 (スレッド継承)
- ギルド + ロール一致 (Discord、
guildId+roles) - ギルド一致 (Discord、
guildId) - チーム一致 (Slack、
teamId) - アカウント一致 (チャンネル上の
accountId) - チャンネル一致 (そのチャンネル上の任意アカウント、
accountId: "*") - 既定エージェント (
agents.list[].default、なければ最初のリスト項目、さらにフォールバックとしてmain)
peer、guildId、teamId、roles) が含まれている場合は、指定されたすべての条件が一致したときだけ そのバインディングが適用されます。
どのワークスペースとセッションストアを使うかは、最終的に一致したエージェントによって決まります。
ブロードキャストグループ(複数エージェントの実行)
ブロードキャストグループを使うと、OpenClaw が通常返信する場面 で、同じ peer に対して 複数のエージェント を実行できます。たとえば WhatsApp グループでは、メンションやアクティベーションの条件を通過したあとに適用されます。 設定:設定の概要
agents.list: 名前付きエージェントの定義です。ワークスペースやモデルなどを指定します。bindings: 受信したチャンネル、アカウント、peer をどのエージェントへ割り当てるかを定義します。
セッションストレージ
セッションストアは、状態ディレクトリ (デフォルトは~/.openclaw) の下に配置されます。
~/.openclaw/agents/<agentId>/sessions/sessions.json- JSONL 形式のトランスクリプトは、ストアと同じ場所に保存されます。
session.store と {agentId} テンプレートを使って保存先パスを上書きできます。
WebChatの動作
WebChat は 選択したエージェント に接続され、既定ではそのエージェントのメインセッションを使います。そのため、同じエージェントが持つクロスチャンネルのコンテキストを 1 か所から確認できます。返信コンテキスト
受信した返信には、次の情報が含まれます。- 利用可能な場合は
ReplyToId、ReplyToBody、ReplyToSender - 引用コンテキストは
[Replying to ...]ブロックとしてBodyに追加されます。