Grupos de difusión
Grupos de difusión
Sección titulada «Grupos de difusión»Estado: Experimental
Versión: Añadido en 2026.1.9
Resumen
Sección titulada «Resumen»Los grupos de difusión permiten que múltiples agentes procesen y respondan al mismo mensaje simultáneamente. Esto le permite crear equipos de agentes especializados que trabajan juntos en un solo grupo de WhatsApp o mensaje directo — todo usando un número de teléfono.
Alcance actual: Solo WhatsApp (canal web).
Los grupos de difusión se evalúan después de las listas de permitidos del canal y las reglas de activación de grupos. En los grupos de WhatsApp, esto significa que las difusiones ocurren cuando OpenClaw normalmente respondería (por ejemplo: al mencionar, dependiendo de la configuración de su grupo).
Casos de uso
Sección titulada «Casos de uso»1. Equipos de agentes especializados
Sección titulada «1. Equipos de agentes especializados»Despliegue múltiples agentes con responsabilidades atómicas y enfocadas:
Group: "Development Team"Agents: - CodeReviewer (reviews code snippets) - DocumentationBot (generates docs) - SecurityAuditor (checks for vulnerabilities) - TestGenerator (suggests test cases)Cada agente procesa el mismo mensaje y proporciona su perspectiva especializada.
2. Soporte multilingüe
Sección titulada «2. Soporte multilingüe»Group: "International Support"Agents: - Agent_EN (responds in English) - Agent_DE (responds in German) - Agent_ES (responds in Spanish)3. Flujos de trabajo de aseguramiento de calidad
Sección titulada «3. Flujos de trabajo de aseguramiento de calidad»Group: "Customer Support"Agents: - SupportAgent (provides answer) - QAAgent (reviews quality, only responds if issues found)4. Automatización de tareas
Sección titulada «4. Automatización de tareas»Group: "Project Management"Agents: - TaskTracker (updates task database) - TimeLogger (logs time spent) - ReportGenerator (creates summaries)Configuración
Sección titulada «Configuración»Configuración básica
Sección titulada «Configuración básica»Añada una sección broadcast de nivel superior (junto a bindings). Las claves son identificadores de pares de WhatsApp:
- chats de grupo: JID de grupo (ej.
[email protected]) - Mensajes directos: número de teléfono E.164 (ej.
+15551234567)
{ "broadcast": { }}Resultado: Cuando OpenClaw respondería en este chat, ejecutará los tres agentes.
Estrategia de procesamiento
Sección titulada «Estrategia de procesamiento»Controle cómo procesan los mensajes los agentes:
Paralelo (Predeterminado)
Sección titulada «Paralelo (Predeterminado)»Todos los agentes procesan simultáneamente:
{ "broadcast": { "strategy": "parallel", }}Secuencial
Sección titulada «Secuencial»Los agentes procesan en orden (uno espera a que el anterior termine):
{ "broadcast": { "strategy": "sequential", }}Ejemplo completo
Sección titulada «Ejemplo completo»{ "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", "+15555550123": ["assistant", "logger"] }}Cómo funciona
Sección titulada «Cómo funciona»Flujo de mensajes
Sección titulada «Flujo de mensajes»- Un mensaje entrante llega a un grupo de WhatsApp
- Verificación de difusión: El sistema verifica si el ID del par está en
broadcast - Si está en la lista de difusión:
- Todos los agentes listados procesan el mensaje
- Cada agente tiene su propia clave de sesión y contexto aislado
- Los agentes procesan en paralelo (predeterminado) o secuencialmente
- Si no está en la lista de difusión:
- Se aplica el enrutamiento normal (primer enlace coincidente)
Nota: los grupos de difusión no omiten las listas de permitidos del canal ni las reglas de activación de grupos (menciones/comandos/etc.). Solo cambian qué agentes se ejecutan cuando un mensaje es elegible para ser procesado.
Aislamiento de sesión
Sección titulada «Aislamiento de sesión»Cada agente en un grupo de difusión mantiene completamente separados:
- Claves de sesión (
agent:alfred:whatsapp:group:120363...vsagent:baerbel:whatsapp:group:120363...) - Historial de conversación (el agente no ve los mensajes de otros agentes)
- Espacio de trabajo (sandboxes separados si están configurados)
- Acceso a herramientas (listas de permitidos/denegados diferentes)
- Memoria/contexto (IDENTITY.md, SOUL.md, etc. separados)
- Búfer de contexto de grupo (mensajes recientes del grupo usados para contexto) se comparte por par, por lo que todos los agentes de difusión ven el mismo contexto al activarse
Esto permite que cada agente tenga:
- Diferentes personalidades
- Diferente acceso a herramientas (ej., solo lectura vs. lectura-escritura)
- Diferentes modelos (ej., opus vs. sonnet)
- Diferentes habilidades instaladas
Ejemplo: Sesiones Aisladas
Sección titulada «Ejemplo: Sesiones Aisladas»En el grupo [email protected] con los agentes ["alfred", "baerbel"]:
Contexto de Alfred:
Session: agent:alfred:whatsapp:group:[email protected]History: [user message, alfred's previous responses]Workspace: /Users/pascal/openclaw-alfred/Tools: read, write, execContexto de Bärbel:
Session: agent:baerbel:whatsapp:group:[email protected]History: [user message, baerbel's previous responses]Workspace: /Users/pascal/openclaw-baerbel/Tools: read onlyMejores Prácticas
Sección titulada «Mejores Prácticas»1. Mantener los Agentes Enfocados
Sección titulada «1. Mantener los Agentes Enfocados»Diseñe cada agente con una única y clara responsabilidad:
{ "broadcast": { "DEV_GROUP": ["formatter", "linter", "tester"] }}✅ Bueno: Cada agente tiene un trabajo
❌ Malo: Un agente genérico de “ayuda-desarrollo”
2. Usar Nombres Descriptivos
Sección titulada «2. Usar Nombres Descriptivos»Deje claro qué hace cada agente:
{ "agents": { "security-scanner": { "name": "Security Scanner" }, "code-formatter": { "name": "Code Formatter" }, "test-generator": { "name": "Test Generator" } }}3. Configurar Diferente Acceso a Herramientas
Sección titulada «3. Configurar Diferente Acceso a Herramientas»Dé a los agentes solo las herramientas que necesitan:
{ "agents": { "reviewer": { "tools": { "allow": ["read", "exec"] } // Read-only }, "fixer": { "tools": { "allow": ["read", "write", "edit", "exec"] } // Read-write } }}4. Monitorear el Rendimiento
Sección titulada «4. Monitorear el Rendimiento»Con muchos agentes, considere:
- Usar
"strategy": "parallel"(por defecto) para mayor velocidad - Limitar los grupos de difusión a 5-10 agentes
- Usar modelos más rápidos para agentes más simples
5. Manejar Fallos con Gracia
Sección titulada «5. Manejar Fallos con Gracia»Los agentes fallan de manera independiente. El error de un agente no bloquea a los demás:
Message → [Agent A ✓, Agent B ✗ error, Agent C ✓]Result: Agent A and C respond, Agent B logs errorCompatibilidad
Sección titulada «Compatibilidad»Proveedores
Sección titulada «Proveedores»Los grupos de difusión actualmente funcionan con:
- ✅ WhatsApp (implementado)
- 🚧 Telegram (planificado)
- 🚧 Discord (planificado)
- 🚧 Slack (planificado)
Enrutamiento
Sección titulada «Enrutamiento»Los grupos de difusión funcionan junto con el enrutamiento existente:
{ "bindings": [ { "match": { "channel": "whatsapp", "peer": { "kind": "group", "id": "GROUP_A" } }, "agentId": "alfred" } ], "broadcast": { "GROUP_B": ["agent1", "agent2"] }}GROUP_A: Solo alfred responde (enrutamiento normal)GROUP_B: agent1 Y agent2 responden (difusión)
Precedencia: broadcast tiene prioridad sobre bindings.
Solución de Problemas
Sección titulada «Solución de Problemas»Agentes No Responden
Sección titulada «Agentes No Responden»Verificar:
- Los IDs de agente existen en
agents.list - El formato del ID de par es correcto (ej.,
[email protected]) - Los agentes no están en listas de denegados
Depurar:
tail -f ~/.openclaw/logs/gateway.log | grep broadcastSolo Responde Un Agente
Sección titulada «Solo Responde Un Agente»Causa: Es posible que el ID del par esté en bindings pero no en broadcast.
Solución: Agréguelo a la configuración de transmisión o elimínelo de los enlaces.
Problemas de rendimiento
Sección titulada «Problemas de rendimiento»Si es lento con muchos agentes:
- Reduzca la cantidad de agentes por grupo
- Use modelos más ligeros (sonnet en lugar de opus)
- Verifique el tiempo de inicio del sandbox
Ejemplos
Sección titulada «Ejemplos»Ejemplo 1: Equipo de revisión de código
Sección titulada «Ejemplo 1: Equipo de revisión de código»{ "broadcast": { "strategy": "parallel", }, "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"] } } ] }}Usuario envía: Fragmento de código
Respuestas:
- code-formatter: “Sangría corregida y sugerencias de tipo agregadas”
- security-scanner: “⚠️ Vulnerabilidad de inyección SQL en la línea 12”
- test-coverage: “La cobertura es del 45%, faltan pruebas para casos de error”
- docs-checker: “Falta docstring para la función
process_data”
Ejemplo 2: Soporte multilingüe
Sección titulada «Ejemplo 2: Soporte multilingüe»{ "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" } ] }}Referencia de la API
Sección titulada «Referencia de la API»Esquema de configuración
Sección titulada «Esquema de configuración»interface OpenClawConfig { broadcast?: { strategy?: "parallel" | "sequential"; [peerId: string]: string[]; };}strategy(opcional): Cómo procesar los agentes"parallel"(predeterminado): Todos los agentes procesan simultáneamente"sequential": Los agentes procesan en orden de matriz
[peerId]: JID de grupo de WhatsApp, número E.164 u otro ID de par- Valor: Matriz de ID de agentes que deben procesar mensajes
Limitaciones
Sección titulada «Limitaciones»- Máx. de agentes: Sin límite estricto, pero 10 o más agentes pueden ser lentos
- Contexto compartido: Los agentes no ven las respuestas de los demás (por diseño)
- Orden de mensajes: Las respuestas paralelas pueden llegar en cualquier orden
- Límites de frecuencia: Todos los agentes cuentan hacia los límites de frecuencia de WhatsApp
Mejoras futuras
Sección titulada «Mejoras futuras»Funciones planificadas:
- Modo de contexto compartido (los agentes ven las respuestas de los demás)
- Coordinación de agentes (los agentes pueden señalarse entre sí)
- Selección dinámica de agentes (elegir agentes según el contenido del mensaje)
- Prioridades de agentes (algunos agentes responden antes que otros)