Salix
Loops
Um Loop permite que um agente trabalhe em segundo plano 24/7: acompanhar uma caixa de entrada, um repositório ou um feed, e agir quando algo muda. Um Loop não precisa de um sandbox sempre ligado e só acorda o ciclo principal do agente quando é necessário.
Como um Loop roda
- O agente escreve o Loop como um programa em C.
- O Spinfoam, o runtime eBPF do Salix no servidor, compila o programa para eBPF.
- O Salix agenda o Loop no cluster, junto ao agente dele.
O compilador JIT do Spinfoam é verificado formalmente e gera código seguro em memória. Um Loop usa de alguns poucos a dezenas de kilobytes de memória, então um agente pode manter Loops rodando pelo tempo que precisar deles.
Decisões sem um modelo grande
Um Loop pode chamar modelos de decisão rápidos, como o Jev. Com eles, um Loop classifica dados e estados externos (por exemplo, se um novo e-mail precisa de você) sem chamar um modelo de linguagem grande.
Quando um Loop encontra algo que precisa do agente, ele notifica o agente. Só então o ciclo principal do agente roda, e só então ele gasta tokens de modelo.
O que um Loop pode fazer
Um Loop só pode chamar uma lista fixa de recursos: ferramentas de leitura, ferramentas do dispositivo e do ambiente, requisições web, seus apps conectados e uma notificação para o agente dele. Um Loop age com as permissões da pessoa que o criou, e nada mais.
- Eventos: outros sistemas podem enviar eventos para um Loop pela API ou por uma URL de webhook secreta desse Loop.
- Estado: um Loop salva um checkpoint e o recupera quando começa de novo.
- Limites: um Loop pode acordar o agente dele um número limitado de vezes a cada dez minutos. Um Loop que fica nesse limite por uma hora é pausado.
- Falhas: depois de uma falha, o Salix reinicia o Loop a partir do checkpoint, no máximo três vezes por hora. Depois disso, o Loop para e avisa o agente dele.