Configuration
Grup siaran
Ikhtisar
Grup siaran menjalankan beberapa agen pada pesan masuk yang sama. Setiap agen memproses pesan dalam sesinya sendiri yang terisolasi dan mengirimkan balasannya sendiri, sehingga satu nomor WhatsApp dapat menampung tim agen khusus dalam satu obrolan grup atau DM.
Grup siaran dievaluasi setelah daftar izin kanal dan aturan aktivasi grup. Dalam grup WhatsApp, siaran terjadi ketika OpenClaw biasanya akan membalas (misalnya: saat disebut, bergantung pada pengaturan grup Anda). Grup siaran hanya mengubah agen mana yang dijalankan, bukan menentukan apakah pesan memenuhi syarat untuk diproses.
Jalur QA WhatsApp langsung mencakup whatsapp-broadcast-group-fanout, yang memverifikasi bahwa satu pesan grup yang menyebut akun dapat menghasilkan balasan terlihat yang berbeda dari dua agen yang dikonfigurasi.
Konfigurasi
Penyiapan dasar
Tambahkan bagian broadcast pada tingkat teratas (di sebelah bindings). Kuncinya adalah ID rekan WhatsApp dan nilainya adalah larik ID agen:
- obrolan grup: JID grup (misalnya
120363403215116621@g.us) - DM: nomor telepon pengirim dalam format E.164 (misalnya
+15551234567)
{ "broadcast": { "120363403215116621@g.us": ["alfred", "baerbel", "assistant3"] }}Hasil: ketika OpenClaw biasanya akan membalas dalam obrolan ini, OpenClaw menjalankan ketiga agen tersebut.
Setiap ID agen yang dicantumkan harus ada di agents.list: validasi konfigurasi melaporkan ID yang tidak dikenal, dan runtime melewatinya dengan peringatan Broadcast agent <id> not found in agents.list; skipping.
Strategi pemrosesan
broadcast.strategy menentukan cara agen memproses pesan:
| Strategi | Perilaku |
|---|---|
parallel (bawaan) |
Semua agen memproses secara bersamaan; balasan dapat tiba dalam urutan apa pun. |
sequential |
Agen memproses sesuai urutan larik; masing-masing menunggu agen sebelumnya selesai. |
{ "broadcast": { "strategy": "sequential", "120363403215116621@g.us": ["alfred", "baerbel"] }}Contoh lengkap
{ "agents": { "list": [ { "id": "code-reviewer", "name": "Code Reviewer", "workspace": "/path/to/code-reviewer", "sandbox": { "mode": "all" } }, { "id": "security-auditor", "name": "Security Auditor", "workspace": "/path/to/security-auditor", "sandbox": { "mode": "all" } }, { "id": "docs-generator", "name": "Documentation Generator", "workspace": "/path/to/docs-generator", "sandbox": { "mode": "all" } } ] }, "broadcast": { "strategy": "parallel", "120363403215116621@g.us": ["code-reviewer", "security-auditor", "docs-generator"], "120363424282127706@g.us": ["support-en", "support-de"], "+15555550123": ["assistant", "logger"] }}Cara kerjanya
Alur pesan
Pesan masuk tiba
Pesan grup WhatsApp atau DM tiba.
Perutean dan penerimaan
OpenClaw menerapkan daftar izin kanal, aturan aktivasi grup, dan kepemilikan pengikatan ACP yang dikonfigurasi.
Pemeriksaan siaran
Jika tidak ada pengikatan ACP terkonfigurasi yang memiliki rute tersebut, OpenClaw memeriksa apakah ID rekan ada di broadcast.
Jika siaran berlaku
- Semua agen yang dicantumkan memproses pesan.
- Setiap agen memiliki kunci sesi dan konteks terisolasinya sendiri.
- Agen memproses secara paralel (bawaan) atau berurutan.
- Lampiran audio ditranskripsikan sekali sebelum disebarkan, sehingga agen berbagi satu transkrip alih-alih melakukan panggilan STT secara terpisah.
Jika siaran tidak berlaku
OpenClaw mengirimkan pesan melalui rute biasa atau rute sesi ACP terkonfigurasi yang dipilih selama perutean.
Isolasi sesi
Setiap agen dalam grup siaran memiliki komponen berikut yang sepenuhnya terpisah:
- Kunci sesi (
agent:alfred:whatsapp:group:120363...dibandingkan denganagent:baerbel:whatsapp:group:120363...) - Riwayat percakapan (agen tidak melihat balasan agen lain)
- Ruang kerja (sandbox terpisah jika dikonfigurasi)
- Akses alat (daftar izin/tolak yang berbeda)
- Memori/konteks (
IDENTITY.md,SOUL.md, dan sebagainya yang terpisah)
Ada satu pengecualian yang sengaja dibagikan: buffer konteks grup (pesan grup terbaru yang digunakan sebagai konteks) dibagikan per rekan, sehingga semua agen siaran melihat konteks yang sama saat dipicu. Buffer ini dikosongkan satu kali setelah penyebaran selesai.
Hal ini memungkinkan setiap agen memiliki kepribadian, model, Skills, dan akses alat yang berbeda (misalnya hanya baca dibandingkan baca-tulis).
Contoh: sesi terisolasi
Dalam grup 120363403215116621@g.us dengan agen ["alfred", "baerbel"]:
Konteks Alfred
Session: agent:alfred:whatsapp:group:120363403215116621@g.usHistory: [user message, alfred's previous responses]Workspace: ~/openclaw-alfred/Tools: read, write, execKonteks Baerbel
Session: agent:baerbel:whatsapp:group:120363403215116621@g.usHistory: [user message, baerbel's previous responses]Workspace: ~/openclaw-baerbel/Tools: read onlyKasus penggunaan
- Tim agen khusus: grup pengembangan tempat
code-reviewer,security-auditor,test-generator, dandocs-checkermasing-masing menjawab pesan yang sama dari sudut pandangnya sendiri. - Dukungan multibahasa: satu obrolan dukungan dengan
support-en,support-de, dansupport-esyang merespons dalam bahasa masing-masing. - Jaminan kualitas:
support-agentmenjawab sementaraqa-agentmeninjau dan hanya merespons ketika menemukan masalah. - Otomatisasi tugas:
task-tracker,time-logger, danreport-generatorsemuanya menggunakan pembaruan status yang sama.
Praktik terbaik
1. Jaga agar agen tetap terfokus
Berikan satu tanggung jawab yang jelas kepada setiap agen (formatter, linter, tester), bukan satu agen "dev-helper" generik.
2. Gunakan ID dan nama yang deskriptif
{ "agents": { "list": [ { "id": "security-scanner", "name": "Security Scanner" }, { "id": "code-formatter", "name": "Code Formatter" }, { "id": "test-generator", "name": "Test Generator" } ] }}3. Konfigurasikan akses alat yang berbeda
{ "agents": { "list": [ { "id": "reviewer", "tools": { "allow": ["read", "exec"] } }, { "id": "fixer", "tools": { "allow": ["read", "write", "edit", "exec"] } } ] }}reviewer hanya memiliki akses baca. fixer dapat membaca dan menulis.
4. Pantau kinerja
Jika menggunakan banyak agen, utamakan "strategy": "parallel" (bawaan), batasi grup siaran hanya pada beberapa agen, dan gunakan model yang lebih cepat untuk agen yang lebih sederhana.
5. Kegagalan tetap terisolasi
Agen gagal secara independen. Kesalahan satu agen dicatat (Broadcast agent <id> failed: ...) dan tidak memblokir agen lainnya.
Kompatibilitas
Penyedia
Grup siaran saat ini hanya diterapkan untuk WhatsApp (kanal web). Kanal lain mengabaikan konfigurasi broadcast.
Perutean
Grup siaran berfungsi bersama perutean yang sudah ada:
{ "bindings": [ { "match": { "channel": "whatsapp", "peer": { "kind": "group", "id": "GROUP_A" } }, "agentId": "alfred" } ], "broadcast": { "GROUP_B": ["agent1", "agent2"] }}GROUP_A: hanya alfred yang merespons (perutean normal).GROUP_B: agent1 DAN agent2 merespons (siaran).
Pemecahan masalah
Agen tidak merespons
Periksa:
- ID agen ada di
agents.list(validasi konfigurasi menolak ID yang tidak dikenal). - Format ID rekan sudah benar (JID grup seperti
120363403215116621@g.us, atau E.164 seperti+15551234567untuk DM). - Pesan lolos pembatasan normal (aturan penyebutan/aktivasi tetap berlaku).
Awakutu:
openclaw logs --follow | grep -i broadcastPenyebaran yang berhasil mencatat Broadcasting message to <n> agents (<strategy>).
Hanya satu agen yang merespons
Penyebab: ID rekan mungkin ada dalam pengikatan rute biasa, tetapi tidak ada di broadcast, atau mungkin cocok dengan pengikatan ACP eksklusif yang dikonfigurasi.
Perbaikan: tambahkan rekan yang terikat ke rute biasa ke konfigurasi siaran, atau hapus/ubah pengikatan ACP yang dikonfigurasi jika penyebaran siaran diinginkan.
Masalah kinerja
Jika lambat saat menggunakan banyak agen: kurangi jumlah agen per grup, gunakan model yang lebih ringan, dan periksa waktu mulai sandbox.
Contoh
Contoh 1: Tim peninjauan kode
{ "broadcast": { "strategy": "parallel", "120363403215116621@g.us": [ "code-formatter", "security-scanner", "test-coverage", "docs-checker" ] }, "agents": { "list": [ { "id": "code-formatter", "workspace": "~/agents/formatter", "tools": { "allow": ["read", "write"] } }, { "id": "security-scanner", "workspace": "~/agents/security", "tools": { "allow": ["read", "exec"] } }, { "id": "test-coverage", "workspace": "~/agents/testing", "tools": { "allow": ["read", "exec"] } }, { "id": "docs-checker", "workspace": "~/agents/docs", "tools": { "allow": ["read"] } } ] }}Satu cuplikan kode dalam grup menghasilkan empat balasan: perbaikan pemformatan, temuan keamanan, kekurangan cakupan, dan catatan kecil dokumentasi.
Contoh 2: Alur multibahasa
{ "broadcast": { "strategy": "sequential", "+15555550123": ["detect-language", "translator-en", "translator-de"] }, "agents": { "list": [ { "id": "detect-language", "workspace": "~/agents/lang-detect" }, { "id": "translator-en", "workspace": "~/agents/translate-en" }, { "id": "translator-de", "workspace": "~/agents/translate-de" } ] }}Referensi API
Skema konfigurasi
interface OpenClawConfig { broadcast?: { strategy?: "parallel" | "sequential"; [peerId: string]: string[]; };}Bidang
strategy"parallel" | "sequential"default: "parallel"Cara memproses agen. parallel menjalankan semua agen secara bersamaan; sequential menjalankannya sesuai urutan larik.
[peerId]string[]JID grup WhatsApp atau nomor telepon E.164. Nilainya adalah larik ID agen yang semuanya harus memproses pesan dari rekan tersebut.
Keterbatasan
- Jumlah maksimum agen: tidak ada batas tegas, tetapi banyak agen (10+) dapat berjalan lambat.
- Konteks bersama: agen tidak melihat respons satu sama lain (sesuai rancangan).
- Urutan pesan: respons paralel dapat tiba dalam urutan apa pun.
- Batas laju: semua balasan berasal dari satu akun WhatsApp, sehingga balasan setiap agen dihitung terhadap batas laju WhatsApp yang sama.