言語を切り替える
テーマを切り替える

OpenClawマルチエージェントルーティング完全ガイド:仕事、生活、実験環境を優雅に隔離する

月曜の朝9時、クライアント向けの決済インターフェースのコードを書くためにAIアシスタントを開きました。すると突然、AIがこう言いました。「昨夜研究していた『エルデンリング』のボス攻略法に基づき、ここでも『ヒット&アウェイ』戦略を採用することをお勧めします…」

私はその場で凍りつきました。

さらに気まずいことに、画面共有しながらのオンライン会議中でした。ビデオ越しの沈黙がどれほど痛かったか、想像できるでしょう。

その瞬間、私は悟りました。AIアシスタントは賢くなっていますが、私の仕事、娯楽、実験の全てを混ぜこぜにしています。仕切りのない引き出しのようなもので、全てが積み重なり、探したいものが見つからず、頻繁に間違ったものを取り出してしまいます。

もしあなたも同じような経験があるなら、この記事が役立つでしょう。週末を使ってOpenClawのマルチエージェントルーティング機能を徹底的に研究した結果、AIアシスタントを複数の専用アシスタントに「分身」させる方法を見つけました。仕事は仕事、生活は生活、実験はサンドボックスへ。

なぜこの機能が必要なのか、設定方法、そして私が実際に使っている5つのシナリオを紹介します。

なぜAIアシスタントは「混線」するのか?

単一アシスタントの3つの気まずい瞬間

正直、私も以前は1つのAIアシスタントですべてを処理していました。しかし、こんな状況に直面しました:

シーン1:コンテキスト汚染
会社のデータベースクエリの最適化を頼んだら、AIが突然「先週あなたが質問したPythonスクレイピングスクリプトと同じように、非同期処理を使えば…」と言い出しました。問題は、そのスクレイピングは私の副業プロジェクトであり、会社には絶対に知られたくない内容だったことです。

シーン2:プライバシー漏洩
チームに新しいツールをデモしている時、AIの対話履歴を開いたら、「上司への昇給交渉のやり方」「副業収入の確定申告」といった私的な質問が並んでいました。あの瞬間の「終わった」感、わかりますよね。

シーン3:実験で本番環境破壊
ファイル一括リネームの自動化スクリプトをテストしていた時のこと。AIが以前の仕事用プロジェクトのディレクトリを覚えていて、顧客のソースコードのファイル名を全部書き換えてしまいました。Gitがなければ夜逃げするところでした。

なぜこうなるのか?

AIアシスタント自体には悪気はありません。むしろ「忠実」すぎて、あなたの発言をすべて記憶し、文脈を繋げようとするのです。しかし問題は:

  • 仕事には厳格さとプライバシーが必要
  • 生活にはリラックスとパーソナライズが必要
  • 実験には自由が必要だが、本番環境への影響はNG

これら3つは本来、混ぜるべきではありません。

マルチエージェントルーティングの解決策

OpenClawのマルチエージェントルーティング機能は、本質的に各シナリオに独立した「小部屋」を与えるものです:

  • 独立したワークスペース:work-agentは /work ディレクトリしか見えず、personal-agentは /personal ディレクトリしか触れない。ファイルシステムレベルで物理的に隔離されます。
  • 独立した対話履歴:work-agentで話した内容は、personal-agentは一切知りません。逆もまた然り。
  • 独立した権限設定:実験用サンドボックスはネット遮断&読み取り専用、仕事環境は社内Gitアクセス可、生活環境は個人クラウド接続可、といった使い分けができます。

Docker用語で言えば「コンテナレベルの隔離」です。もっと分かりやすく言えば、AIアシスタントに互いに干渉しない複数の「脳」を持たせるようなものです。

2026年のAIセキュリティ基準では、エンタープライズシステムにおいてテナントレベルのデータ隔離が必須要件となっています。OpenClawが採用しているこのDockerサンドボックス方式は、単に「会話グループを分ける」だけのツールよりも遥かに安全です。

OpenClawの3層隔離アーキテクチャ

最初にドキュメントを読んだ時は、Gateway、Brain、Skillsといった用語に混乱しました。しかし自分で設定してみると、構造は意外とシンプルです。

宅配システムのような3層構造

  • Gateway層(集配センター):各プラットフォーム(Telegram, Discord, Slack等)からのメッセージを受け取り、設定に基づいてどのエージェントに転送するか決めます。
  • Brain層(管制センター):メッセージの内容から意図(コード記述?調査?コマンド実行?)を判断し、タスクフローを組み立てます。
  • Skills層(実行部隊):実際に作業を行う場所。各エージェントは独立したDockerコンテナを持ち、その中でコード実行やファイル操作を行います。

選べる3つの隔離レベル

ニーズに合わせて柔軟に選べます:

セッション級隔離(一時タスク向け)
対話のたびに新しいコンテナを作成し、終われば破棄。アドホックなタスク(例:「このCSVを分析して」)に最適です。環境はクリーンですが、毎回環境構築が必要です。

エージェント級隔離(長期的シナリオ向け)
エージェントごとに長期稼働するコンテナを用意。私のwork-agentやpersonal-agentはこのモードです。環境構築済みで常駐しており、いつでも呼び出せます。最も実用的なモードです。

OSユーザー級隔離(セキュリティ重視)
異なるエージェントを異なるOSユーザーとして実行。OSレベルで隔離します。私はそこまでしていませんが、金融や医療など超機密データを扱うなら検討価値があります。

テストしてみましたが、エージェント級隔離下ではagent-Aで作ったファイルをagent-Bがアクセスすることは(共有設定しない限り)不可能です。この安心感は大きいです。

私が実践する5つのシナリオ

ここからは実践編です。私が実際に運用している構成を紹介します。そのまま参考にしてください。

シナリオ1:仕事 vs 個人のデュアル環境

課題:会社プロジェクトと個人ブログのコードが混ざる。コミット時に会社のコードを個人GitHubに上げそうになった。

解決策

  • work-agent:作業ディレクトリ D:\work、社内GitLab鍵設定済み、仕事用APIキーのみアクセス可
  • personal-agent:作業ディレクトリ D:\personal、個人GitHub設定済み、自由に実験可能

設定のポイント
2つのエージェントで異なる .env ファイルを使い、WORKSPACE_PATH を分けます。小技として、Telegramに2つのボット(@my_work_bot と @my_personal_bot)を作り、いまどちらと話しているか一目でわかるようにしています。

シナリオ2:複数クライアントのプロジェクト隔離

課題:フリーランスとして3社の案件を並行稼働。AIがクライアントAへのコード提案に、クライアントBの命名規則を混入させた。事故は起きなかったがヒヤリとした。

解決策
3つのエージェント:client-nike-agent, client-adidas-agent, client-puma-agent(仮名)

設定のポイント

  • 各エージェントに独立したプロジェクトディレクトリとGitリポジトリを紐付け
  • .envPROJECT_NAME を分け、ログ追跡を容易に
  • 最重要:各社のAPIキーやDB設定を完全隔離し、絶対に交差させない

シナリオ3:安全な実験サンドボックス

課題:ファイル一括処理スクリプトをテストしたいが、ロジックミスで重要ファイルを消すのが怖い。

解決策
sandbox-agent を作成し、厳格なサンドボックスモードを適用。

設定のポイント

ENABLE_NETWORK=false  # ネット遮断
HOST_FILESYSTEM_MODE=readonly  # ホスト側は読み取り専用
TEMP_STORAGE=true  #変更は一時ディレクトリのみ、再起動で消去

これでどれだけ破壊的な操作をしても、コンテナを再起動すれば元通り。ホスト環境には傷一つつきません。どんな「怪しい操作」もまずはここでテストします。

シナリオ4:チーム協力空間と個人空間

課題:チーム共有のAIアシスタントに、個人的なメモやToDoが混ざり、プライバシーがない。

解決策

  • team-agent:チーム共有。共有コードベースやドキュメントを設定、全員アクセス可
  • private-agent:自分専用。アイデアメモ、下書き、個人的なタスク管理

設定のポイント
team-agentはNAS上の共有フォルダを参照、private-agentはローカルの暗号化パーティションを参照。Telegramではteam-agentをグループチャットに紐付け、private-agentは私とのDMのみ許可。

シナリオ5:マルチモデル比較テスト

課題:Claude、GPT-4、ローカルLlamaの性能比較をしたいが、設定切り替えが面倒。

解決策
3エージェント並列稼働:claude-agent, gpt-agent, llama-agent

設定のポイント
.envLLM_PROVIDERAPI_KEY を変えるだけ。同じ質問を3人に投げて、回答の質・速度・コストを比較します。

面白い発見:コーディングはClaudeが安定、雑談はGPT-4が自然、機密情報の処理は(遅いけど)ローカルLlamaが安心。

追加のヒント

  • 命名規則:シナリオ-用途-日付(例:client-nike-backend-20260201)にしておくと、数ヶ月後にログを見ても何用かわかります。
  • 高速切り替え:スマホに複数のTelegramアカウントを入れ、それぞれ別エージェントに紐付けるとスワイプで切り替えられて爆速です。
  • リソース節約:使わないエージェント(例:llama-agent)は docker stop しておけばメモリを食いません。

ハンズオン:最初のエージェントペアを作る

理論は十分。実際に設定してみましょう。DockerとOpenClawの基本環境は入っている前提です。

目標:workとpersonal、2つのエージェントを設定する

ステップ1:設定ファイルの準備

cd openclaw
cp .env .env.work
cp .env .env.personal

ステップ2:work-agentの設定
.env.work を編集:

AGENT_NAME=work-agent
WORKSPACE_PATH=/path/to/your/work/directory
TELEGRAM_BOT_TOKEN=あなたのwork_botのtoken
ALLOWED_USERS=あなたのTelegramユーザーID

ステップ3:personal-agentの設定
.env.personal を編集:

AGENT_NAME=personal-agent
WORKSPACE_PATH=/path/to/your/personal/directory
TELEGRAM_BOT_TOKEN=あなたのpersonal_botのtoken
CONTAINER_PORT=8001  # ポート衝突回避のため変更必須

ステップ4:両エージェントの起動

docker-compose --env-file .env.work up -d
docker-compose --env-file .env.personal up -d

数秒後 Status: Running になれば成功です。

隔離効果を検証する3つのテスト

テスト1:ファイル隔離

  • work-agentに指示:「test.txtを作成し “work data” と書き込んで」
  • personal-agentに指示:「カレントディレクトリのファイル一覧を見せて」
  • 結果:personal-agentからはtest.txtが見えないはずです。

テスト2:対話隔離

  • work-agentに指示:「覚えておいて、私のプロジェクトコードネームはProjectXだ」
  • personal-agentに質問:「私のプロジェクトコードネームは何?」
  • 結果:personal-agentは「知りません」と答えるはずです。

テスト3:機能隔離

  • .env.workENABLE_CODE_EXECUTION=true
  • .env.personalENABLE_CODE_EXECUTION=false
  • 結果:work-agentはコード実行でき、personal-agentは拒否するはずです。

この3つが確認できれば、隔離は完璧です。

よくあるトラブル

  • 「ポートが使用中」:CONTAINER_PORT が重複していませんか?
  • 「Botが反応しない」:トークンは正しいですか? ALLOWED_USERS に自分のIDは入っていますか?
  • 「ファイル権限エラー」:WORKSPACE_PATH のディレクトリ権限をDockerが読み書きできるようになっていますか?

上級テクニックと落とし穴回避

数ヶ月運用して得た知見を共有します。

パフォーマンス最適化:リソース食いつぶしを防ぐ

最初は5つのエージェントを立ち上げっぱなしで、PCのメモリ8GBを占領されファンが唸っていました。対策は:

リソース制限
docker-compose.yml に以下を追加:

deploy:
  resources:
    limits:
      cpus: '0.5'
      memory: 512M

1エージェントあたりCPU 0.5コア、メモリ512MBあれば十分です。

オンデマンド起動
常時使わないエージェント(サンドボックス等)用のスクリプトを用意:

# start-sandbox.sh
docker start sandbox-agent-container
# 使い終わったら
docker stop sandbox-agent-container

ベースイメージ共有
全エージェントで同じOpenClawベースイメージを使い、設定だけ変えます。これでディスク消費は差分のみ(数十MB〜)で済みます。

セキュリティ・ベストプラクティス

最小権限の原則
personal-agentが /work ディレクトリを見る必要はありません。Dockerマウント設定で物理的にアクセスさせないのが一番です。

機密情報の扱い
APIキーやDBパスワードは環境変数で渡すこと。コードに直書きしない。そして .env ファイルは絶対にGitにコミットしない(.gitignore 必須)。

定期監査
週一回、予期せぬエラーがないかログ確認:

docker logs work-agent-container --since 7d | grep ERROR

トラブルシューティング

エージェントが起動しない

  • ログ確認:docker logs <コンテナ名>
  • 大抵はポート競合か権限エラーです。

メッセージが届かない

  • Botトークンの確認
  • Gatewayの ALLOWED_USERS 設定確認
  • curl でのBot疎通確認

ファイル権限エラー

  • ホストとコンテナのユーザーID不一致が原因
  • docker-compose.ymluser: "${UID}:${GID}" を指定して解決

まとめと次のステップ

要点をまとめます:

なぜ必要か:単一AIはコンテキストを混同し、プライバシーと効率を損なうから。物理的な隔離が解です。

どう設定するか:異なる .env ファイル、異なる作業ディレクトリ、異なるメッセージ窓口(Bot)。5分でデュアルエージェント環境が作れます。

運用:最小権限、オンデマンド起動、定期監査。これで安全と便利さを両立できます。

私は毎日このマルチエージェントシステムを使っていますが、実感として「仕事に集中できる(副業の雑音が混ざらない)」「安心して実験できる」「デモでヒヤッとしない」というメリットは計り知れません。

ネクストアクション

  1. 上記の手順に従って、まずは基本のwork/personalペアを作ってみてください。難しくありません。
  2. 疑問があればGitHub IssuesやDiscordコミュニティへ。
  3. この記事が役に立ったら、同じ悩みを持つ友人にシェアしてください。

最後に。AIツールは生活をシンプルにするためのものです。散らかすためのものではありません。マルチエージェントルーティングは、あなたのAIアシスタントのための「整理収納術」です。それぞれの部屋を与えてあげれば、あなたのワークフロー驚くほどスッキリするはずです。

ぜひ試してみてください。今日の自分に感謝する日が来ますよ。

OpenClaw デュアルエージェント構成フロー

workとpersonalの2つの独立エージェントを設定し、物理的に隔離された環境を構築する手順

⏱️ Estimated time: 10 min

  1. 1

    Step1: 設定ファイルの準備

    デフォルト設定を複製し、2つの独立した設定ファイルを作成します:

    • cd openclaw(プロジェクトディレクトリへ)
    • cp .env .env.work(仕事用)
    • cp .env .env.personal(個人用)

    注意:元の.envはテンプレートとして保持し、直接変更しないでください。
  2. 2

    Step2: Workエージェント設定

    .env.work を編集し、以下のパラメータを必須変更:

    • AGENT_NAME=work-agent
    • WORKSPACE_PATH=/path/to/work(絶対パス)
    • TELEGRAM_BOT_TOKEN=your_work_bot_token
    • ALLOWED_USERS=your_telegram_id

    Telegram Botは @BotFather で新規作成して取得してください。
  3. 3

    Step3: Personalエージェント設定

    .env.personal を編集。Workとの衝突を避ける設定にします:

    • AGENT_NAME=personal-agent
    • WORKSPACE_PATH=/path/to/personal(別ディレクトリ)
    • TELEGRAM_BOT_TOKEN=your_personal_bot_token(別のBot)
    • CONTAINER_PORT=8001(ポート変更必須)
    • ALLOWED_USERS=your_telegram_id(同じIDでOK)

    個人環境はセキュリティ制限を少し緩めても良いでしょう(任意)。
  4. 4

    Step4: 起動と隔離検証

    両エージェントを起動して検証します:

    起動:
    • docker-compose --env-file .env.work up -d
    • docker-compose --env-file .env.personal up -d
    • docker ps(2つのRunning状態を確認)

    検証:
    1. ファイル隔離:Workで作ったファイルをPersonalから見えるか確認(不可のはず)
    2. 記憶隔離:Workに教えたことをPersonalに質問(知らないはず)
    3. 機能隔離:コード実行許可などを別々に設定して動作確認
  5. 5

    Step5: 日常運用・メンテナンス

    運用テクニック:
    • Telegramの別アカウントやチャットフォルダ機能でBotを使い分け
    • 未使用時は docker stop でリソース節約
    • 定期的に docker logs --since 7d でエラー確認
    • リソース制限(CPU/メモリ)をdocker-composeに記述

FAQ

なぜセッション隔離ではなくエージェント隔離を推奨するのですか?
エージェントレベルの隔離は長期的な利用シナリオに適しているからです。
セッション隔離(都度コンテナ作成)はクリーンですが、毎回環境設定が必要で効率が悪いです。エージェント隔離ならコンテナが常駐し、環境設定や依存ライブラリが維持されるため、いつでもすぐに作業を開始できます。私のwork/personal環境もこのモードです。リソース消費も未使用時に停止すれば問題ありません。
複数のエージェントを動かすとメモリやディスクを圧迫しませんか?
適切な設定で制御可能です:
メモリ:docker-compose.ymlで各エージェントの上限を例えば512MBに制限します。5つ動かしても2.5GB程度です。
ディスク:全エージェントが同じベースイメージ(OpenClaw)を共有するため、追加消費は差分データのみ(数十MB程度)です。
私は16GBメモリのPCで常時3エージェントを稼働させていますが全く問題ありません。
TelegramのBotトークンを取り違えないコツは?
命名規則と管理方法を工夫します:
1. Bot名:@my_work_bot、@my_personal_bot のように用途を明記。
2. 管理:1Passwordなどのパスワードマネージャーにまとめて保存。
3. アイコン:Workは青、Personalは緑、実験用は黄色など、Botのアイコン色を変えると誤送信を防げます。
PersonalエージェントからWorkのファイルにアクセスできますか?
デフォルトでは完全に不可能です。
各エージェントは指定された WORKSPACE_PATH しかDockerマウントされていないため、OSレベルで隔離されています。Agent-AがAgent-Bのファイルを見ることはできません。
共有が必要な場合は別途共有ボリュームを設定できますが、セキュリティの観点から推奨しません(Git経由などで共有すべきです)。
サンドボックス(実験用)をネット遮断した場合、AIは使えますか?
ネット遮断(ENABLE_NETWORK=false)すると、クラウドのAI(ChatGPT/Claude)にはアクセスできなくなります。
この場合、ローカルLLM(Ollama等)をサンドボックス内部またはリンクされたコンテナとして配置して利用します。あるいは、ネットは許可しつつ、ファイルシステムをRead-onlyにして「外部アクセスはできるが破壊はできない」状態にするのも有効です。
チームでの利用時、ALLOWED_USERSはどう設定すればいいですか?
カンマ区切りで複数ユーザーIDを指定できます:
ALLOWED_USERS=123456,789012,345678
チーム用エージェントには全員のIDを、個人用エージェントには自分のIDのみを設定します。ユーザーIDは @userinfobot で確認できます。セキュリティのため、退職者が出た場合はリストから削除し、コンテナを再起動してください。
設定ミスで起動しない時の対処法は?
体系的にトラブルシュートします:
1. docker logs <コンテナ名> を確認。9割の理由はここに(ポート競合、権限不足など)。
2. ポート競合なら .env の CONTAINER_PORT を変更。
3. 権限エラーなら WORKSPACE_PATH のパーミッションを確認(chmod 755)。
4. TokenエラーならBotFatherで再確認。
最悪の場合、コンテナを削除(docker-compose down)して作り直せるのがDockerの利点です。恐れず試してください。

6 min read · 公開日: 2026年2月5日 · 更新日: 2026年2月5日

コメント

GitHubアカウントでログインしてコメントできます

関連記事