Perutean Multi-Agen
Tujuan: menjalankan beberapa agen yang terisolasi (workspace +agentDir + sesi terpisah), serta beberapa akun saluran (misalnya dua akun WhatsApp) dalam satu Gateway yang sedang berjalan. Pesan masuk dirutekan ke agen tertentu melalui bindings.
Apa itu “Satu Agen”?
Sebuah agen adalah otak yang sepenuhnya memiliki cakupannya sendiri, dengan:- Workspace (file, AGENTS.md/SOUL.md/USER.md, catatan lokal, aturan persona).
- Direktori status (
agentDir) untuk profil autentikasi, registri model, dan konfigurasi per agen. - Penyimpanan sesi (riwayat obrolan + status perutean) di bawah
~/.openclaw/agents/<agentId>/sessions.
agentDir yang sama untuk agen yang berbeda (itu akan menyebabkan tabrakan autentikasi/sesi). Jika Anda ingin berbagi kredensial, salin auth-profiles.json ke dalam agentDir agen tujuan.
Skill bersifat per agen melalui folder skills/ di masing-masing workspace, dengan skill bersama yang tersedia di ~/.openclaw/skills. Lihat Skill: per agen vs bersama.
Gateway dapat menampung satu agen (default) atau banyak agen secara berdampingan.
Catatan Workspace: workspace setiap agen adalah cwd (current working directory) default, bukan sandbox yang keras. Jalur relatif akan diselesaikan di dalam workspace, tetapi jalur absolut dapat menjangkau lokasi lain di host kecuali jika sandboxing diaktifkan. Lihat Sandboxing.
Jalur (Peta Cepat)
- Konfigurasi:
~/.openclaw/openclaw.json(atauOPENCLAW_CONFIG_PATH) - Direktori Status:
~/.openclaw(atauOPENCLAW_STATE_DIR) - Workspace:
~/.openclaw/workspace(atau~/.openclaw/workspace-<agentId>) - Direktori Agen:
~/.openclaw/agents/<agentId>/agent(atauagents.list[].agentDir) - Sesi:
~/.openclaw/agents/<agentId>/sessions
Mode Agen Tunggal (Default)
Jika Anda tidak melakukan apa pun, OpenClaw menjalankan agen tunggal:agentIddefault-nya adalahmain.- Sesi diberi kunci sebagai
agent:main:<mainKey>. - Workspace default ke
~/.openclaw/workspace(atau~/.openclaw/workspace-<profile>jikaOPENCLAW_PROFILEdisetel). - Status default ke
~/.openclaw/agents/main/agent.
Pembantu Agen (Agent Helper)
Gunakan wizard agen untuk menambahkan agen terisolasi baru:bindings (atau biarkan wizard yang melakukannya) untuk merutekan pesan masuk.
Verifikasi dengan:
Mulai Cepat
Buat workspace untuk setiap agen
Gunakan wizard atau buat workspace secara manual:Setiap agen mendapatkan workspace sendiri dengan
SOUL.md, AGENTS.md, dan USER.md (opsional), serta agentDir dan penyimpanan sesi khusus di bawah ~/.openclaw/agents/<agentId>.Buat akun saluran
Tambah agen, akun, dan binding
Tambahkan agen di bawah
agents.list, akun saluran di bawah channels.<channel>.accounts, dan hubungkan mereka dengan bindings (contoh di bawah).Banyak Agen = Banyak Orang, Banyak Kepribadian
Dengan banyak agen, setiapagentId menjadi persona yang terisolasi sepenuhnya:
- Nomor telepon/akun yang berbeda (per saluran
accountId). - Kepribadian yang berbeda (per file workspace agen seperti
AGENTS.mddanSOUL.md). - Autentikasi + sesi terpisah (tidak ada campur tangan kecuali diaktifkan secara eksplisit).
Satu Nomor WhatsApp, Banyak Orang (Pemisah DM)
Anda dapat merutekan DM WhatsApp yang berbeda ke agen yang berbeda meskipun menggunakan satu akun WhatsApp. Pencocokan dilakukan berdasarkan E.164 pengirim (seperti+628123456789) dengan peer.kind: "direct". Balasan tetap berasal dari nomor WhatsApp yang sama (tidak ada identitas pengirim per agen).
Poin penting: obrolan langsung digabungkan ke kunci sesi utama agen, sehingga isolasi sejati memerlukan satu agen per orang.
Contoh:
- Kontrol akses DM bersifat global per akun WhatsApp (pairing/allowlist), bukan per agen.
- Untuk grup bersama, ikat grup tersebut ke satu agen atau gunakan Grup Siaran.
Aturan Perutean (Bagaimana pesan memilih agen)
Binding bersifat deterministik dan aturan yang paling spesifik yang akan menang:- Kecocokan
peer(ID DM/grup/saluran yang tepat). - Kecocokan
parentPeer(pewarisan utas/THREAD). guildId + roles(perutean peran Discord).guildId(Discord).teamId(Slack).- Kecocokan
accountIduntuk sebuah saluran. - Kecocokan tingkat saluran (
accountId: "*"). - Fallback ke agen default (
agents.list[].default, jika tidak ada maka entri daftar pertama, default:main).
peer + guildId), semua bidang yang ditentukan harus cocok (semantik AND).
Banyak Akun / Nomor Telepon
Saluran yang mendukung banyak akun (misalnya WhatsApp) menggunakanaccountId untuk mengidentifikasi setiap login. Setiap accountId dapat dirutekan ke agen yang berbeda, sehingga satu server dapat menampung banyak nomor telepon tanpa mencampur sesi.
Konsep Utama
agentId: satu “otak” (workspace, autentikasi per agen, penyimpanan sesi per agen).accountId: satu instansi akun saluran (misalnya akun WhatsApp"pribadi"vs"bisnis").binding: merutekan pesan masuk keagentIdberdasarkan(channel, accountId, peer)dan opsional ID guild/team.- Obrolan langsung digabungkan ke
agent:<agentId>:<mainKey>(“utama” per agen;session.mainKey).
Contoh Platform
Bot Discord per Agen
Setiap akun bot Discord dipetakan keaccountId yang unik. Ikat setiap akun ke agen dan kelola daftar izinkan (allowlist) per bot.
- Undang setiap bot ke guild dan aktifkan Message Content Intent.
- Token berada di
channels.discord.accounts.<id>.token(akun default dapat menggunakanDISCORD_BOT_TOKEN).
Bot Telegram per Agen
- Buat satu bot per agen melalui BotFather dan salin setiap tokennya.
- Token berada di
channels.telegram.accounts.<id>.botToken(akun default dapat menggunakanTELEGRAM_BOT_TOKEN).
Nomor WhatsApp per Agen
Tautkan setiap akun sebelum memulai gateway:~/.openclaw/openclaw.json (JSON5):
Contoh: Obrolan Harian WhatsApp + Kerja Mendalam Telegram
Pemisahan berdasarkan saluran: rute WhatsApp ke agen harian yang cepat dan Telegram ke agen Opus yang cerdas.- Jika Anda memiliki banyak akun untuk satu saluran, tambahkan
accountIdke dalam binding (misalnya{ channel: "whatsapp", accountId: "personal" }). - Untuk merutekan satu DM/grup tertentu ke Opus sementara sisanya di agen chat, tambahkan binding
match.peer; pencocokan peer selalu menang atas aturan di tingkat saluran.
Contoh: Saluran Sama, Satu Orang ke Opus
Gunakan agen cepat untuk WhatsApp, tetapi rute satu DM ke Opus:Agen Keluarga yang Terikat ke Grup WhatsApp
Ikat agen khusus keluarga ke satu grup WhatsApp, dengan gerbang sebutan (mention) dan kebijakan alat yang lebih ketat:- Daftar izinkan/tolak alat (tool allow/deny) adalah untuk alat, bukan skill. Jika sebuah skill perlu menjalankan biner, pastikan
execdiizinkan dan biner tersebut ada di dalam sandbox. - Untuk penyaringan yang lebih ketat, setel
agents.list[].groupChat.mentionPatternsdan pastikan daftar izinkan grup diaktifkan untuk saluran tersebut.
Konfigurasi Sandbox dan Alat per Agen
Mulai v2026.1.6, setiap agen dapat memiliki batasan sandbox dan alatnya sendiri:setupCommand berada di bawah sandbox.docker dan berjalan satu kali saat pembuatan kontainer. Penimpaan sandbox.docker.* per agen akan diabaikan jika scope yang diselesaikan adalah "shared".
Manfaat:
- Isolasi Keamanan: Membatasi alat untuk agen yang kurang dipercaya.
- Kontrol Sumber Daya: Menjalankan sandbox untuk agen tertentu sambil membiarkan yang lain tetap di host.
- Kebijakan Fleksibel: Izin yang berbeda untuk setiap agen.
tools.elevated bersifat global dan berbasis pengirim; ini tidak dapat dikonfigurasi per agen. Jika Anda memerlukan batasan per agen, gunakan agents.list[].tools untuk menolak exec. Untuk grup, gunakan agents.list[].groupChat.mentionPatterns agar sebutan @mentions dipetakan dengan tepat ke agen yang dimaksud.
Lihat Sandbox & Alat Multi-Agen untuk contoh yang lebih detail.