Configuration
Yayın grupları
Genel bakış
Yayın grupları, aynı gelen ileti için birden fazla agent çalıştırır. Her agent iletiyi 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 doğrudan mesajda 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 bahsedildiğinde). Yalnızca hangi agent'ların çalışacağını değiştirirler; bir iletinin işlenmeye uygun olup olmadığını hiçbir zaman değiştirmezler.
Canlı WhatsApp kalite güvencesi hattı, bahsetme içeren tek bir grup iletisinin yapılandırılmış iki agent'dan farklı ve görünür yanıtlar üretebildiğini doğrulayan whatsapp-broadcast-group-fanout senaryosunu içerir.
Yapılandırma
Temel kurulum
Üst düzey bir broadcast bölümü (bindings ile aynı düzeyde) ekleyin. Anahtarlar WhatsApp eş kimlikleri, değerler ise agent kimliği dizileridir:
- grup sohbetleri: grup JID'si (ör.
120363403215116621@g.us) - doğrudan mesajlar: 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'ı da çalıştırır.
Listelenen her agent kimliği agents.list içinde bulunmalıdır: yapılandırma doğrulaması bilinmeyen kimlikleri bildirir ve çalışma zamanı bunları Broadcast agent <id> not found in agents.list; skipping uyarısıyla atlar.
İşleme stratejisi
broadcast.strategy, agent'ların iletiyi 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 gelebilir. |
sequential |
Agent'lar dizi sırasıyla işler; her biri öncekinin tamamlanmasını bekler. |
{ "broadcast": { "strategy": "sequential", "120363403215116621@g.us": ["alfred", "baerbel"] }}Eksiksiz ö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?
İleti akışı
Gelen ileti ulaşır
Bir WhatsApp grup iletisi veya doğrudan 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 bulunup bulunmadığını denetler.
Yayın uygulanırsa
- Listelenen tüm agent'lar iletiyi işler.
- Her agent'ın kendi oturum anahtarı ve yalıtılmış bağlamı vardır.
- Agent'lar paralel (varsayılan) veya sıralı biçimde işler.
- Ses ekleri dağıtımdan önce bir kez metne dönüştürü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ılmışsa 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 iletileri) 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ı
Session: agent:alfred:whatsapp:group:120363403215116621@g.usHistory: [user message, alfred's previous responses]Workspace: ~/openclaw-alfred/Tools: read, write, execBaerbel'in bağlamı
Session: agent:baerbel:whatsapp:group:120363403215116621@g.usHistory: [user message, baerbel's previous responses]Workspace: ~/openclaw-baerbel/Tools: read onlyKullanım alanları
- Uzmanlaşmış agent ekipleri:
code-reviewer,security-auditor,test-generatorvedocs-checkeragent'larının aynı iletiyi kendi bakış açılarından yanıtladığı bir geliştirme grubu. - Çok dilli destek:
support-en,support-devesupport-esagent'larının 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-generatoragent'larının tümü aynı durum güncellemesini işler.
En iyi uygulamalar
1. Agent'ları odaklı tutun
Tek bir genel "dev-helper" agent'ı yerine her agent'a tek ve açık bir sorumluluk (formatter, linter, tester) verin.
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" (varsayılan) seçeneğini tercih edin, yayın gruplarını birkaç agent ile 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
Denetleyin:
- Agent kimlikleri
agents.listiç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 doğrudan mesajlar için+15551234567gibi bir E.164 numarası). - İleti normal geçiş denetimlerini geçti (bahsetme/etkinleştirme kuralları geçerliliğini korur).
Hata ayıklama:
openclaw logs --follow | grep -i broadcastBaşarılı bir dağıtım, günlüğe Broadcasting message to <n> agents (<strategy>) kaydını yazar.
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 veya ö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ğini belirler. parallel tüm agent'ları eşzamanlı çalıştırır; sequential ise onları dizi sırasıyla çalıştırır.
[peerId]string[]WhatsApp grup JID'si veya E.164 telefon numarası. Değer, bu eşten gelen iletileri işlemesi gereken tüm agent kimliklerinin dizisidir.
Sınırlamalar
- En fazla agent sayısı: kesin bir sınır yoktur ancak çok sayıda agent (10+) yavaş olabilir.
- Paylaşılan bağlam: agent'lar birbirlerinin yanıtlarını görmez (tasarım gereği).
- İleti sıralaması: paralel yanıtlar herhangi bir sırada gelebilir.
- Hız sınırları: tüm yanıtlar tek bir WhatsApp hesabından gelir; bu nedenle her agent'ın yanıtı aynı WhatsApp hız sınırlarına dâhil edilir.