Salix
Loops
Un Loop permite que un agente trabaje en segundo plano 24/7: vigilar una bandeja de entrada, un repositorio o un feed, y actuar cuando algo cambia. Un Loop no necesita un sandbox siempre encendido, y no despierta el bucle principal del agente salvo que sea necesario.
Cómo se ejecuta un Loop
- El agente escribe el Loop como un programa en C.
- Spinfoam, el runtime eBPF de Salix en el servidor, compila el programa a eBPF.
- Salix programa el Loop en el clúster, junto a su agente.
El compilador JIT de Spinfoam está verificado formalmente y genera código seguro en memoria. Un Loop usa desde unos pocos hasta decenas de kilobytes de memoria, así que un agente puede mantener sus Loops en marcha todo el tiempo que los necesite.
Decisiones sin un modelo grande
Un Loop puede llamar a modelos de decisión rápidos, como Jev. Con ellos, un Loop clasifica datos y estados externos (por ejemplo, si un correo nuevo requiere tu atención) sin llamar a un modelo de lenguaje grande.
Cuando un Loop encuentra algo que necesita al agente, se lo notifica. Solo entonces se ejecuta el bucle principal del agente, y solo entonces gasta tokens de modelo.
Qué puede hacer un Loop
Un Loop solo puede llamar a una lista fija de capacidades: herramientas de lectura, herramientas del dispositivo y del entorno, solicitudes web, tus apps conectadas y una notificación a su agente. Un Loop actúa con los permisos de la persona que lo creó, y nada más.
- Eventos: otros sistemas pueden enviar eventos a un Loop mediante la API o mediante una URL de webhook secreta para ese Loop.
- Estado: un Loop guarda un punto de control y lo recupera cuando vuelve a empezar.
- Límites: un Loop puede despertar a su agente un número limitado de veces cada diez minutos. Un Loop que se mantiene en ese límite durante una hora se pausa.
- Fallos: después de un fallo, Salix vuelve a iniciar el Loop desde su punto de control, como máximo tres veces por hora. Después, el Loop se detiene y avisa a su agente.