Volver

10. Enrutamiento Multi-Agente y Aislamiento de Sesiones en OpenClaw

Este artículo profundiza en la arquitectura multi-agente de OpenClaw, incluyendo cómo configurar múltiples instancias de Agent, reglas de enrutamiento de mensajes, estrategias de aislamiento de sesiones y mejores prácticas para escenarios de colaboración en equipo, ayudándote a construir un sistema de asistente IA de nivel empresarial.

Aplicable a OpenClaw v2026.2 | Este artículo es adecuado para equipos o usuarios que necesitan aislar contextos.

TL;DR: Configuración multi-agente: "agents": {"instances": {"personal": {...}, "work": {...}}}. Reglas de enrutamiento: "routing": {"rules": [{"match": {"channel": "telegram"}, "agent": "personal"}]}. Aislamiento de sesiones: "sessions": {"isolation": "user"}. Modo sandbox: "sandbox": {"mode": "non-main"}. Ideal para escenarios multi-usuario, multi-proyecto y multi-propósito.

¿Por qué necesitamos múltiples Agents?

Limitaciones de un solo Agent

Escenario Problema con un solo Agent Solución multi-agente
Multi-usuario Contexto desordenado, problemas de privacidad Agent independiente por usuario
Multi-proyecto Información de proyectos mezclada Agent independiente por proyecto
Multi-propósito Un Agent con múltiples roles Agents especializados
Multi-equipo Difícil control de permisos Agents aislados por equipo
Control de costos Imposible diferenciar el consumo Facturación independiente por modelo

Escenarios de uso multi-agente

flowchart TB
    subgraph Users["Usuarios"]
        U1[Usuario A]
        U2[Usuario B]
        U3[Equipo X]
        U4[Equipo Y]
    end
    
    subgraph Router["Enrutamiento de mensajes"]
        R[Reglas de enrutamiento]
    end
    
    subgraph Agents["Instancias de Agent"]
        A1[Agent personal A]
        A2[Agent personal B]
        A3[Agent equipo X]
        A4[Agent equipo Y]
    end
    
    subgraph Models["Modelos"]
        M1[Claude Opus]
        M2[Claude Sonnet]
        M3[GPT-4o]
        M4[Haiku]
    end
    
    U1 --> R
    U2 --> R
    U3 --> R
    U4 --> R
    R --> A1
    R --> A2
    R --> A3
    R --> A4
    A1 --> M1
    A2 --> M2
    A3 --> M3
    A4 --> M4

Configuración multi-agente

Estructura básica

{
  "agents": {
    "defaults": {
      "model": "anthropic/claude-sonnet-4",
      "workspace": "~/.openclaw/workspace"
    },
    "instances": {
      "personal": {
        "model": "anthropic/claude-opus-4-6",
        "workspace": "~/.openclaw/workspaces/personal",
        "thinkingLevel": "high"
      },
      "work": {
        "model": "anthropic/claude-sonnet-4",
        "workspace": "~/.openclaw/workspaces/work",
        "skills": ["github", "jira", "confluence"]
      },
      "assistant": {
        "model": "anthropic/claude-haiku-3.5",
        "workspace": "~/.openclaw/workspaces/assistant"
      }
    }
  }
}

Opciones de configuración del Agent

Opción Descripción Ejemplo
model Modelo utilizado anthropic/claude-opus-4-6
workspace Directorio de trabajo ~/.openclaw/workspaces/personal
thinkingLevel Nivel de razonamiento high, medium, low
skills Habilidades habilitadas ["gmail", "calendar"]
sandbox Configuración del sandbox { "mode": "non-main" }
contextWindow Ventana de contexto 200000

Estructura del Workspace

~/.openclaw/
├── workspace/              # Workspace por defecto
│   ├── AGENTS.md
│   ├── SOUL.md
│   └── skills/
├── workspaces/
│   ├── personal/          # Agent personal
│   │   ├── AGENTS.md
│   │   ├── SOUL.md
│   │   └── USER.md
│   ├── work/              # Agent de trabajo
│   │   ├── AGENTS.md
│   │   └── skills/
│   └── assistant/         # Agent asistente
│       └── AGENTS.md
└── openclaw.json          # Configuración principal

Reglas de enrutamiento de mensajes

Configuración de enrutamiento

{
  "routing": {
    "rules": [
      {
        "match": {
          "channel": "telegram",
          "sender": "123456789"
        },
        "agent": "personal"
      },
      {
        "match": {
          "channel": "discord",
          "guild": "987654321"
        },
        "agent": "work"
      },
      {
        "match": {
          "session": "main"
        },
        "agent": "personal"
      }
    ],
    "default": "personal"
  }
}

Detalle de las reglas de enrutamiento

Campo de coincidencia Descripción Ejemplo
channel Tipo de canal telegram, discord, slack
sender ID del remitente 123456789
guild ID del servidor Discord 987654321
group ID del grupo -100123456789
session ID de la sesión main, telegram:user:123
pattern Coincidencia por regex ^work-

Ejemplo de enrutamiento complejo

{
  "routing": {
    "rules": [
      {
        "name": "Telegram personal",
        "match": {
          "channel": "telegram",
          "sender": ["123456789", "987654321"]
        },
        "agent": "personal"
      },
      {
        "name": "Discord de trabajo",
        "match": {
          "channel": "discord",
          "guild": "111222333"
        },
        "agent": "work"
      },
      {
        "name": "Grupo de trabajo",
        "match": {
          "channel": "telegram",
          "group": "-100111222333"
        },
        "agent": "work"
      },
      {
        "name": "Entorno de pruebas",
        "match": {
          "pattern": "^test-"
        },
        "agent": "assistant",
        "config": {
          "sandbox": { "mode": "always" }
        }
      }
    ],
    "default": "personal"
  }
}

Prioridad de enrutamiento

flowchart TB
    MSG[Mensaje entrante] --> R1{¿Coincide regla 1?}
    R1 -->|Sí| A1[Agent 1]
    R1 -->|No| R2{¿Coincide regla 2?}
    R2 -->|Sí| A2[Agent 2]
    R2 -->|No| R3{¿Coincide regla 3?}
    R3 -->|Sí| A3[Agent 3]
    R3 -->|No| D[Agent por defecto]

El enrutamiento se evalúa en orden secuencial; la primera regla que coincida será la aplicada.

Aislamiento de sesiones

Niveles de aislamiento

Nivel Descripción Caso de uso
Sin aislamiento Contexto compartido Un solo usuario, un solo propósito
Aislamiento por canal Contexto independiente por canal Acceso multicanal
Aislamiento por usuario Contexto independiente por usuario Múltiples usuarios compartidos
Aislamiento por sesión Cada sesión es independiente Aislamiento completo
Aislamiento por Agent Cada Agent es independiente Despliegue multi-agente

Configuración del aislamiento de sesiones

{
  "sessions": {
    "isolation": "user",
    "persistence": true,
    "retention": {
      "maxAge": 604800000,
      "maxSessions": 100
    }
  }
}

Detalle de la configuración de aislamiento

{
  "sessions": {
    "isolation": "user",
    "storage": {
      "type": "file",
      "path": "~/.openclaw/sessions"
    },
    "encryption": {
      "enabled": true,
      "algorithm": "aes-256-gcm"
    },
    "retention": {
      "maxAge": 604800000,
      "maxSessions": 100,
      "cleanupInterval": 86400000
    }
  }
}
Opción Descripción Valor por defecto
isolation Nivel de aislamiento user
storage.type Tipo de almacenamiento file
encryption.enabled Habilitar cifrado true
retention.maxAge Tiempo máximo de retención 7 días
retention.maxSessions Número máximo de sesiones 100

Escenarios de colaboración en equipo

Escenario uno: Equipo pequeño compartido

{
  "agents": {
    "instances": {
      "team": {
        "model": "anthropic/claude-sonnet-4",
        "workspace": "~/.openclaw/workspaces/team",
        "skills": ["github", "jira", "slack"]
      }
    }
  },
  "routing": {
    "rules": [
      {
        "match": { "channel": "slack" },
        "agent": "team"
      },
      {
        "match": { "channel": "discord" },
        "agent": "team"
      }
    ],
    "default": "team"
  }
}

Escenario dos: Aislamiento por departamento

{
  "agents": {
    "instances": {
      "engineering": {
        "model": "anthropic/claude-opus-4-6",
        "workspace": "~/.openclaw/workspaces/engineering",
        "skills": ["github", "jira", "pagerduty"],
        "sandbox": { "mode": "off" }
      },
      "marketing": {
        "model": "anthropic/claude-sonnet-4",
        "workspace": "~/.openclaw/workspaces/marketing",
        "skills": ["mailchimp", "analytics"],
        "sandbox": { "mode": "non-main" }
      },
      "support": {
        "model": "anthropic/claude-haiku-3.5",
        "workspace": "~/.openclaw/workspaces/support",
        "skills": ["zendesk", "intercom"],
        "sandbox": { "mode": "always" }
      }
    }
  },
  "routing": {
    "rules": [
      {
        "name": "Engineering Discord",
        "match": { "channel": "discord", "guild": "111111111" },
        "agent": "engineering"
      },
      {
        "name": "Marketing Slack",
        "match": { "channel": "slack", "team": "T22222222" },
        "agent": "marketing"
      },
      {
        "name": "Support Telegram",
        "match": { "channel": "telegram", "group": "-100333333333" },
        "agent": "support"
      }
    ],
    "default": "support"
  }
}

Escenario tres: SaaS multi-inquilino

{
  "agents": {
    "dynamic": true,
    "template": {
      "model": "anthropic/claude-sonnet-4",
      "workspace": "~/.openclaw/workspaces/tenants/{{tenantId}}",
      "skills": ["base"],
      "sandbox": { "mode": "always" }
    },
    "limits": {
      "maxAgents": 100,
      "maxSessionsPerAgent": 50,
      "maxTokensPerMonth": 1000000
    }
  },
  "routing": {
    "rules": [
      {
        "name": "Tenant Routing",
        "match": { "header": "X-Tenant-Id" },
        "agent": "tenant_{{tenantId}}",
        "createIfNotExists": true
      }
    ]
  }
}

Permisos y seguridad

Control de permisos del Agent

{
  "agents": {
    "instances": {
      "trusted": {
        "model": "anthropic/claude-opus-4-6",
        "sandbox": { "mode": "off" },
        "permissions": {
          "filesystem": { "read": true, "write": true },
          "network": { "outbound": true },
          "process": { "execute": true }
        }
      },
      "restricted": {
        "model": "anthropic/claude-haiku-3.5",
        "sandbox": { "mode": "always" },
        "permissions": {
          "filesystem": { 
            "read": ["~/allowed/"],
            "write": ["~/allowed/"]
          },
          "network": { 
            "outbound": ["api.example.com"]
          },
          "process": { "execute": false }
        }
      }
    }
  }
}

Modo sandbox

Modo Descripción Caso de uso
off Sin sandbox Agent de confianza
non-main Sandbox para sesiones no principales Compartido en equipo
always Siempre con sandbox Entornos no confiables

Configuración del sandbox

{
  "sandbox": {
    "mode": "non-main",
    "container": {
      "image": "openclaw/sandbox:latest",
      "timeout": 30000,
      "memory": "512m",
      "cpu": "0.5"
    },
    "allowlist": ["read", "write", "edit", "bash"],
    "denylist": ["browser", "canvas", "nodes"],
    "networkPolicy": {
      "allow": ["api.example.com"],
      "deny": ["*"]
    }
  }
}

Monitoreo y gestión

Monitoreo del estado del Agent

# Listar todas las instancias de Agent
openclaw agents list

# Ejemplo de salida:
# Name        Model                  Sessions  Status   Last Active
# personal    claude-opus-4-6        3         active   2 min ago
# work        claude-sonnet-4        5         active   5 min ago
# assistant   claude-haiku-3.5       2         idle     1 hour ago

# Ver detalles del Agent
openclaw agents show personal

# Ver reglas de enrutamiento
openclaw routing list

Gestión de sesiones

# Listar todas las sesiones
openclaw sessions list --agent personal

# Ejemplo de salida:
# Session ID              Channel    Sender      Created      Messages
# telegram:user:123       telegram   123456789   2026-02-26   42
# main                    cli        -           2026-02-25   128

# Ver detalles de la sesión
openclaw sessions show telegram:user:123

# Exportar sesión
openclaw sessions export telegram:user:123 --format json

# Eliminar sesión
openclaw sessions delete telegram:user:123

Estadísticas de uso

# Ver uso agrupado por Agent
openclaw usage --by-agent

# Ejemplo de salida:
# Agent       Tokens In    Tokens Out   Cost      Requests
# personal    125,000     45,000      $2.10     128
# work        89,000      32,000      $1.25     95
# assistant   15,000      8,000       $0.15     42

# Estadísticas por rango de fechas
openclaw usage --by-agent --from 2026-02-01 --to 2026-02-28

Mejores prácticas

1. División razonable de Agents

Dimensión Descripción Ejemplo
Propósito Dividir por función coding, research, assistant
Proyecto Dividir por proyecto project-alpha, project-beta
Equipo Dividir por equipo engineering, marketing
Modelo Dividir por modelo opus, sonnet, haiku

2. Herencia de configuración

{
  "agents": {
    "defaults": {
      "model": "anthropic/claude-sonnet-4",
      "workspace": "~/.openclaw/workspace",
      "thinkingLevel": "medium",
      "sandbox": { "mode": "non-main" }
    },
    "instances": {
      "opus": {
        "model": "anthropic/claude-opus-4-6",
        "thinkingLevel": "high"
        // Hereda workspace y sandbox de defaults
      },
      "haiku": {
        "model": "anthropic/claude-haiku-3.5",
        "thinkingLevel": "minimal"
        // Hereda las demás configuraciones de defaults
      }
    }
  }
}

3. Mínimo privilegio

{
  "agents": {
    "instances": {
      "restricted": {
        "model": "anthropic/claude-haiku-3.5",
        "sandbox": { "mode": "always" },
        "permissions": {
          "filesystem": {
            "read": ["~/allowed/read"],
            "write": ["~/allowed/write"]
          },
          "network": {
            "outbound": []
          },
          "process": {
            "execute": false
          }
        }
      }
    }
  }
}

4. Monitoreo y alertas

{
  "monitoring": {
    "alerts": [
      {
        "condition": "usage > 1000000",
        "action": "notify"
      },
      {
        "condition": "error_rate > 0.1",
        "action": "notify"
      },
      {
        "condition": "response_time > 10000",
        "action": "notify"
      }
    ],
    "webhook": "https://your-monitoring.com/webhook"
  }
}

Solución de problemas

El enrutamiento no funciona

# Ver las reglas de enrutamiento actuales
openclaw routing list

# Probar el enrutamiento
openclaw routing test --channel telegram --sender 123456789

# Ejemplo de salida:
# Matched Rule: Telegram personal
# Target Agent: personal
# Route Path: default -> rule 1 -> personal

Problemas de aislamiento de sesiones

# Verificar la configuración de aislamiento de sesiones
openclaw config get sessions.isolation

# Verificar la lista de sesiones
openclaw sessions list --all

# Restablecer el aislamiento de sesiones
openclaw sessions reset --agent personal

Problemas de permisos

# Verificar la configuración de permisos
openclaw agents permissions show personal

# Probar permisos
openclaw agents test-permission personal --action filesystem.read --path ~/test

# Ejemplo de salida:
# Permission: filesystem.read
# Path: ~/test
# Result: ALLOWED

Resumen

La arquitectura multi-agente es una funcionalidad avanzada de OpenClaw que proporciona un potente soporte para escenarios de equipo y empresariales:

  • Enrutamiento flexible: Asigna diferentes Agents según canal, usuario o proyecto
  • Aislamiento de sesiones: Protege la privacidad y evita la mezcla de contextos
  • Control de permisos: Gestión granular de permisos
  • Optimización de costos: Selecciona diferentes modelos según el propósito
  • Escalabilidad: Soporta la creación y gestión dinámica de Agents

Resumen de este artículo:

  • Se comprendió el valor y los escenarios de la arquitectura multi-agente
  • Se dominaron la configuración de Agents y las reglas de enrutamiento de mensajes
  • Se aprendió a configurar el aislamiento de sesiones
  • Se conocieron las mejores prácticas para escenarios de colaboración en equipo
  • Se dominaron el control de permisos y la gestión del monitoreo

Historial de actualizaciones:

  • 2026-02-26: Publicación inicial, basada en OpenClaw v2026.2

Navegación de la serie: