Enrutamiento de canales
Canales y enrutamiento
Sección titulada «Canales y enrutamiento»OpenClaw envía las respuestas de vuelta al canal desde donde provino el mensaje. El modelo no elige un canal; el enrutamiento es determinista y está controlado por la configuración del host.
Términos clave
Sección titulada «Términos clave»- Canal:
whatsapp,telegram,discord,slack,signal,imessage,webchat. - AccountId: instancia de cuenta por canal (cuando se admite).
- AgentId: un espacio de trabajo aislado + almacén de sesiones (“cerebro”).
- SessionKey: la clave de cubo utilizada para almacenar el contexto y controlar la concurrencia.
Formas de clave de sesión (ejemplos)
Sección titulada «Formas de clave de sesión (ejemplos)»Los mensajes directos se agrupan en la sesión principal del agente:
agent:<agentId>:<mainKey>(por defecto:agent:main:main)
Los grupos y canales permanecen aislados por canal:
- Grupos:
agent:<agentId>:<channel>:group:<id> - Canales/salas:
agent:<agentId>:<channel>:channel:<id>
Hilos:
- Los hilos de Slack/Discord añaden
:thread:<threadId>a la clave base. - Los temas del foro de Telegram incorporan
:topic:<topicId>en la clave de grupo.
Ejemplos:
agent:main:telegram:group:-1001234567890:topic:42agent:main:discord:channel:123456:thread:987654
Reglas de enrutamiento (cómo se elige un agente)
Sección titulada «Reglas de enrutamiento (cómo se elige un agente)»El enrutamiento elige un agente para cada mensaje entrante:
- Coincidencia exacta de par (
bindingsconpeer.kind+peer.id). - Coincidencia de gremio (Discord) a través de
guildId. - Coincidencia de equipo (Slack) a través de
teamId. - Coincidencia de cuenta (
accountIden el canal). - Coincidencia de canal (cualquier cuenta en ese canal).
- Agente predeterminado (
agents.list[].default, si no, primera entrada de la lista, retorno amain).
El agente coincidente determina qué espacio de trabajo y almacén de sesiones se utilizan.
Grupos de difusión (ejecutar múltiples agentes)
Sección titulada «Grupos de difusión (ejecutar múltiples agentes)»Los grupos de difusión le permiten ejecutar múltiples agentes para el mismo par cuando OpenClaw normalmente respondería (por ejemplo: en grupos de WhatsApp, después de la filtración por mención/activación).
Configuración:
{ broadcast: { strategy: "parallel", "+15555550123": ["support", "logger"], },}Ver: Grupos de difusión.
Resumen de configuración
Sección titulada «Resumen de configuración»agents.list: definiciones de agente con nombre (espacio de trabajo, modelo, etc.).bindings: asignar canales/cuentares/pares entrantes a agentes.
Ejemplo:
{ agents: { list: [{ id: "support", name: "Support", workspace: "~/.openclaw/workspace-support" }], }, bindings: [ { match: { channel: "slack", teamId: "T123" }, agentId: "support" }, { match: { channel: "telegram", peer: { kind: "group", id: "-100123" } }, agentId: "support" }, ],}Almacenamiento de sesión
Sección titulada «Almacenamiento de sesión»Los almacenes de sesión residen en el directorio de estado (por defecto ~/.openclaw):
~/.openclaw/agents/<agentId>/sessions/sessions.json- Las transcripciones JSONL residen junto al almacén
Puede anular la ruta del almacén mediante el uso de plantillas session.store y {agentId}.
Comportamiento de WebChat
Sección titulada «Comportamiento de WebChat»WebChat se adjunta al agente seleccionado y de manera predeterminada a la sesión principal del agente. Debido a esto, WebChat le permite ver el contexto entre canales para ese agente en un solo lugar.
Contexto de respuesta
Sección titulada «Contexto de respuesta»Las respuestas entrantes incluyen:
ReplyToId,ReplyToBodyyReplyToSendercuando están disponibles.- El contexto citado se agrega a
Bodycomo un bloque[Replying to ...].
Esto es consistente en todos los canales.