Grupos de difusión
Estado: Experimental Versión: Añadido en 2026.1.9
Descripción general
Los grupos de difusión permiten que múltiples agentes procesen y respondan al mismo mensaje simultáneamente. Esto te permite crear equipos de agentes especializados que trabajan juntos en un solo grupo de WhatsApp o mensaje directo, todo usando un único 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 grupo. En grupos de WhatsApp, esto significa que la difusión ocurre cuando OpenClaw normalmente respondería (por ejemplo: al ser mencionado, según tu configuración de grupo).
Casos de uso
1. Equipos de agentes especializados
Despliega 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 aporta su perspectiva especializada.
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 control de calidad
Group: "Customer Support"
Agents:
- SupportAgent (provides answer)
- QAAgent (reviews quality, only responds if issues found)
4. Automatización de tareas
Group: "Project Management"
Agents:
- TaskTracker (updates task database)
- TimeLogger (logs time spent)
- ReportGenerator (creates summaries)
Configuración
Configuración básica
Añade una sección broadcast de nivel superior (junto a bindings). Las claves son IDs de pares de WhatsApp:
- chats de grupo: JID del grupo (p. ej.,
[email protected]) - mensajes directos: número de teléfono E.164 (p. ej.,
+15551234567)
{
"broadcast": {
"[email protected]": ["alfred", "baerbel", "assistant3"]
}
}
Resultado: Cuando OpenClaw responda en este chat, ejecutará los tres agentes.
Estrategia de procesamiento
Controla cómo los agentes procesan los mensajes:
Paralelo (predeterminado)
Todos los agentes procesan simultáneamente:
{
"broadcast": {
"strategy": "parallel",
"[email protected]": ["alfred", "baerbel"]
}
}
Secuencial
Los agentes procesan en orden (cada uno espera a que el anterior termine):
{
"broadcast": {
"strategy": "sequential",
"[email protected]": ["alfred", "baerbel"]
}
}
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",
"[email protected]": ["code-reviewer", "security-auditor", "docs-generator"],
"[email protected]": ["support-en", "support-de"],
"+15555550123": ["assistant", "logger"]
}
}
Cómo funciona
Flujo de mensajes
- Mensaje entrante llega a un grupo de WhatsApp
- Verificación de difusión: el sistema comprueba 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 (por defecto) o secuencialmente
- Si no está en la lista de difusión:
- Se aplica el enrutamiento normal (primera vinculación coincidente)
Nota: los grupos de difusión no evitan las listas de permitidos del canal ni las reglas de activación de grupo (menciones/comandos/etc.). Solo cambian qué agentes se ejecutan cuando un mensaje es elegible para procesamiento.
Aislamiento de sesiones
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 (diferentes listas de permitidos/denegados)
- Memoria/contexto (IDENTITY.md, SOUL.md, etc. separados)
- Búfer de contexto de grupo (mensajes recientes del grupo usados como contexto) es compartido por par, así 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 (p. ej., solo lectura vs. lectura-escritura)
- Diferentes modelos (p. ej., opus vs. sonnet)
- Diferentes habilidades instaladas
Ejemplo: sesiones aisladas
En el grupo [email protected] con 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, exec
Contexto de Bärbel:
Session: agent:baerbel:whatsapp:group:[email protected]
History: [user message, baerbel's previous responses]
Workspace: /Users/pascal/openclaw-baerbel/
Tools: read only
Buenas prácticas
1. Mantén los agentes enfocados
Diseña cada agente con una responsabilidad única y clara:
{
"broadcast": {
"DEV_GROUP": ["formatter", "linter", "tester"]
}
}
Correcto: cada agente tiene una sola tarea Incorrecto: un agente genérico “dev-helper”
2. Usa nombres descriptivos
Deja claro qué hace cada agente:
{
"agents": {
"security-scanner": { "name": "Security Scanner" },
"code-formatter": { "name": "Code Formatter" },
"test-generator": { "name": "Test Generator" }
}
}
3. Configura diferente acceso a herramientas
Otorga a cada agente solo las herramientas que necesita:
{
"agents": {
"reviewer": {
"tools": { "allow": ["read", "exec"] } // Solo lectura
},
"fixer": {
"tools": { "allow": ["read", "write", "edit", "exec"] } // Lectura-escritura
}
}
}
4. Monitorea el rendimiento
Con muchos agentes, ten en cuenta:
- Usar
"strategy": "parallel"(predeterminado) 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. Maneja los errores con elegancia
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 error
Compatibilidad
Proveedores
Los grupos de difusión actualmente funcionan con:
- WhatsApp (implementado)
- Telegram (planificado)
- Discord (planificado)
- Slack (planificado)
Enrutamiento
Los grupos de difusión funcionan junto al 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
Los agentes no responden
Verifica:
- Los IDs de agente existen en
agents.list - El formato del ID del par es correcto (p. ej.,
[email protected]) - Los agentes no están en listas de denegación
Depuración:
tail -f ~/.openclaw/logs/gateway.log | grep broadcast
Solo responde un agente
Causa: el ID del par podría estar en bindings pero no en broadcast.
Solución: añádelo a la configuración de difusión o elimínalo de las vinculaciones.
Problemas de rendimiento
Si es lento con muchos agentes:
- Reduce el número de agentes por grupo
- Usa modelos más ligeros (sonnet en vez de opus)
- Revisa el tiempo de inicio del sandbox
Ejemplos
Ejemplo 1: Equipo de revisión de código
{
"broadcast": {
"strategy": "parallel",
"[email protected]": [
"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"] } }
]
}
}
El usuario envía: un fragmento de código Respuestas:
- code-formatter: “Corregida la indentación y añadidas anotaciones de tipo”
- security-scanner: “Vulnerabilidad de inyección SQL en la línea 12”
- test-coverage: “La cobertura es del 45%, faltan pruebas para los casos de error”
- docs-checker: “Falta el docstring para la función
process_data”
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
Esquema de configuración
interface OpenClawConfig {
broadcast?: {
strategy?: "parallel" | "sequential";
[peerId: string]: string[];
};
}
Campos
strategy(opcional): cómo procesar los agentes"parallel"(predeterminado): todos los agentes procesan simultáneamente"sequential": los agentes procesan en el orden del array
[peerId]: JID de grupo de WhatsApp, número E.164 u otro ID de par- Valor: array de IDs de agente que deben procesar los mensajes
Limitaciones
- Máximo de agentes: sin límite estricto, pero más de 10 agentes puede ser lento
- Contexto compartido: los agentes no ven las respuestas de los demás (por diseño)
- Orden de mensajes: las respuestas en paralelo pueden llegar en cualquier orden
- Límites de tasa: todos los agentes cuentan para los límites de tasa de WhatsApp
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ñalizarse 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)