Channels & routing(チャネルとルーティング)
OpenClaw は、メッセージが来たチャネルに返信をルーティングします。モデルはチャネルを選択しません。ルーティングは決定論的であり、ホスト設定によって制御されます。
主要用語
- Channel(チャネル):whatsapp、telegram、discord、slack、signal、imessage、webchat。
- AccountId(アカウント ID):チャネルごとのアカウントインスタンス(サポートされている場合)。
- AgentId(エージェント ID):分離されたワークスペース + セッションストア(「脳」)。
- SessionKey(セッションキー):コンテキストを格納し、同時実行を制御するために使用されるバケットキー。
セッションキーの形状(例)
ダイレクトメッセージは、エージェントの main セッションに統合されます:
- agent:<agentId>:<mainKey>(デフォルト:agent:main:main)
グループとチャネルは、チャネルごとに分離されたままです:
- グループ:agent:<agentId>:<channel>:group:<id>
- チャネル/ルーム:agent:<agentId>:<channel>:channel:<id>
スレッド(thread):
- Slack/Discord スレッドは、ベースキーに :thread:<threadId> を追加します。
- Telegram フォーラムトピックは、グループキーに :topic:<topicId> を埋め込みます。
例:
- agent:main:telegram:group:-1001234567890:topic:42
- agent:main:discord:channel:123456:thread:987654
ルーティングルール(エージェントの選択方法)
ルーティングは、受信メッセージごとに1 つのエージェントを選択します:
- 正確なピアマッチ(peer.kind + peer.id を含む bindings)。
- ギルドマッチ(Discord)guildId 経由。
- チームマッチ(Slack)teamId 経由。
- アカウントマッチ(チャネルの accountId)。
- チャネルマッチ(そのチャネルの任意のアカウント)。
- デフォルトエージェント(agents.list[].default、そうでなければ最初のリストエントリ、フォールバックは main)。
マッチしたエージェントによって、使用されるワークスペースとセッションストアが決定されます。
ブロードキャストグループ(複数のエージェントを実行)
ブロードキャストグループ(broadcast groups)を使用すると、OpenClaw が通常返信する場合(例:WhatsApp グループで、メンション/アクティベーションゲーティング後)、同じピアに対して複数のエージェントを実行できます。
設定:
{
broadcast: {
strategy: "parallel",
"[email protected]": ["alfred", "baerbel"],
"+15555550123": ["support", "logger"]
}
}
参照:Broadcast Groups。
設定概要
- agents.list:名前付きエージェント定義(workspace、model など)。
- bindings:受信チャネル/アカウント/ピアをエージェントにマッピング。
例:
{
agents: {
list: [
{ id: "support", name: "Support", workspace: "~/.openclaw/workspace-support" }
]
},
bindings: [
{ match: { channel: "slack", teamId: "T123" }, agentId: "support" },
{ match: { channel: "telegram", peer: { kind: "group", id: "-100123" } }, agentId: "support" }
]
}
セッションストレージ
セッションストアは、state ディレクトリ(デフォルト ~/.openclaw)の下に存在します:
- ~/.openclaw/agents/<agentId>/sessions/sessions.json
- JSONL トランスクリプトはストアと並んで存在します
session.store と {agentId} テンプレートを使用して、ストアパスをオーバーライドできます。
WebChat の動作
WebChat は選択されたエージェントにアタッチし、エージェントのメインセッションにデフォルト設定されます。このため、WebChat では、そのエージェントのクロスチャネルコンテキストを 1 つの場所で確認できます。
返信コンテキスト
受信返信には次のものが含まれます:
- 利用可能な場合、ReplyToId、ReplyToBody、および ReplyToSender。
- 引用されたコンテキストは、[Replying to ...] ブロックとして Body に追加されます。
これはチャネル間で一貫しています。