Crearea SPACE: Runtime-uri sigure și eficiente pentru agenți de lungă durată
SPACE este platforma sandbox sigură și eficientă de la Perplexity, care alimentează fluxuri de lucru ale agenților de lungă durată și execuția rapidă și izolată a codului.
Pe măsură ce fluxurile de lucru ale agenților devin mai lungi și mai autonome, mediile în care operează agenții contează la fel de mult ca modelele care îi animă. Agenții trebuie să efectueze muncă reală, cum ar fi rularea de cod, editarea sistemelor de fișiere și executarea de sarcini în mai mulți pași de-a lungul a ore sau zile. Utilizatorii își doresc ca agenții să aibă acces la instrumentele și fișierele de care au nevoie pentru a duce la bun sfârșit aceste sarcini, dar trebuie, de asemenea, să aibă încredere că sistemele lor vor rămâne sigure chiar și dacă agenții sunt compromițați. Un sandbox este ceea ce face toate acestea posibile: un mediu izolat în care un agent poate opera liber, în timp ce gazda, ceilalți chiriași și credențialele sensibile rămân protejate.
Abordările tradiționale bazate pe containere pentru sandbox nu sunt concepute pentru aceste sarcini. Ele presupun, de obicei, sarcini de scurtă durată, fără stare (stateless) și au nucleul ca punct unic de eșec. În schimb, sesiunile agenților sunt de lungă durată și cu stare (stateful): un agent acumulează ore de context, un sistem de fișiere de lucru și procese în execuție care nu pot fi pur și simplu aruncate și reconstruite de la zero. Mai mult, sarcina de lucru din interior ar trebui să nu fie de încredere în mod implicit, ceea ce necesită măsuri de securitate mai puternice. Sesiunile de lungă durată ale agenților au nevoie de un substrat care să poată izola un oaspete ostil, să-i păstreze starea și să poată fi operat în continuare la scară largă.
Principala provocare în ingineria sandbox provine din tensiunea care apare adesea între securitate, funcționalitate și eficiență. De exemplu:
Acordarea unui acces mai larg îi permite unui agent să realizeze mai multe, dar expune o parte mai mare a sistemului la o sarcină de lucru în care nu aveți încredere.
Partajarea mai multor elemente între sandbox-uri face ca crearea să fie mai rapidă, dar lărgește suprafața de atac.
Crearea de instantanee (snapshot) mai frecvent îmbunătățește recuperarea și activează funcții precum revenirea (rollback), dar necesită timp și spațiu de stocare.
Sandbox-urile pentru agenți, cum cele necesare pentru a rula cod, a utiliza Agent Skills sau a efectua conducte Search as Code în interogările Computer, au nevoie de toate cele trei. Am lucrat din greu în ultimele luni pentru a proiecta următoarea generație de infrastructură pentru agenți care alimentează produsele noastre. Astăzi introducem SPACE (Sandboxed Platform for Agentic Code Execution): o platformă sandbox construită pentru fluxuri de lucru ale agenților, care este sigură, fiabilă și eficientă la scară largă. Luna trecută, am început implementarea SPACE ca strat sandbox care alimentează Perplexity Computer. În ultima săptămână, a susținut în siguranță milioane de creări de sandbox-uri și zeci de milioane de reconectări, cu timpi de pornire de 3-5 ori mai rapizi decât soluția noastră anterioară.
Acest articol prezintă deciziile arhitecturale și de design din spatele SPACE. Începând de astăzi, 100% din sesiunile Computer rulează acum pe SPACE. Suntem încântați să implementăm această platformă pe și mai multe suprafețe pentru a oferi utilizatorilor și dezvoltatorilor noștri un runtime pentru agenți de cea mai bună calitate.
Arhitectură
La un nivel înalt, sistemul este organizat în trei straturi.
Planul de control este creierul sistemului, decidând ce ar trebui să existe și unde. Acesta constă din gateway-ul API și module de gestionare a stării la nivel de cluster.
Serviciile la nivel de nod reprezintă mecanismele locale necesare pentru a executa planul planului de control. Ele dețin ciclul de viață al sandbox-ului, stocarea, rețeaua și operațiunile privilegiate din spatele acestora.
Sandbox-ul este în sine mediul de execuție izolat. Este implementat ca mașină virtuală asociată cu space-daemon: un proces de fundal în interiorul invitatului care intermediază accesul la sistemul de fișiere, procese și rețea pentru sarcina de lucru.

Plan de control
Gateway-ul API este punct de intrare. Cererile primite sunt autentificate și autorizate, apoi traduse în înregistrări ale stării dorite.
Planul de control nu are stare prin design, toate informațiile durabile fiind descărcate într-o bază de date partajată. Acesta urmărește informațiile la nivel de cluster privind sandbox-urile, cum ar fi nodul căruia îi sunt atribuite, unde rulează și dacă au fost salvate pe suport de stocare durabil. Compară în mod continuu starea dorită cu starea observată și determină convergenta celor două. Operațiunile sunt idempotente, astfel încât planul de control se poate recupera automat după orice blocare, repornire sau eșec parțial.
Servicii la nivel de nod
Serviciile la nivel de nod efectuează munca efectivă de pregătire a șabloanelor, pornire a sandbox-urilor, cablare a rețelei și rulare a serviciilor runtime de pe partea gazdă. Fiecare nod rulează un set mic de daemoni care gestionează fiecare sandbox plasat pe acesta, iar nodul este sursa de adevăr pentru stările live ale acelor sandbox-uri.
Managerul de sandbox știe ce sandbox-uri rulează, sunt întrerupte, suspendate sau oprite, împreună cu resursele lor reale. Acesta rulează fără privilegii și deleagă toată munca privilegiată către managerul de nod, singurul proces rădăcină care intermediază primitivele subiacente. Stocarea este gestionată local și durabil: instantaneele stărilor curente ale sandbox-ului sunt salvate pe nod, iar un manager de volum mută instantaneele și șabloanele către și dinspre stocarea de obiecte, după cum este necesar, pentru a permite operațiuni cross-nod. Porțile de siguranță controlează ceea ce poate accesa un sandbox: managerul de credențiale guvernează injectarea de credențiale sub autorizare per-serviciu, iar gateway-ul de rețea impune politica de ieșire a fiecărui sandbox.
Sandbox
Sandbox-ul în sine este o mașină virtuală (VM) cu propriul kernel invitat, care rulează sarcina de lucru a utilizatorului în spatele unei granițe de izolare hardware. Deoarece fiecare sandbox are propriul kernel, o sarcină de lucru compromisă nu se poate baza pe un kernel de gazdă partajat ca punct unic de eșec; chiar dacă exploatează cu succes kernelul său invitat, această compromitere este limitată la granița VM-ului sandbox-ului, mai degrabă decât să se propage prin alte sarcini de lucru.
Un daemon space rulează în interiorul fiecărei mașini virtuale, servind ca un agent ușor care reglementează fiecare acțiune sau modificare pe care platforma o efectuează în interiorul invitatului. Acesta gestionează accesul la sistemul de fișiere și managementul proceselor. De asemenea, raportează disponibilitatea invitatului și urmărește activitatea, astfel încât platforma să știe când un sandbox a devenit inactiv și poate fi pus în pauză sau recuperat. Un aspect crucial este că daemonul space nu comunică direct cu clienții, ci comunică cu gazda printr-un canal privat în interiorul VM-ului. Acest lucru menține toată interacțiunea cu invitatul pe o cale controlată și rezervă rețeaua proprie a sandbox-ului pur și simplu pentru traficul de ieșire al sarcinii de lucru.
Trei piloni: Securitate, Funcționalitate și Eficiență
În continuare, analizăm proprietățile cheie pe care SPACE trebuie să le ofere pe trei piloni: securitate, funcționalitate și eficiență. După cum s-a menționat anterior, acești trei piloni se opun unii altora. Totuși, nu putem face compromisuri în niciunul dintre ei dacă dorim să susținem agenți puternici care să se ridice la nivelul capabilităților modelelor de astăzi. Securitatea împiedică o sarcină de lucru neverificată, eventual ostilă, să duneze gazdei, altor chiriași sau secretelor unui utilizator. Funcționalitatea oferă agenților ciclul de viață bogat de care au nevoie. Eficiența face ca toate acestea să fie accesibile în condiții de memorie, disc și putere de calcul finite.
Securitate: Protejarea datelor și a sistemelor
Platformele sandbox au nevoie de o securitate puternică pentru a se asigura că codul eronat sau chiar rău intenționat rulat în interiorul sandbox-urilor nu poate provoca efecte dăunătoare în altă parte. Fără a impune un control strict al ieșirii și fără a ține secretele în afara sandbox-ului, un singur pas greșit al unui agent ar putea scurge cheile unui utilizator sau ar putea exfiltra munca.

SPACE adoptă o abordare stratificată pentru asigurarea securității sandbox-urilor. Izolarea sandbox-ului are două componente: izolarea VM-ului și izolarea procesului sistemului de operare gazdă. Ambele trebuie să fie încălcate pentru accesul între sandbox-uri. Comunicarea cu sandbox-ul este strict controlată; procesele pot comunica numai prin canale dedicate. Gateway-ul de rețea forțează tot traficul de ieșire prin el. Daemonul space este singurul canal aprobat între sandbox-ul (fără încredere) și platforma (de încredere).
Credențialele nu se află niciodată acolo unde un agent le poate fura. Magazinul de credențiale se află în afara graniței sandbox-ului și este responsabil pentru ciclul de viață al credențialelor. Acesta stochează și preia secrete printr-un backend de trezorerie conectabil, rezolvă credențialele utilizând delimitarea ierarhică, gestionează metadate cum ar fi metoda de injectare și expirarea și impune limite de rată și jurnale de audit pentru toate accesurile. Când este necesar, credențialele sunt injectate la nivelul rețelei sau completate automat de un agent browser, în loc să intre direct în sandbox.
Datele sunt protejate în repaus (at rest). SPACE acceptă BYOK (Bring Your Own Key) pentru a proteja datele stocate extern. Cheile de criptare provin de la serviciul de gestionare a cheilor al clientului și nu intră niciodată în sandbox. Dacă întreprinderea revocă cheia, datele lor devin de necitit.
Funcționalitate: Susținerea fluxurilor de lucru ale agenților
Pentru a sprijini fluxurile de lucru ale agenților, sandbox-urile au nevoie de suport extins pentru ciclul de viață. Ele trebuie create rapid și la scară largă, deoarece un agent poate porni multe deodată și nu ar trebui să aștepte ca vreunul dintre ele să pornească. Trebuie să persistă pe o durată nedeterminată, deoarece o sesiune poate dura câteva minute sau poate rula luni de zile. Trebuie să se pună în pauză curat, uneori pentru perioade lungi de timp, cum ar fi atunci când o sarcină este blocată de intervenția umană. Și trebuie să accepte bifurcarea (forking), revenirea (rollback) și recuperarea după blocare, astfel încât o sesiune să se poată ramifica, să anuleze un pas greșit sau să se reia după o defecțiune în loc să o ia de la zero.
SPACE acceptă toate cele de mai sus. Acesta modelează ciclul de viață complet al sandbox-ului ca o mașină de stări explicită, ceea ce face posibile operațiuni precum crearea, pauza, reluarea, suspendarea și restaurarea.

Instantaneele reprezintă mecanismul de bază pentru majoritatea acestor capabilități. Un planificator rulează la intervale regulate și capturează două tipuri de instantanee: instantanee de disc (copii la un moment dat ale sistemului de fișiere) și instantanee complete (puncte de control ale întregii VM întrerupte). Instantaneele de disc sunt capturate frecvent, în timp ce punctele de control complete sunt mai puțin frecvente. Totul rămâne pe nod, iar retenția scade în funcție de nivel. Aceste instantanee pot fi utilizate pentru recuperarea în sesiune; de exemplu, instantaneele de disc pot fi utilizate pentru a readuce sistemul de fișiere la o stare anterioară pentru a anula o comandă distructivă, iar punctele de control complete permit unui sandbox blocat să se reia dintr-un punct de execuție recent, în loc de un disc rece.
Atunci când un sandbox este suspendat, mașina virtuală este pusă în pauză, se face un instantaneu complet, iar artefactele din instantaneul complet sunt încărcate în stocarea de obiecte. Un rând din baza de date urmărește instantaneul și devine restaurabil numai după ce fiecare artefact a fost descărcat, astfel încât un instantaneu încărcat parțial nu poate fi niciodată reluat într-o stare coruptă. Restaurarea este inversul suspendării. Deoarece instantaneul se află în stocarea de obiecte și nu pe nodul original, orice nod poate aduce înapoi sandbox-ul. Planificatorul alege un nod, acel nod descarcă artefactele, reaplică delta sistemului de fișiere peste șablon și reia mașina virtuală din starea capturată.
Eficiență: Optimizarea timpului și a spațiului
Nu este suficient să implementăm caracteristicile de mai sus într-un vid; ele trebuie, de asemenea, să fie posibile în condiții de constrângeri stricte de resurse. Memoria și discul de pe un nod sunt finite, iar utilizatorii doresc ca agenții să funcționeze cât mai repede posibil, astfel încât operațiunile din ciclul de viață trebuie să fie ieftine atât în timp, cât și în spațiu. Nu ne putem permite să copiem o imagine completă a mașinii de fiecare dată când un sandbox este creat, pus în pauză sau ramificat.
O alegere cheie de design face acest lucru posibil: sistemul de fișiere. SPACE utilizează btrfs ca sistem de fișiere pe nod pentru stocarea sandbox-ului. Btrfs (sistemul de fișiere B-tree) combină un sistem de fișiere cu copiere la scriere (copy-on-write) cu gestionarea integrată a volumului logic. Acest lucru are mai multe beneficii:
Copiile Reflink sunt rapide, deoarece partajați extensiile subiacente, astfel încât trebuie copiate doar metadatele.
Instantaneele sunt atomice și rapide, deoarece creați pur și simplu o nouă rădăcină.
Este nevoie de un spațiu de stocare minim, deoarece stocați doar ceea ce s-a schimbat.
Drept urmare, sandbox-urile pot fi create și restaurate rapid. În loc să creăm un sandbox de la zero de fiecare dată, păstrăm un grup de rezerve (warm pool) de pod-uri care au deja șabloane comune materializate pe disc și satisfacem o cerere legând-o de un pod al cărui șablon se potrivește deja. Oferirea propriului sistem de fișiere rădăcină care poate fi scris acelui sandbox este apoi o clonă de tip copy-on-write, mai degrabă decât o copie completă. Atunci când niciun pod cald nu se potrivește, materializăm șablonul la cerere; comasăm cererile concurente pentru aceeași imagine într-o singură descărcare, astfel încât o creștere bruscă de cereri identice să nu se transforme într-o creștere bruscă de muncă identică.
Rezultatul este un runtime sandbox care este în același timp puternic, ușor și extrem de rapid. Când am lansat SPACE, l-am rulat alături de furnizorul nostru anterior de sandbox pe același trafic de producție. Pe parcursul săptămânii de lansare, SPACE a creat sandbox-uri de trei până la cinci ori mai repede în întreaga distribuție. Mai exact, latența mediană de creare a scăzut de la 185 milisecunde la 60 milisecunde (o îmbunătățire de 3,1x), iar latența la percentila 90 a scăzut de la 447 milisecunde la 89 milisecunde (o îmbunătățire de 5,0x). Am observat îmbunătățiri de ordin de mărime similare în cadrul altor indicatori de performanță și utilizare a resurselor.

De asemenea, face ușor să se facă instantanee de disc rulante, deoarece acestea sunt rapide, eficiente din punct de vedere al spațiului și nu necesită punerea în pauză a sandbox-ului. În plus, stocarea delta eficientă reduce spațiul necesar pentru stocarea acestor instantanee.
Concluzie
Atunci când proiectăm sisteme complexe, este tentant să alegem un singur obiectiv de optimizat în mod izolat. Dar dezvoltatorii de agenți de frontieră cer în egală măsură securitate, funcționalitate și eficiență. Cu SPACE, ne-am propus să obținem o îmbunătățire Pareto pe toți cei trei piloni.
Fiecare alegere individuală de design poate servi mai multor obiective simultan, făcând posibil acest echilibru delicat. Mașinile virtuale per-sandbox oferă fiecărei sarcini de lucru propriul kernel, consolidând securitatea printr-o izolare puternică și oferind în același timp granița curată pentru punctele de control pe care se bazează instantaneele. Btrfs permite implementarea eficientă a instantaneelor, a bifurcației (forking) și a altor operațiuni esențiale pentru runtime-urile pentru agenți. Daemonul space menține toată interacțiunea cu invitatul pe o cale controlată pe partea gazdă, sigilând granița dintre invitat și gazdă, menținând în același timp libertatea de manevră a agenților. Gateway-ul de rețea central mediază ieșirea și injectarea de credențiale fără a expune vreodată secrete invitatului.
Rezultatul acestor decizii de design și al altora este o platformă care permite orchestrarea agenților în lumea reală la scară largă. SPACE oferă substratul pe care agenții cu stare și de lungă durată pot aborda în siguranță o muncă de o complexitate sau durată arbitrară, fără a sacrifica performanța sau securitatea.
Astăzi, SPACE alimentează deja milioane de sesiuni Perplexity Computer. Intenționăm ca SPACE să servească drept strat unificat pentru aprovizionarea și controlul sandbox-urilor în oricecadru: de la micro-VM-uri Linux la oaspeți Windows și până la propria mașină locală a utilizatorului. Lucrăm intens la introducerea SPACE în aceste noi medii, astfel încât dezvoltatorii să poată livra produse AI care funcționează oriunde lucrează utilizatorii.
Dacă vreți cu ardoare să modelați stratul de calcul care stimulează agenții de frontieră de mâine, vă invităm să vă alăturați echipei noastre.