Un bot, muchas tareas: guía completa de Workspace x Telegram

4 min read

¿Alguna vez le pediste al asistente "ordena el diario de hoy" y terminaste viendo cómo tocaba archivos de tu proyecto de trabajo?

Eso es lo que pasa cuando los workspaces no están bien configurados. Esta guía lo deja resuelto de una vez.

Qué vas a aprender

  • Entender el flujo completo: grupo → asistente → workspace
  • Inicializar varios workspaces
  • Configurar Agents + Bindings por completo
  • Verificar que la configuración funciona de verdad

La idea general

La arquitectura objetivo es esta:

Grupo de Telegram A  →  Asistente A  →  Workspace A (solo toca estos archivos)
Grupo de Telegram B  →  Asistente B  →  Workspace B (solo toca estos archivos)
Mensaje privado      →  Asistente principal → Workspace principal

Para conseguirlo, necesitas tres pasos: crear workspaces → definir agentes → definir bindings.


Paso 1: crear los workspaces

Cada asistente necesita su propio directorio. Inicialízalos así:

openclaw setup --workspace "~/.openclaw/workspace-main"
openclaw setup --workspace "~/.openclaw/workspace-project-a"
openclaw setup --workspace "~/.openclaw/workspace-project-b"

Cada workspace recibe automáticamente los archivos necesarios, como AGENTS.md, SOUL.md e IDENTITY.md.

💡 Si el directorio aún no existe, el comando lo crea por ti. Si clonaste un workspace ya preparado desde Git, puedes saltarte la inicialización y apuntar directamente a la ruta en Config.


Paso 2: configurar Agents y Bindings

Abre Control UI → Config → Raw JSON y añade esta estructura.

Escenario A: mismo bot, distintos grupos, distintos workspaces

{
  "agents": {
    "list": [
      { "id": "main",      "name": "Principal", "workspace": "~/.openclaw/workspace-main",      "default": true },
      { "id": "project-a", "name": "Proyecto A", "workspace": "~/.openclaw/workspace-project-a" },
      { "id": "project-b", "name": "Proyecto B", "workspace": "~/.openclaw/workspace-project-b" }
    ]
  },
  "bindings": [
    { "agentId": "project-a", "match": { "channel": "telegram", "peer": { "kind": "group", "id": "-1001234567890" } } },
    { "agentId": "project-b", "match": { "channel": "telegram", "peer": { "kind": "group", "id": "-1009876543210" } } },
    { "agentId": "main",      "match": { "channel": "telegram" } }
  ],
  "channels": {
    "telegram": {
      "enabled": true,
      "botToken": "tu bot token",
      "dmPolicy": "pairing",
      "groups": { "*": { "requireMention": true } }
    }
  }
}

¿Cómo encontrar el ID del grupo?

  1. Envía cualquier mensaje en el grupo
  2. Ejecuta openclaw logs --follow y busca chat.id
  3. O reenvía el mensaje a @userinfobot

Escenario B: distintas cuentas de bot, distintos workspaces

Si tienes varios bot tokens, cada bot puede usar su propio asistente y workspace:

{
  "agents": {
    "list": [
      { "id": "main",   "name": "Bot principal", "workspace": "~/.openclaw/workspace-main",   "default": true },
      { "id": "alerts", "name": "Bot alertas",   "workspace": "~/.openclaw/workspace-alerts" }
    ]
  },
  "bindings": [
    { "agentId": "main",   "match": { "channel": "telegram", "accountId": "default" } },
    { "agentId": "alerts", "match": { "channel": "telegram", "accountId": "alerts" } }
  ],
  "channels": {
    "telegram": {
      "enabled": true,
      "accounts": {
        "default": { "botToken": "123456:ABC...", "dmPolicy": "pairing" },
        "alerts":  { "botToken": "987654:XYZ...", "dmPolicy": "allowlist", "allowFrom": ["tg:tuTelegramId"] }
      }
    }
  }
}

⚠️ Si usas varias cuentas, no dejes botToken en el nivel superior. Todo debe ir dentro de accounts.


Paso 3: guardar y verificar

Desde la Web UI: pulsa Save / Apply en la página Config.

Si editas el archivo directamente: guarda ~/.openclaw/openclaw.json. Normalmente el Gateway recarga en caliente, pero si no estás seguro, reinícialo:

openclaw gateway

Cómo verificar

  • Envía un mensaje en cada grupo de Telegram y confirma que responde el asistente correcto
  • Ejecuta openclaw doctor para una revisión rápida

Puntos clave

Objetivo Cómo hacerlo
Crear un workspace nuevo openclaw setup --workspace "ruta"
Grupo distinto → workspace distinto Usa peer: { kind: "group", id: "groupId" } en bindings
Bot distinto → workspace distinto Usa channels.telegram.accounts con accountId en bindings
Parece que Bindings no funciona Pon primero las reglas específicas; el matching es por primera coincidencia

Lecturas relacionadas