Salix

Loops

Met een Loop doet een agent 24/7 achtergrondwerk: een inbox, een repository of een feed in de gaten houden, en in actie komen als er iets verandert. Een Loop heeft geen sandbox nodig die altijd aanstaat, en wekt de hoofdlus van de agent alleen als het moet.

Hoe een Loop draait

  1. De agent schrijft de Loop als een programma in C.
  2. Spinfoam, de server-side eBPF-runtime van Salix, compileert het programma naar eBPF.
  3. Salix plant de Loop in op het cluster, naast zijn agent.

De JIT-compiler van Spinfoam is formeel geverifieerd en genereert geheugenveilige code. Een Loop gebruikt een paar tot enkele tientallen kilobytes geheugen, dus een agent kan Loops laten draaien zo lang als hij ze nodig heeft.

Beslissingen zonder groot model

Een Loop kan snelle beslismodellen aanroepen, zoals Jev. Daarmee classificeert een Loop externe data en status (bijvoorbeeld of een nieuwe e-mail jou nodig heeft) zonder een groot taalmodel aan te roepen.

Vindt een Loop iets waarvoor de agent nodig is, dan stuurt hij de agent een melding. Pas dan draait de hoofdlus van de agent, en pas dan gebruikt die modeltokens.

Wat een Loop kan

Een Loop kan alleen een vaste lijst met mogelijkheden aanroepen: leestools, apparaat- en omgevingstools, webverzoeken, je gekoppelde apps en een melding aan zijn agent. Een Loop handelt met de bevoegdheden van de persoon die hem heeft gemaakt, en niets meer.

  • Events: andere systemen kunnen events naar een Loop sturen via de API of via een geheime webhook-URL voor die Loop.
  • Status: een Loop slaat een checkpoint op, en krijgt die terug als hij opnieuw start.
  • Limieten: een Loop kan zijn agent een beperkt aantal keer per tien minuten wekken. Een Loop die een uur lang op die limiet blijft, wordt gepauzeerd.
  • Storingen: na een fout start Salix de Loop opnieuw vanaf zijn checkpoint, hoogstens drie keer per uur. Daarna stopt de Loop en laat hij het zijn agent weten.