マルチエージェントルーティング
仕事とプライベートの分離、家族での共有、異なるAIパーソナリティのために、単一のGateway上で複数の分離されたエージェントを実行します。
1.マルチエージェントルーティングとは?
マルチエージェントルーティングにより、単一のOpenClaw Gateway上で複数の分離されたAIエージェントを実行できます。各エージェントは独自のアイデンティティ、メモリ、設定を持ちながら、同じインフラストラクチャを共有します。
各エージェントが持つもの:
独自のアイデンティティ
個別の名前、パーソナリティ、システムプロンプト
分離されたメモリ
独立した会話履歴とコンテキスト
カスタムツール
エージェントごとに異なるツール権限
チャンネルバインディング
特定のチャンネルを特定のエージェントにルーティング
一般的なユースケース
仕事/プライベートの分離
仕事用Slackと個人用Telegramを分離。異なるパーソナリティ、異なるメモリ。
家族での共有
家族メンバーごとに、パーソナライズされた応答とプライベートメモリを持つ専用エージェント。
異なるパーソナリティ
メール用のプロフェッショナルアシスタント、Discord用のカジュアルな友人、ブレインストーミング用のクリエイティブライター。
マルチアカウント
複数のWhatsApp番号やTelegramアカウントを分離されたエージェントで処理。
2.主要コンセプト
各エージェントは「ワークスペース」に存在します。これは設定、メモリ、ファイルを含むディレクトリです。
~/openclaw/agents/work/ ├── AGENTS.md # Define sub-agents and their specialties ├── SOUL.md # Agent personality and communication style ├── USER.md # Information about the user └── skills/ # Agent-specific skills
- soul.md— エージェントのパーソナリティとシステムプロンプト
- user.md— ユーザーの設定とコンテキスト
- memory/— 会話履歴とファクト
- skills/— このエージェント用のカスタムスキル
重要
エージェントは同じGatewayプロセスとAPIキーを共有します。完全な分離(別のAPIキー、別のプロセス)には、複数のGatewayインスタンスを実行してください。
- - レート制限はすべてのエージェント間で共有
- - APIコストは合算
- - クラッシュはすべてのエージェントに影響
バインディングは、チャンネル、ユーザー、またはグループに基づいて受信メッセージを適切なエージェントにルーティングします。
// Example: Route WhatsApp business account to work agent
{
"bindings": [{
"agent": "work",
"channel": "whatsapp",
"accountId": "business-account-id"
}]
}3.ステップバイステップ設定
新しいエージェントを作成
新しいエージェント用のワークスペースディレクトリを作成:
openclaw agents add work
これにより、独自のワークスペースディレクトリを持つ新しいエージェントが作成されます。
ワークスペースを設定
エージェントのパーソナリティとユーザーファイルを作成:
soul.md - エージェントのパーソナリティ:
# Work Assistant Soul You are a professional work assistant. Be formal, concise, and focused on productivity. Avoid casual language. ## Communication Style - Use professional language - Be direct and efficient - Focus on actionable items - Respect work-life boundaries
user.md - ユーザーコンテキスト:
# User Profile - Work Context - Role: Software Engineer at Acme Corp - Working hours: 9 AM - 6 PM PST - Key projects: Project Alpha, Customer Portal - Slack workspace: acme-corp.slack.com
チャンネルバインディングを設定
openclaw.jsonでチャンネルを新しいエージェントにルーティング:
{
"agents": {
"default": {
"workspace": "~/openclaw/agents/default",
"agentDir": "~/openclaw/state/default"
},
"work": {
"workspace": "~/openclaw/agents/work",
"agentDir": "~/openclaw/state/work"
}
},
"bindings": [
{
"agent": "work",
"channel": "whatsapp",
"accountId": "work-phone-id"
},
{
"agent": "work",
"channel": "slack",
"teamId": "T123ACMECORP"
}
],
"defaultAgent": "default"
}バインディングは、各チャンネルからのメッセージをどのエージェントが処理すべきかをOpenClawに伝えます。
セキュリティを設定(オプション)
エージェントのサンドボックスモードとツール制限を設定:
{
"agents": {
"work": {
"workspace": "~/openclaw/agents/work",
"agentDir": "~/openclaw/state/work",
"sandbox": "all",
"tools": {
"allow": ["calendar", "email", "notes"],
"deny": ["shell", "browser"]
}
},
"home": {
"workspace": "~/openclaw/agents/home",
"agentDir": "~/openclaw/state/home",
"sandbox": "non-main",
"tools": {
"allow": ["*"],
"deny": []
}
}
}
}設定を確認
OpenClawを再起動してマルチエージェント設定をテスト:
openclaw agents list
openclaw agents test --channel whatsapp --from +1234567890
4.設定例
異なるWhatsApp番号を異なるエージェントにルーティング:
{
"agents": {
"personal": { "workspace": "~/.openclaw/personal" },
"business": { "workspace": "~/.openclaw/business" }
},
"bindings": [
{ "channel": "whatsapp:+1234567890", "agent": "personal" },
{ "channel": "whatsapp:+0987654321", "agent": "business" }
]
}仕事にはGPT-4、プライベートにはClaudeを使用:
{
"agents": {
"work": {
"workspace": "~/.openclaw/work",
"model": "gpt-4o"
},
"personal": {
"workspace": "~/.openclaw/personal",
"model": "claude-3-5-sonnet-20241022"
}
}
}異なるDiscordサーバーやSlackワークスペース用に異なるエージェント:
{
"bindings": [
{ "channel": "discord", "guild": "gaming-server-id", "agent": "gaming-buddy" },
{ "channel": "discord", "guild": "work-server-id", "agent": "work-assistant" },
{ "channel": "slack", "workspace": "company-workspace", "agent": "work-assistant" }
]
}TelegramユーザーIDで家族メンバーごとに専用エージェント:
{
"agents": {
"dad": { "workspace": "~/.openclaw/dad" },
"mom": { "workspace": "~/.openclaw/mom" },
"kids": { "workspace": "~/.openclaw/kids", "sandbox": "all" }
},
"bindings": [
{ "channel": "telegram", "userId": "123456", "agent": "dad" },
{ "channel": "telegram", "userId": "789012", "agent": "mom" },
{ "channel": "telegram", "userId": "345678", "agent": "kids" }
]
}5.バインディング優先順位
複数のバインディングがマッチする可能性がある場合、OpenClawは最も具体的なものを使用します:
- 1
ユーザー固有
userIdを持つバインディングが最初にマッチ
{ "channel": "telegram", "userId": "123", "agent": "personal" } - 2
グループ固有
group/guild/workspaceを持つバインディングが2番目にマッチ
{ "channel": "discord", "guild": "abc", "agent": "gaming" } - 3
チャンネル固有
チャンネルのみのバインディングが最後にマッチ
{ "channel": "telegram", "agent": "default" }
例
'telegram'(デフォルト)と'telegram + userId:123'(個人)のバインディングがある場合、ユーザー123からのメッセージは'personal'に、その他は'default'に送られます。
6.セキュリティとサンドボックス
サンドボックスモードとツールポリシーで各エージェントができることを制御します。
信頼レベルに基づいてエージェントの機能を制限:
"sandbox": "off"フルアクセスエージェントはすべてのツールを使用可能。信頼できる個人エージェント用。
"sandbox": "non-main"制限付きファイル/シェルアクセスをワークスペースディレクトリのみに制限。
"sandbox": "all"厳格ファイルシステムやシェルへのアクセスなし。チャットとウェブのみ。
エージェントが使用できるツールをきめ細かく制御:
{
"agents": {
"restricted": {
"workspace": "~/openclaw/agents/restricted",
"agentDir": "~/openclaw/state/restricted",
"tools": {
// Only allow these specific tools
"allow": ["calendar", "notes", "reminders"],
// Explicitly block dangerous tools
"deny": ["shell", "filesystem", "browser", "email"]
}
},
"trusted": {
"workspace": "~/openclaw/agents/trusted",
"agentDir": "~/openclaw/state/trusted",
"tools": {
// Allow everything except...
"allow": ["*"],
"deny": ["shell"] // Still block shell for safety
}
}
}
}デフォルトでは、エージェントはワークスペースディレクトリ内のファイルにのみアクセスできます。これにより、あるエージェントが別のエージェントのメモリやファイルを読み取ることを防ぎます。
{
"agents": {
"work": {
"workspace": "~/openclaw/agents/work",
"agentDir": "~/openclaw/state/work",
"filesystem": {
// Only allow access to these directories
"allowedPaths": [
"~/Documents/Work",
"~/Projects",
"/tmp"
],
// Block access to sensitive areas
"blockedPaths": [
"~/.ssh",
"~/.aws",
"~/Documents/Personal"
]
}
}
}
}マルチエージェント準備完了!
異なるユースケース用の分離されたエージェントができました。
質問がありますか? Discordに参加 または GitHub Issueを開く