Configuration
Yayın grupları
Genel bakış
Yayın grupları, aynı gelen mesaj üzerinde birden fazla agent çalıştırır. Her agent mesajı kendi yalıtılmış oturumunda işler ve kendi yanıtını gönderir; böylece tek bir WhatsApp numarası, tek bir grup sohbetinde veya DM'de uzmanlaşmış agent'lardan oluşan bir ekibi barındırabilir.
Yayın grupları, kanal izin listeleri ve grup etkinleştirme kurallarından sonra değerlendirilir. WhatsApp gruplarında yayınlar, OpenClaw normalde yanıt vereceği zaman gerçekleşir (örneğin grup ayarlarınıza bağlı olarak bir bahsetme olduğunda). Yalnızca hangi agent'ların çalışacağını değiştirirler; bir mesajın işlenmeye uygun olup olmadığını asla değiştirmezler.
Canlı WhatsApp QA hattı, bahsetme içeren tek bir grup mesajının yapılandırılmış iki agent'tan farklı ve görünür yanıtlar üretebildiğini doğrulayan whatsapp-broadcast-group-fanout öğesini içerir.
Yapılandırma
Temel kurulum
Üst düzeye (bindings yanına) bir broadcast bölümü ekleyin. Anahtarlar WhatsApp eş kimlikleri, değerler ise agent kimliği dizileridir:
- grup sohbetleri: grup JID'si (ör.
120363403215116621@g.us) - DM'ler: gönderenin E.164 telefon numarası (ör.
+15551234567)
{ "broadcast": { "120363403215116621@g.us": ["alfred", "baerbel", "assistant3"] }}Sonuç: OpenClaw bu sohbette yanıt vereceği zaman üç agent'ın tümünü çalıştırır.
Listelenen her agent kimliği agents.entries içinde bulunmalıdır: yapılandırma doğrulaması bilinmeyen kimlikleri bildirir ve çalışma zamanı bunları bir Broadcast agent <id> not found in agents.entries; skipping uyarısıyla atlar.
İşleme stratejisi
broadcast.strategy, agent'ların mesajı nasıl işleyeceğini belirler:
| Strateji | Davranış |
|---|---|
parallel (varsayılan) |
Tüm agent'lar eşzamanlı işler; yanıtlar herhangi bir sırada gelir. |
sequential |
Agent'lar dizi sırasına göre işler; her biri öncekinin tamamlanmasını bekler. |
{ "broadcast": { "strategy": "sequential", "120363403215116621@g.us": ["alfred", "baerbel"] }}Tam örnek
{ "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"] }}Nasıl çalışır?
Mesaj akışı
Gelen mesaj ulaşır
Bir WhatsApp grup veya DM mesajı ulaşır.
Yönlendirme ve kabul
OpenClaw kanal izin listelerini, grup etkinleştirme kurallarını ve yapılandırılmış ACP bağlama sahipliğini uygular.
Yayın denetimi
Yapılandırılmış hiçbir ACP bağlaması yönlendirmenin sahibi değilse OpenClaw, eş kimliğinin broadcast içinde olup olmadığını denetler.
Yayın uygulanırsa
- Listelenen tüm agent'lar mesajı işler.
- Her agent'ın kendi oturum anahtarı ve yalıtılmış bağlamı vardır.
- Agent'lar paralel (varsayılan) veya sıralı olarak işler.
- Ses ekleri dağıtımdan önce bir kez yazıya dökülür; böylece agent'lar ayrı STT çağrıları yapmak yerine tek bir dökümü paylaşır.
Yayın uygulanmazsa
OpenClaw, sıradan yönlendirmeyi veya yönlendirme sırasında seçilen yapılandırılmış ACP oturum yönlendirmesini gönderir.
Oturum yalıtımı
Bir yayın grubundaki her agent aşağıdakileri tamamen ayrı tutar:
- Oturum anahtarları (
agent:alfred:whatsapp:group:120363...ileagent:baerbel:whatsapp:group:120363...) - Konuşma geçmişi (bir agent diğer agent'ların yanıtlarını görmez)
- Çalışma alanı (yapılandırıldıysa ayrı korumalı alanlar)
- Araç erişimi (farklı izin/verme listeleri)
- Bellek/bağlam (ayrı
IDENTITY.md,SOUL.mdvb.)
Bir istisna kasıtlı olarak paylaşılır: grup bağlam arabelleği (bağlam için kullanılan son grup mesajları) eş başına paylaşılır; böylece tüm yayın agent'ları tetiklendiklerinde aynı bağlamı görür. Dağıtım tamamlandıktan sonra bir kez temizlenir.
Bu, her agent'ın farklı kişiliklere, modellere, becerilere ve araç erişimine (örneğin salt okunur veya okuma-yazma) sahip olmasını sağlar.
Örnek: yalıtılmış oturumlar
["alfred", "baerbel"] agent'larının bulunduğu 120363403215116621@g.us grubunda:
Alfred'ın bağlamı
Oturum: agent:alfred:whatsapp:group:120363403215116621@g.usGeçmiş: [kullanıcı mesajı, alfred'ın önceki yanıtları]Çalışma alanı: ~/openclaw-alfred/Araçlar: okuma, yazma, yürütmeBaerbel'in bağlamı
Oturum: agent:baerbel:whatsapp:group:120363403215116621@g.usGeçmiş: [kullanıcı mesajı, baerbel'in önceki yanıtları]Çalışma alanı: ~/openclaw-baerbel/Araçlar: salt okunurKullanım alanları
- Uzmanlaşmış agent ekipleri:
code-reviewer,security-auditor,test-generatorvedocs-checkeröğelerinin aynı mesajı kendi bakış açılarından yanıtladığı bir geliştirme grubu. - Çok dilli destek:
support-en,support-devesupport-esöğelerinin kendi dillerinde yanıt verdiği tek bir destek sohbeti. - Kalite güvencesi:
support-agentyanıt verirkenqa-agentinceleme yapar ve yalnızca sorun bulduğunda yanıt verir. - Görev otomasyonu:
task-tracker,time-loggervereport-generatoröğelerinin tümü aynı durum güncellemesini işler.
En iyi uygulamalar
1. Agent'ların odağını koruyun
Her agent'a tek ve net bir sorumluluk (formatter, linter, tester) verin; tek bir genel "dev-helper" agent'ı kullanmayın.
2. Açıklayıcı kimlikler ve adlar kullanın
{ "agents": { "list": [ { "id": "security-scanner", "name": "Security Scanner" }, { "id": "code-formatter", "name": "Code Formatter" }, { "id": "test-generator", "name": "Test Generator" } ] }}3. Farklı araç erişimleri yapılandırın
{ "agents": { "list": [ { "id": "reviewer", "tools": { "allow": ["read", "exec"] } }, { "id": "fixer", "tools": { "allow": ["read", "write", "edit", "exec"] } } ] }}reviewer salt okunurdur. fixer okuyabilir ve yazabilir.
4. Performansı izleyin
Çok sayıda agent kullanırken "strategy": "parallel" seçeneğini (varsayılan) tercih edin, yayın gruplarını birkaç agent'la sınırlı tutun ve daha basit agent'lar için daha hızlı modeller kullanın.
5. Hatalar yalıtılmış kalır
Agent'lar birbirinden bağımsız olarak başarısız olur. Bir agent'ın hatası günlüğe kaydedilir (Broadcast agent <id> failed: ...) ve diğerlerini engellemez.
Uyumluluk
Sağlayıcılar
Yayın grupları şu anda yalnızca WhatsApp (web kanalı) için uygulanmıştır. Diğer kanallar broadcast yapılandırmasını yok sayar.
Yönlendirme
Yayın grupları mevcut yönlendirmeyle birlikte çalışır:
{ "bindings": [ { "match": { "channel": "whatsapp", "peer": { "kind": "group", "id": "GROUP_A" } }, "agentId": "alfred" } ], "broadcast": { "GROUP_B": ["agent1", "agent2"] }}GROUP_A: yalnızca alfred yanıt verir (normal yönlendirme).GROUP_B: agent1 VE agent2 yanıt verir (yayın).
Sorun giderme
Agent'lar yanıt vermiyor
Şunları denetleyin:
- Agent kimlikleri
agents.entriesiçinde bulunuyor (yapılandırma doğrulaması bilinmeyen kimlikleri reddeder). - Eş kimliği biçimi doğru (gruplar için
120363403215116621@g.usgibi bir grup JID'si veya DM'ler için+15551234567gibi bir E.164 numarası). - Mesaj normal geçit denetiminden geçti (bahsetme/etkinleştirme kuralları uygulanmaya devam eder).
Hata ayıklama:
openclaw logs --follow | grep -i broadcastBaşarılı bir dağıtım Broadcasting message to <n> agents (<strategy>) günlüğünü oluşturur.
Yalnızca bir agent yanıt veriyor
Neden: eş kimliği sıradan yönlendirme bağlamalarında bulunuyor ancak broadcast içinde bulunmuyor olabilir ya da özel bir yapılandırılmış ACP bağlamasıyla eşleşebilir.
Düzeltme: sıradan yönlendirmeye bağlı eşleri yayın yapılandırmasına ekleyin veya dağıtımlı yayın isteniyorsa yapılandırılmış ACP bağlamasını kaldırın/değiştirin.
Performans sorunları
Çok sayıda agent kullanıldığında yavaşsa: grup başına agent sayısını azaltın, daha hafif modeller kullanın ve korumalı alan başlatma süresini denetleyin.
Örnekler
Örnek 1: Kod inceleme ekibi
{ "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"] } } ] }}Gruptaki tek bir kod parçacığı dört yanıt üretir: biçimlendirme düzeltmeleri, bir güvenlik bulgusu, bir kapsam eksikliği ve küçük bir dokümantasyon sorunu.
Örnek 2: Çok dilli işlem hattı
{ "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" } ] }}API başvurusu
Yapılandırma şeması
interface OpenClawConfig { broadcast?: { strategy?: "parallel" | "sequential"; [peerId: string]: string[]; };}Alanlar
strategy"parallel" | "sequential"default: "parallel"Agent'ların nasıl işleneceği. parallel tüm agent'ları eşzamanlı çalıştırır; sequential ise bunları dizi sırasına göre çalıştırır.
[peerId]string[]WhatsApp grup JID'si veya E.164 telefon numarası. Değer, bu eşten gelen mesajların tümünü işlemesi gereken agent kimliklerinin dizisidir.
Sınırlamalar
- Maksimum ajan sayısı: kesin bir sınır yoktur, ancak çok sayıda ajan (10+) yavaş çalışabilir.
- Paylaşılan bağlam: ajanlar tasarım gereği birbirlerinin yanıtlarını görmez.
- Mesaj sıralaması: paralel yanıtlar herhangi bir sırayla ulaşabilir.
- Hız sınırları: tüm yanıtlar tek bir WhatsApp hesabından geldiği için her ajanın yanıtı aynı WhatsApp hız sınırlarına dâhil edilir.