Skip to content
Esta página fue generada y traducida con asistencia de IA. Si encuentra alguna imprecisión, no dude en ayudar a mejorarla. Editar en GitHub

Tipos de Agentes

Los agentes son las unidades de despacho centrales en OpenPR-Webhook. Cada agente define cómo manejar un evento webhook coincidente. Puedes configurar múltiples agentes en un único despliegue, y los eventos se enrutan al agente apropiado basándose en el bot_context del payload webhook.

Descripción General

TipoCaso de UsoRequiere Indicador de Característica
openclawEnviar notificaciones vía Signal/Telegram usando OpenClaw CLINo
openprxEnviar mensajes vía API Signal de OpenPRX o CLINo
webhookReenviar eventos a endpoints HTTP (Slack, Discord, etc.)No
customEjecutar comandos de shell arbitrariosNo
cliEjecutar agentes de codificación IA (codex, claude-code, opencode)Sí (cli_enabled)

Estructura de Configuración del Agente

Cada agente tiene estos campos comunes:

toml
[[agents]]
id = "unique-id"              # Unique identifier, used for matching
name = "Human-Readable Name"  # Display name, also used for matching
agent_type = "openclaw"       # One of: openclaw, openprx, webhook, custom, cli
message_template = "..."      # Optional: custom message format

Luego, dependiendo de agent_type, proporcionas el bloque de configuración específico del tipo:

  • [agents.openclaw] para agentes openclaw
  • [agents.openprx] para agentes openprx
  • [agents.webhook] para agentes webhook
  • [agents.custom] para agentes custom
  • [agents.cli] para agentes cli

Plantillas de Mensajes

El campo message_template soporta marcadores de posición que se sustituyen con valores del payload webhook:

MarcadorFuenteEjemplo
{event}payload.eventissue.updated
{title}payload.data.issue.titleFix login bug
{key}payload.data.issue.keyPROJ-42
{issue_id}payload.data.issue.id123
{reason}payload.bot_context.trigger_reasonassigned_to_bot
{actor}payload.actor.namealice
{project}payload.project.namebackend
{workspace}payload.workspace.nameIM
{state}payload.data.issue.statein_progress
{priority}payload.data.issue.priorityhigh
{url}derivadoissue/123

Plantilla predeterminada (para openclaw, openprx, webhook, custom):

[{project}] {event}: {key} {title}
{actor} | Trigger: {reason}

Lógica de Coincidencia de Agentes

Cuando llega un evento webhook con bot_context.is_bot_task = true:

  1. El servicio extrae bot_context.bot_name y bot_context.bot_agent_type
  2. Busca agentes cuyo id o name (sin distinción de mayúsculas/minúsculas) coincida con bot_name
  3. Si no hay coincidencia por nombre, recurre al primer agente cuyo agent_type coincida con bot_agent_type
  4. Si ningún agente coincide en absoluto, el evento se reconoce pero no se despacha

Ejemplo de Múltiples Agentes

toml
# Agent 1: Notification via Telegram
[[agents]]
id = "notify-tg"
name = "Telegram Notifier"
agent_type = "openclaw"
message_template = "[{project}] {event}: {key} {title}"

[agents.openclaw]
command = "/usr/local/bin/openclaw"
channel = "telegram"
target = "@my-channel"

# Agent 2: Forward to Slack
[[agents]]
id = "notify-slack"
name = "Slack Forwarder"
agent_type = "webhook"

[agents.webhook]
url = "https://hooks.slack.com/services/T.../B.../xxx"

# Agente 3: agente de codificación IA con bucle cerrado MCP
[[agents]]
id = "coder"
name = "Code Agent"
agent_type = "cli"

[agents.cli]
executor = "claude-code"
workdir = "/opt/projects/backend"
timeout_secs = 600
skip_callback_state = true  # La IA actualiza el estado vía MCP directamente

[agents.cli.env_vars]
OPENPR_API_URL = "http://localhost:3000"
OPENPR_BOT_TOKEN = "opr_xxx"

En esta configuración, OpenPR puede enrutar diferentes eventos a diferentes agentes estableciendo el campo bot_name en el payload webhook.

Próximos Pasos

Released under the Apache-2.0 License.