Skip to content

Enrutamiento Multi-Agente

Triggerfish soporta enrutar diferentes canales, cuentas o contactos a agentes aislados separados, cada uno con su propio workspace, sesiones, personalidad y techo de clasificacion.

Por que Multiples Agentes?

Un solo agente con una sola personalidad no siempre es suficiente. Puede necesitar:

  • Un asistente personal en WhatsApp que maneje calendario, recordatorios y mensajes familiares.
  • Un asistente de trabajo en Slack que administre tickets de Jira, PRs de GitHub y revisiones de codigo.
  • Un agente de soporte en Discord que responda preguntas de la comunidad con un tono diferente y acceso limitado.

El enrutamiento multi-agente le permite ejecutar todos estos simultaneamente desde una sola instalacion de Triggerfish.

Como Funciona

Enrutamiento multi-agente: canales entrantes enrutados a traves de AgentRouter a workspaces de agentes aislados

El AgentRouter examina cada mensaje entrante y lo mapea a un agente basado en reglas de enrutamiento configurables. Si ninguna regla coincide, los mensajes van a un agente predeterminado.

Reglas de Enrutamiento

Los mensajes pueden enrutarse por:

CriterioDescripcionEjemplo
CanalEnrutar por plataforma de mensajeriaTodos los mensajes de Slack van a "Trabajo"
CuentaEnrutar por cuenta especifica dentro de un canalEmail de trabajo vs email personal
ContactoEnrutar por identidad del remitente/parMensajes de su jefe van a "Trabajo"
DefaultFallback cuando ninguna regla coincideTodo lo demas va a "Personal"

Configuracion

Defina agentes y enrutamiento en triggerfish.yaml:

yaml
agents:
  list:
    - id: personal
      name: "Personal Assistant"
      channels: [whatsapp-personal, telegram-dm]
      tools:
        profile: "full"
      model: claude-opus-4-5
      classification_ceiling: PERSONAL

    - id: work
      name: "Work Assistant"
      channels: [slack-work, email-work]
      tools:
        profile: "coding"
        allow: [browser, github]
      model: claude-sonnet-4-5
      classification_ceiling: CONFIDENTIAL

    - id: support
      name: "Customer Support"
      channels: [discord-server]
      tools:
        profile: "messaging"
      model: claude-haiku-4-5
      classification_ceiling: PUBLIC

Cada agente especifica:

  • id -- Identificador unico para enrutamiento.
  • name -- Nombre legible para humanos.
  • channels -- Que instancias de canal maneja este agente.
  • tools -- Perfil de herramientas y listas explicitas de permitir/denegar.
  • model -- Que modelo LLM usar (puede diferir por agente).
  • classification_ceiling -- Nivel maximo de clasificacion que este agente puede alcanzar.

Identidad del Agente

Cada agente tiene su propio SPINE.md definiendo su personalidad, mision y limites. Los archivos SPINE.md viven en el directorio de workspace del agente:

~/.triggerfish/
  workspace/
    personal/
      SPINE.md          # Personalidad del asistente personal
    work/
      SPINE.md          # Personalidad del asistente de trabajo
    support/
      SPINE.md          # Personalidad del bot de soporte

Aislamiento

El enrutamiento multi-agente aplica aislamiento estricto entre agentes:

AspectoAislamiento
SesionesCada agente tiene espacio de sesiones independiente. Las sesiones nunca se comparten.
TaintEl taint se rastrea por agente, no entre agentes. El taint de trabajo no afecta sesiones personales.
SkillsLos skills se cargan por workspace. Un skill de trabajo no esta disponible para el agente personal.
SecretosLas credenciales estan aisladas por agente. El agente de soporte no puede acceder a API keys de trabajo.
WorkspacesCada agente tiene su propio workspace de sistema de archivos para ejecucion de codigo.

La comunicacion entre agentes es posible a traves de sessions_send

pero esta controlada por la capa de politicas. Un agente no puede acceder silenciosamente a los datos o sesiones de otro agente sin reglas de politica explicitas que lo permitan. :::

El enrutamiento multi-agente es para separar responsabilidades entre

canales y personas. Para agentes que necesitan colaborar en una tarea compartida, vea Equipos de Agentes. :::

Agente Predeterminado

Cuando ninguna regla de enrutamiento coincide con un mensaje entrante, este va al agente predeterminado. Puede configurar esto:

yaml
agents:
  default: personal

Si no se configura un predeterminado, se usa el primer agente de la lista como predeterminado.