Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

SOP Fan-In: Channel

Los mensajes entrantes en un canal de bucle de agente (Telegram, Discord, Slack y los demás canales conversacionales) pueden iniciar ejecuciones de SOP. Cuando un SOP cargado quiere eventos del canal, el orquestador eleva cada mensaje entrante a un evento de SOP (el tipo de canal y el alias opcional pasan a ser el tema del evento, el contenido del mensaje pasa a ser la carga útil) y lo despacha al motor junto con el turno normal del agente.

El lado de transporte (token del bot, usuarios permitidos, comportamiento por canal) se configura en cada canal. Esta página cubre el trigger. Los canales agent-loop no tienen un interruptor de dispatch por canal: el trigger channel del SOP es el opt-in, y el turno normal del agente siempre se ejecuta junto con cualquier ejecución de SOP que inicie.

Activador

Mensaje entrante o evento de plataforma de forge en un canal configurado (telegram, discord, slack, Git, …). En vivo: entregado por el orquestador del canal cuando el despacho SOP del canal está habilitado. El productor de forge de Git establece un tema de evento de la forma <channel>.<alias>:<event_type> y coloca event_type en la carga útil, de modo que una condition redactada filtra eventos de forge por tipo sin una segunda forma de activación.

campotipopredeterminadosignificado
aliasstring?nullAlias opcional de instancia configurada; si no se establece, coincide con todas las instancias.
channel*cadenaChannelKind valor en snake_case que nombra el tipo de canal.
conditionstring?nullExpresión opcional evaluada contra la carga útil del mensaje.

Cargar y verificar el SOP:

Definir

Redacta el SOP como se describe en Syntax, con un disparador channel. Los campos del disparador anteriores son las claves admitidas; la página recorre el archivo completo.

Validar

zeroclaw sop validate

Inspeccionar

zeroclaw sop list
zeroclaw sop show <name>

Coincidencia

channel es un valor snake_case de ChannelKind (telegram, discord, slack, …). Un trigger sin alias coincide con cualquier instancia configurada de ese tipo de canal; un trigger con un alias solo coincide con esa instancia. El tema del evento es <kind> o <kind>/<alias>. El contenido del mensaje se reenvía en la carga útil del evento SOP, disponible para una condition opcional del trigger; el contexto del paso recibe la forma acotada, saneada y enmarcada. Una condition de JSON-path como $.text == "deploy" requiere que el cuerpo del mensaje sea JSON.

Dispararlo

Carga un SOP con un desencadenador channel, luego envía un mensaje a ese canal. El desencadenador channel es la activación opcional: el orquestador solo eleva los mensajes entrantes a eventos cuando un SOP cargado quiere eventos de canal. Coloca el tipo de canal y el alias en el tema y el contenido en la carga útil, luego lo despacha. Se inicia una ejecución para cada SOP cargado cuyo channel (y alias, si está establecido) coincida y cuyo condition (si la hay) se cumpla frente al contenido. La interacción normal del agente sigue ejecutándose en paralelo con cualquier ejecución que se inicie.

El salto de fan-in se omite por completo cuando ningún SOP cargado tiene un trigger channel, por lo que los canales sin SOP originados por channel no pagan nada.

Todas las entregas de canal pasan por el adaptador de entrada SOP compartido del runtime antes de que se construya un evento. El adaptador se encarga de las comprobaciones de interés de origen, los diagnósticos necesarios de los identificadores de motor/auditoría, el límite de entradas no confiables, las marcas de tiempo de eventos y el registro de resultados de despacho. El código de canal solo proporciona el tópico y la carga útil que pertenecen al transporte. Los eventos de forge usan el mismo límite con su SOP de destino configurado, por lo que no pueden eludir la coincidencia de disparadores ni la ruta normal de seguridad y auditoría.

Si nada se inicia, confirma que un SOP cargado tiene un desencadenador channel, que el channel/alias del desencadenador coincide con la instancia en la que llegó el mensaje y que la condition coincide. Consulta la tabla de solución de problemas de la descripción general de fan-in.

Aprueba y observa

Las ejecuciones que alcanzan un punto de control se pausan como WaitingApproval. Límpialas o inspecciónalas con la CLI (zeroclaw sop list, zeroclaw sop approve) o fuera de banda mediante los endpoints de aprobación de la gateway API (GET /admin/sop/pending, POST /admin/sop/approve, POST /admin/sop/deny).

Ver también