Ejecuta varios agentes aislados — cada uno con su propio espacio de trabajo, directorio de estado (Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
agentDir) e historial de sesiones — además de varias cuentas de canal (por ejemplo, dos WhatsApp) en un único Gateway en ejecución. Los mensajes entrantes se enrutan al agente correcto mediante vinculaciones.
Un agente aquí es el ámbito completo por persona: archivos del espacio de trabajo, perfiles de autenticación, registro de modelos y almacén de sesiones. agentDir es el directorio de estado en disco que contiene esta configuración por agente en ~/.openclaw/agents/<agentId>/. Una vinculación asigna una cuenta de canal (por ejemplo, un espacio de trabajo de Slack o un número de WhatsApp) a uno de esos agentes.
¿Qué es “un agente”?
Un agente es un cerebro completamente acotado con su propio:- Espacio de trabajo (archivos, AGENTS.md/SOUL.md/USER.md, notas locales, reglas de persona).
- Directorio de estado (
agentDir) para perfiles de autenticación, registro de modelos y configuración por agente. - Almacén de sesiones (historial de chat + estado de enrutamiento) en
~/.openclaw/agents/<agentId>/sessions.
sessions_history también es aquí la ruta más segura de recuperación entre sesiones: devuelve una vista acotada y saneada, no un volcado bruto de la transcripción. La recuperación del asistente elimina etiquetas de pensamiento, andamiaje <relevant-memories>, cargas XML de llamadas a herramientas en texto plano (incluidos <tool_call>...</tool_call>, <function_call>...</function_call>, <tool_calls>...</tool_calls>, <function_calls>...</function_calls> y bloques truncados de llamadas a herramientas), andamiaje degradado de llamadas a herramientas, tokens filtrados de control de modelo ASCII/de ancho completo y XML de llamadas a herramientas de MiniMax mal formado antes de la redacción/truncamiento.~/.openclaw/skills, y luego se filtran por la lista efectiva de Skills permitidas del agente cuando está configurada. Usa agents.defaults.skills para una línea base compartida y agents.list[].skills para reemplazo por agente. Consulta Skills: por agente frente a compartidas y Skills: listas de Skills permitidas por agente.
El Gateway puede alojar un agente (predeterminado) o muchos agentes en paralelo.
Nota sobre el espacio de trabajo: el espacio de trabajo de cada agente es el cwd predeterminado, no un sandbox estricto. Las rutas relativas se resuelven dentro del espacio de trabajo, pero las rutas absolutas pueden alcanzar otras ubicaciones del host salvo que el sandboxing esté habilitado. Consulta Sandboxing.
Rutas (mapa rápido)
- Configuración:
~/.openclaw/openclaw.json(oOPENCLAW_CONFIG_PATH) - Directorio de estado:
~/.openclaw(oOPENCLAW_STATE_DIR) - Espacio de trabajo:
~/.openclaw/workspace(o~/.openclaw/workspace-<agentId>) - Directorio del agente:
~/.openclaw/agents/<agentId>/agent(oagents.list[].agentDir) - Sesiones:
~/.openclaw/agents/<agentId>/sessions
Modo de agente único (predeterminado)
Si no haces nada, OpenClaw ejecuta un solo agente:agentIdusamainde forma predeterminada.- Las sesiones se identifican como
agent:main:<mainKey>. - El espacio de trabajo usa
~/.openclaw/workspacede forma predeterminada (o~/.openclaw/workspace-<profile>cuandoOPENCLAW_PROFILEestá configurado). - El estado usa
~/.openclaw/agents/main/agentde forma predeterminada.
Ayudante de agentes
Usa el asistente de agentes para añadir un nuevo agente aislado:bindings (o deja que el asistente lo haga) para enrutar los mensajes entrantes.
Verifica con:
Inicio rápido
Crear cada espacio de trabajo de agente
Usa el asistente o crea espacios de trabajo manualmente:Cada agente obtiene su propio espacio de trabajo con
SOUL.md, AGENTS.md y USER.md opcional, además de un agentDir dedicado y un almacén de sesiones en ~/.openclaw/agents/<agentId>.Crear cuentas de canal
Crea una cuenta por agente en tus canales preferidos:Consulta las guías de canales: Discord, Telegram, WhatsApp.
- Discord: un bot por agente, habilita Message Content Intent, copia cada token.
- Telegram: un bot por agente mediante BotFather, copia cada token.
- WhatsApp: vincula cada número de teléfono por cuenta.
Añadir agentes, cuentas y vinculaciones
Añade agentes en
agents.list, cuentas de canal en channels.<channel>.accounts y conéctalos con bindings (ejemplos más abajo).Varios agentes = varias personas, varias personalidades
Con varios agentes, cadaagentId se convierte en una persona completamente aislada:
- Números de teléfono/cuentas diferentes (por canal
accountId). - Personalidades diferentes (archivos de espacio de trabajo por agente como
AGENTS.mdySOUL.md). - Autenticación + sesiones separadas (sin comunicación cruzada salvo que se habilite explícitamente).
Búsqueda de memoria QMD entre agentes
Si un agente debe buscar en las transcripciones de sesiones QMD de otro agente, añade colecciones adicionales enagents.list[].memorySearch.qmd.extraCollections. Usa agents.defaults.memorySearch.qmd.extraCollections solo cuando todos los agentes deban heredar las mismas colecciones compartidas de transcripciones.
Un número de WhatsApp, varias personas (división de DM)
Puedes enrutar distintos DM de WhatsApp a agentes diferentes mientras permaneces en una sola cuenta de WhatsApp. Coincide por remitente E.164 (como+15551234567) con peer.kind: "direct". Las respuestas siguen saliendo del mismo número de WhatsApp (sin identidad de remitente por agente).
Los chats directos se colapsan en la clave de sesión principal del agente, por lo que el aislamiento real requiere un agente por persona.
- El control de acceso de DM es global por cuenta de WhatsApp (emparejamiento/lista de permitidos), no por agente.
- Para grupos compartidos, vincula el grupo a un agente o usa Grupos de difusión.
Reglas de enrutamiento (cómo los mensajes eligen un agente)
Las vinculaciones son deterministas y gana la más específica:Desempate y semántica AND
Desempate y semántica AND
- Si varias vinculaciones coinciden en el mismo nivel, gana la primera en el orden de configuración.
- Si una vinculación define varios campos de coincidencia (por ejemplo
peer+guildId), todos los campos especificados son obligatorios (semánticaAND).
Detalle de ámbito de cuenta
Detalle de ámbito de cuenta
- Una vinculación que omite
accountIdcoincide solo con la cuenta predeterminada. - Usa
accountId: "*"para un respaldo de todo el canal en todas las cuentas. - Si más adelante añades la misma vinculación para el mismo agente con un ID de cuenta explícito, OpenClaw actualiza la vinculación existente de solo canal a ámbito de cuenta en lugar de duplicarla.
Varias cuentas / números de teléfono
Los canales que admiten varias cuentas (por ejemplo, WhatsApp) usanaccountId para identificar cada inicio de sesión. Cada accountId puede enrutarse a un agente diferente, por lo que un servidor puede alojar varios números de teléfono sin mezclar sesiones.
Si quieres una cuenta predeterminada para todo el canal cuando se omite accountId, configura channels.<channel>.defaultAccount (opcional). Cuando no está configurado, OpenClaw recurre a default si está presente; de lo contrario, al primer ID de cuenta configurado (ordenado).
Los canales comunes que admiten este patrón incluyen:
whatsapp,telegram,discord,slack,signal,imessageirc,line,googlechat,mattermost,matrix,nextcloud-talkzalo,zalouser,nostr,feishu
Conceptos
agentId: un “cerebro” (espacio de trabajo, autenticación por agente, almacén de sesiones por agente).accountId: una instancia de cuenta de canal (por ejemplo, cuenta de WhatsApp"personal"frente a"biz").binding: enruta mensajes entrantes a unagentIdpor(channel, accountId, peer)y opcionalmente IDs de guild/equipo.- Los chats directos se colapsan en
agent:<agentId>:<mainKey>(“main” por agente;session.mainKey).
Ejemplos de plataforma
Bots de Discord por agente
Bots de Discord por agente
Cada cuenta de bot de Discord se asigna a un
accountId único. Vincula cada cuenta a un agente y mantén listas de permitidos por bot.- Invita a cada bot al servidor y habilita Message Content Intent.
- Los tokens viven en
channels.discord.accounts.<id>.token(la cuenta predeterminada puede usarDISCORD_BOT_TOKEN).
Bots de Telegram por agente
Bots de Telegram por agente
- Crea un bot por agente con BotFather y copia cada token.
- Los tokens viven en
channels.telegram.accounts.<id>.botToken(la cuenta predeterminada puede usarTELEGRAM_BOT_TOKEN).
Números de WhatsApp por agente
Números de WhatsApp por agente
Vincula cada cuenta antes de iniciar el Gateway:
~/.openclaw/openclaw.json (JSON5):Patrones comunes
- WhatsApp diario + trabajo profundo en Telegram
- Mismo canal, un par a Opus
- Agente familiar vinculado a un grupo de WhatsApp
Divide por canal: enruta WhatsApp a un agente rápido de uso diario y Telegram a un agente Opus.Notas:
- Si tienes varias cuentas para un canal, añade
accountIdal enlace (por ejemplo,{ channel: "whatsapp", accountId: "personal" }). - Para enrutar un solo DM/grupo a Opus mientras mantienes el resto en chat, añade un enlace
match.peerpara ese par; las coincidencias de pares siempre prevalecen sobre las reglas de todo el canal.
Configuración de sandbox y herramientas por agente
Cada agente puede tener su propio sandbox y restricciones de herramientas:setupCommand vive bajo sandbox.docker y se ejecuta una vez al crear el contenedor. Las anulaciones sandbox.docker.* por agente se ignoran cuando el ámbito resuelto es "shared".- Aislamiento de seguridad: restringe herramientas para agentes no confiables.
- Control de recursos: ejecuta agentes específicos en sandbox mientras mantienes otros en el host.
- Políticas flexibles: permisos diferentes por agente.
tools.elevated es global y se basa en el remitente; no es configurable por agente. Si necesitas límites por agente, usa agents.list[].tools para denegar exec. Para dirigir grupos, usa agents.list[].groupChat.mentionPatterns para que las @menciones se asignen claramente al agente previsto.Relacionado
- Agentes ACP — ejecución de arneses de programación externos
- Enrutamiento de canales — cómo se enrutan los mensajes a los agentes
- Presencia — presencia y disponibilidad del agente
- Sesión — aislamiento y enrutamiento de sesiones
- Subagentes — inicio de ejecuciones de agentes en segundo plano