Grupos
OpenClaw trata los chats grupales de forma consistente en todas las superficies: WhatsApp, Telegram, Discord, Slack, Signal, iMessage y Microsoft Teams.Introducción para principiantes (2 minutos)
OpenClaw “vive” en sus propias cuentas de mensajería. No existe un usuario de bot separado de WhatsApp. Si usted está en un grupo, OpenClaw puede ver ese grupo y responder allí. Comportamiento predeterminado:- Los grupos están restringidos (
groupPolicy: "allowlist"). - Las respuestas requieren una mención a menos que usted desactive explícitamente el control por menciones.
TL;DRFlujo rápido (qué ocurre con un mensaje de grupo):
- El acceso a mensajes directos está controlado por
*.allowFrom.- El acceso a grupos está controlado por
*.groupPolicy+ listas de permitidos (*.groups,*.groupAllowFrom).- La activación de respuestas está controlada por el control por menciones (
requireMention,/activation).
| Objetivo | Qué configurar |
|---|---|
| Permitir todos los grupos pero responder solo con @menciones | groups: { "*": { requireMention: true } } |
| Desactivar todas las respuestas en grupos | groupPolicy: "disabled" |
| Solo grupos específicos | groups: { "<group-id>": { ... } } (sin la clave "*") |
| Solo usted puede activar en grupos | groupPolicy: "allowlist", groupAllowFrom: ["+1555..."] |
Claves de sesión
- Las sesiones de grupo usan claves de sesión
agent:<agentId>:<channel>:group:<id>(las salas/canales usanagent:<agentId>:<channel>:channel:<id>). - Los temas de foros de Telegram agregan
:topic:<threadId>al ID del grupo para que cada tema tenga su propia sesión. - Los chats directos usan la sesión principal (o por remitente si está configurado).
- Los heartbeats se omiten para las sesiones de grupo.
Patrón: DMs personales + grupos públicos (un solo agente)
Sí — esto funciona bien si su tráfico “personal” son mensajes directos y su tráfico “público” son grupos. Por qué: en el modo de agente único, los mensajes directos normalmente llegan a la clave de sesión principal (agent:main:main), mientras que los grupos siempre usan claves de sesión no principales (agent:main:<channel>:group:<id>). Si usted habilita sandboxing con mode: "non-main", esas sesiones de grupo se ejecutan en Docker mientras que su sesión principal de mensajes directos permanece en el host.
Esto le da un solo “cerebro” de agente (espacio de trabajo y memoria compartidos), pero dos posturas de ejecución:
- Mensajes directos: herramientas completas (host)
- Grupos: sandbox + herramientas restringidas (Docker)
Si necesita espacios de trabajo/personas verdaderamente separados (“personal” y “público” nunca deben mezclarse), use un segundo agente + vinculaciones. Vea Enrutamiento multiagente.Ejemplo (mensajes directos en el host, grupos en sandbox + herramientas solo de mensajería):
workspaceAccess: "none" y monte solo rutas en la lista de permitidos dentro del sandbox:
- Claves de configuración y valores predeterminados: Configuración del Gateway
- Depurar por qué una herramienta está bloqueada: Sandbox vs Tool Policy vs Elevated
- Detalles de montajes bind: Sandboxing
Etiquetas de visualización
- Las etiquetas de la UI usan
displayNamecuando está disponible, con el formato<channel>:<token>. #roomestá reservado para salas/canales; los chats grupales usang-<slug>(minúsculas, espacios ->-, conservar#@+._-).
Política de grupos
Controle cómo se manejan los mensajes de grupos/salas por canal:| Política | Comportamiento |
|---|---|
"open" | Los grupos omiten las listas de permitidos; el control por menciones sigue aplicando. |
"disabled" | Bloquea por completo todos los mensajes de grupo. |
"allowlist" | Solo permite grupos/salas que coincidan con la lista de permitidos configurada. |
groupPolicyes independiente del control por menciones (que requiere @menciones).- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams: use
groupAllowFrom(alternativa:allowFromexplícito). - Discord: la lista de permitidos usa
channels.discord.guilds.<id>.channels. - Slack: la lista de permitidos usa
channels.slack.channels. - Matrix: la lista de permitidos usa
channels.matrix.groups(IDs de sala, alias o nombres). Usechannels.matrix.groupAllowFrompara restringir remitentes; también se admiten listas de permitidosuserspor sala. - Los mensajes directos grupales se controlan por separado (
channels.discord.dm.*,channels.slack.dm.*). - La lista de permitidos de Telegram puede coincidir con IDs de usuario (
"123456789","telegram:123456789","tg:123456789") o nombres de usuario ("@alice"o"alice"); los prefijos no distinguen mayúsculas/minúsculas. - El valor predeterminado es
groupPolicy: "allowlist"; si su lista de permitidos de grupos está vacía, los mensajes de grupo se bloquean.
groupPolicy(abierto/deshabilitado/lista de permitidos)- listas de permitidos de grupos (
*.groups,*.groupAllowFrom, lista de permitidos específica del canal) - control por menciones (
requireMention,/activation)
Control por menciones (predeterminado)
Los mensajes de grupo requieren una mención a menos que se sobrescriba por grupo. Los valores predeterminados viven por subsistema bajo*.groups."*".
Responder a un mensaje del bot cuenta como una mención implícita (cuando el canal admite metadatos de respuesta). Esto aplica a Telegram, WhatsApp, Slack, Discord y Microsoft Teams.
mentionPatternsson expresiones regulares que no distinguen mayúsculas/minúsculas.- Las superficies que proporcionan menciones explícitas siguen pasando; los patrones son un respaldo.
- Sobrescritura por agente:
agents.list[].groupChat.mentionPatterns(útil cuando varios agentes comparten un grupo). - El control por menciones solo se aplica cuando la detección de menciones es posible (menciones nativas o cuando
mentionPatternsestá configurado). - Los valores predeterminados de Discord viven en
channels.discord.guilds."*"(anulables por servidor/canal). - El contexto histórico del grupo se envuelve de forma uniforme entre canales y es solo pendiente (mensajes omitidos por el control por menciones); use
messages.groupChat.historyLimitpara el valor predeterminado global ychannels.<channel>.historyLimit(ochannels.<channel>.accounts.*.historyLimit) para anulaciones. Configure0para desactivar.
Restricciones de herramientas por grupo/canal (opcional)
Algunas configuraciones de canal admiten restringir qué herramientas están disponibles dentro de un grupo/sala/canal específico.tools: permitir/negar herramientas para todo el grupo.toolsBySender: anulaciones por remitente dentro del grupo (las claves son IDs de remitente/nombres de usuario/correos electrónicos/números de teléfono según el canal). Use"*"como comodín.
- coincidencia de
toolsBySenderde grupo/canal toolsde grupo/canal- coincidencia
toolsBySenderdel valor predeterminado ("*") toolsdel valor predeterminado ("*")
- Las restricciones de herramientas por grupo/canal se aplican además de la política global/del agente (la denegación sigue ganando).
- Algunos canales usan un anidamiento diferente para salas/canales (p. ej., Discord
guilds.*.channels.*, Slackchannels.*, MS Teamsteams.*.channels.*).
Listas de permitidos de grupos
Cuando se configurachannels.whatsapp.groups, channels.telegram.groups o channels.imessage.groups, las claves actúan como una lista de permitidos de grupos. Use "*" para permitir todos los grupos mientras sigue configurando el comportamiento de menciones predeterminado.
Intenciones comunes (copiar/pegar):
- Desactivar todas las respuestas en grupos
- Permitir solo grupos específicos (WhatsApp)
- Permitir todos los grupos pero requerir mención (explícito)
- Solo el propietario puede activar en grupos (WhatsApp)
Activación (solo propietario)
Los propietarios de grupos pueden alternar la activación por grupo:/activation mention/activation always
channels.whatsapp.allowFrom (o el E.164 propio del bot cuando no está configurado). Envíe el comando como un mensaje independiente. Otras superficies actualmente ignoran /activation.
Campos de contexto
Las cargas entrantes de grupos establecen:ChatType=groupGroupSubject(si se conoce)GroupMembers(si se conoce)WasMentioned(resultado del control por menciones)- Los temas de foros de Telegram también incluyen
MessageThreadIdyIsForum.
\n.
Especificidades de iMessage
- Prefiera
chat_id:<id>al enrutar o crear listas de permitidos. - Listar chats:
imsg chats --limit 20. - Las respuestas en grupos siempre regresan al mismo
chat_id.