Tvorba SPACE: Bezpečné a efektivne runtime pre dlhodobo bežiace agenty

SPACE je bezpečná a efektivna platforma sandboxov od spoločnosti Perplexity, ktorá poháňa dlhodobo bežiace pracovné postupy agentov a rýchle, izolované spúšťanie kódu.

AutoriPerplexity Engineering

S tým, ako sa pracovné postupy AI agentov predlžujú a stávajú sa autonómnejšími, prostredie, v ktorom AI agenti fungujú, je rovnako dôležité ako modely, ktoré ich poháňajú. Agenti musia vykonávať skutočnú prácu, ako je spúšťanie kódu, úprava súborových systémov a vykonávanie viackrokových úloh trvajúcich hodiny alebo dni. Používatelia chcú, aby agenti mali prístup k nástrojom a súborom, ktoré potrebujú na vykonanie týchto úloh, ale zároveň potrebujú dôverovať, že ich systémy zostanú v bezpečí, aj keby boli agenti kompromitovaní. Sandbox je to, čo toto všetko umožňuje: izolované prostredie, v ktorom môže agent pracovať slobodne, zatiaľ čo hostiteľ, ostatní nájomníci a citlivé poverenia zostávajú chránené.

Tradičné prístupy k sandboxom založené na kontajneroch nie sú pre tieto úlohy navrhnuté. Zvyčajne predpokladajú krátkodobé úlohy bez uchovávania stavu a majú jadro ako jeden bod zlyhania. Naproti tomu relácie agentov majú dlhú životnosť a uchovávajú stav: agent hromadí hodiny kontextu, pracovný súborový systém a spustené procesy, ktoré sa nedajú jednoducho vyhodiť a zrekonštruovať od nuly. Okrem toho by pracovná záťaž vo vnútri mala byť predvolene nedôveryhodná, čo si vyžaduje silnejšie bezpečnostné opatrenia. Dlhotrvajúce relácie agentov potrebujú základ, ktorý dokáže izolovať nepriateľského hosťa, zachovať jeho stav a stále fungovať vo veľkom.

Hlavná výzva pri navrhovaní sandboxov vyplýva z napätia, ktoré často vzniká medzi bezpečnosťou, funkčnosťou a efektivitou. Napríklad:

Poskytnutie širšieho prístupu umožňuje agentovi dosiahnuť viac, ale vystavuje väčšiu časť systému pracovnej záťaži, ktorej nedôverujete.

Zdieľanie viacerých vecí medzi sandboxmi urýchľuje vytváranie, ale rozširuje povrch útoku.

Častejšie vytváranie snímok zlepšuje obnovu a umožňuje funkcie, ako je vrátenie zmien, ale vyžaduje si čas a úložný Priestor.

Agentove sandy, aké sú potrebné na spúšťanie kódu, používanie Agent Skills alebo realizáciu kanálov Search as Code v dotazoch Computer, vyžadujú všetky tri. Za posledných niekoľko mesiacov sme tvrdo pracovali na vývoji novej generácie infraštruktúry pre agentov, ktorá poháňa naše produkty. Dnes predstavujeme systém SPACE (Sandboxed Platform for Agentic Code Execution): platformu sandboxov vytvorenú pre pracovné postupy agentov, ktorá je bezpečná, spoľahlivá a efektívna vo veľkom meradle. Minulý mesiac sme začali uvádzať SPACE ako vrstvu sandboxu poháňajúcu systém Perplexity Computer. Za posledný týždeň bezpečne podporil milióny vytvorení sandboxov a desiatky miliónov opätovných pripojení s časmi spustenia, ktoré sú 3- až 5-krát rýchlejšie ako naše predchádzajúce riešenie.

Tento článok predstavuje architektonické rozhodnutia a rozhodnutia o dizajne za systémom SPACE. K dnešnému dňu 100 % relácií Computer teraz beží na systéme SPACE. Sme nadšení, že môžeme nasadiť túto platformu naprieč ešte väčším počtom povrchov, abychom našim používateľom a vývojárom poskytli špičkový runtime pre agentov.

Architektúra

Na vysokej úrovni je systém organizovaný do troch vrstiev.

Riadidlá (control plane) predstavujú mozog systému, ktorý rozhoduje o tom, čo má existovať a kde. Skladajú sa z brány API a modulov správy stavu na úrovni klastra.

Služby lokálne na uzle predstavujú lokálny mechanizmus potrebný na vykonanie plánu riadiacej roviny. Zodpovedajú za životný cyklus sandboxu, úložisko, sieťové prepojenie a privilegované operácie, ktoré sú za nimi.

Sandbox je samotné izolované prostredie na vykonávanie. Je implementovaný ako virtuálny stroj spárovaný s démonom space: procesom na pozadí vnútri hosťa, ktorý sprostredkováva prístup k súborovému systému, procesom a sieti pre pracovnú záťaž.

Architektúra systému SPACE je rozdelená do troch vrstiev: bezštatútna riadiaca rovina; služby lokálne na uzle, ktoré spravujú životný cyklus sandboxu, úložisko a bezpečnostné brány; a samotný sandbox.

Riadiaca rovina

Brána API je vstupným bodom. Prichádzajúce požiadavky sú overené a autorizované a potom preložené do záznamov o požadovanom stave.

Riadiaca rovina je zo svojej podstaty bezštatútna, pričom všetky trvalé informácie sú presunuté do zdieľanej databázy. Sleduje informácie na úrovni klastra o sandboxoch, ako napríklad to, ktorému uzlu sú priradené, kde bežia a či boli zálohované do trvalého úložiska. Neustále porovnáva požadovaný stav so zisteným stavom a tlačí oba smery k zblíženiu. Operácie sú idempotentné, takže riadiaca rovina sa dokáže automaticky zotaviť po akomkoľvek zlyhaní, reštarte alebo čiastočnom výpadku.

Služby lokálne na uzle

Služby lokálne na uzle vykonávajú skutočnú prácu spojenú s prípravou šablón, spúšťaním sandboxov, prepojovaním siete a spúšťaním runtime služieb na strane hostiteľa. Každý uzol spúšťa malú sadu démonov, ktorí spravujú každý sandbox umiestnený na ňom, pričom uzol je zdrojom pravdy pre živé stavy týchto sandboxov.

Správca sandboxov vie, ktoré sandy bežia, sú pozastavené, suspendované alebo zastavené, spolu s ich skutočnými zdrojmi. Beží bez privilégií a všetku privilegovanú prácu deleguje na správcu uzla, jediný koreňový proces, ktorý sprostredkováva základné primitíva. Úložisko je spravované lokálne a trvalo: snímky aktuálnych stavov sandboxu sa ukladajú na uzle a správca zväzkov presúva snímky a šablóny do a z objektového úložiska podľa potreby, aby umožnil operácie medzi uzlami. Bezpečnostné brány chránia to, čo môže sandbox dosiahnuť: správca poverení riadi vstrekovanie poverení na základe autorizácie pre každú službu a sieťová brána presadzuje výstupné pravidlá každého sandboxu.

Sandbox

Samotný sandbox je virtuálny stroj (VM) s vlastným jadrom hosťa, ktorý spúšťa pracovnú záťaž používateľa za hranicou hardvérovej izolácie. Pretože každý sandbox má svoje vlastné jadro, kompromitovaná pracovná záťaž sa nemôže spoliehať na zdieľané jadro hostiteľa ako na jediný bod zlyhania; aj keď úspešne zneužije svoje jadro hosťa, toto narušenie zostane obmedzené na hranicu virtuálneho stroja sandboxu namiesto toho, aby sa šírilo naprieč inými pracovnými zaťaženiami.

Démon space beží vo vnútri každého virtuálneho stroja a slúži ako ľahký agent, ktorý reguluje každú akciu alebo úpravu, ktorú platforma vykonáva vo vnútri hosťa. Zabezpečuje prístup k súborovému systému a správu procesov. Taktiež hlási pripravenosť hosťa a sleduje aktivitu, takže platforma vie, kedy sa sandbox stal nečinným a môže byť pozastavený alebo vrátený späť. Je dôležité poznamenať, že démon space nekomunikuje s klientmi priamo, ale komunikuje s hostiteľom prostredníctvom súkromného kanála vo vnútri virtuálneho stroja. Tým sa udržiava všetka interakcia s hosťom na kontrolovanej ceste a vlastná sieť sandboxu sa vyhradzuje výlučne pre odchádzajúcu premávku pracovnej záťaže.

Tri piliere: Bezpečnosť, funkčnosť a efektivita

Ďalej sa ponoríme do kľúčových vlastností, ktoré musí systém SPACE poskytnúť v rámci troch pilierov: bezpečnosť, funkčnosť a efektivita. Ako už bolo spomenuté, tieto tri zložky pôsobia proti sebe. Nemôžeme však robiť kompromisy ani v jednej z nich, ak chceme podporovať výkonných agentov, ktorí zodpovedajú dnešným schopnostiam modelov. Bezpečnosť bráni nedôveryhodnej, potenciálne nepriateľskej pracovnej záťaži v poškodení hostiteľa, ostatných nájomníkov alebo tajomstiev používateľa. Funkčnosť poskytuje agentom bohatý životný cyklus, ktorý potrebujú. Efektivita robí toto všetko dostupným pri obmedzenej pamäti, disku a výpočtovom výkone.

Bezpečnosť: Ochrana údajov a systémov

Platformy sandboxov potrebujú silnú bezpečnosť, aby sa zabezpečilo, že chybný alebo dokonca škodlivý kód spustený v sandboxoch nemôže spôsobiť škodlivé účinky inde. Bez presadzovania prísnej kontroly výstupov a udržiavania tajomstiev mimo sandboxu by jediný chybný krok agenta mohol viesť k úniku kľúčov používateľa alebo exfiltrácii práce.

SPACE presadzuje vrstvenú bezpečnosť kombináciou izolácie na úrovni virtuálneho stroja a hostiteľa s prísne kontrolovanými komunikačnými kanálmi, správou poverení a šifrovaním.

SPACE zaujíma vrstvený prístup k zabezpečeniu bezpečnosti pre sandboxoch. Izolacija sandboxu má dve zložky: izoláciu virtuálneho stroja a izoláciu procesov operačného systému hostiteľa. Na získanie prístupu naprieč sandboxmi je nutné prelomiť obe. Komunikácia so sandboxom je prísne kontrolovaná; procesy môžu komunikovať iba prostredníctvom vyhradených kanálov. Sieťová brána vynucuje všetok výstup cez seba. Démon space je jediným schváleným kanálom medzi (nedôveryhodným) sandboxom a (dôveryhodnou) platformou.

Poverenia sa nikdy nenachádzajú tam, kde by ich agent mohol ukradnúť. Úložisko poverení sa nachádza mimo hraníc sandboxu a zodpovedá za životný cyklus poverení. Ukladá a získava tajomstvá prostredníctvom zásuvného backendu trezoru, rieši poverenia pomocou hierarchického rozsahu, spravuje metadáta, ako sú metóda vstrekovania a platnosť, a presadzuje obmedzenia rýchlosti a protokolovanie auditov pri všetkých prístupoch. V prípade potreby sa poverenia vstrekujú na sieťovej vrstve alebo sa automaticky dopĺňajú agentom prehliadača namiesto priameho vstupu do sandboxu.

Údaje sú chránené v stave pokojového uloženia (at rest). SPACE podporuje funkciu BYOK (Bring Your Own Key) na ochranu externe uložených údajov. Šifrovacie kľúče pochádzajú zo služby správy kľúčov zákazníka a nikdy nevstúpia do sandboxu. Ak podnik kľúč odvolá, jeho údaje sa stanú nečitateľnými.

Funkčnosť: Podpora pracovných postupov agentov

Na podporu pracovných postupov agentov vyžadujú sandy podporu bohatého životného cyklu. Musia byť vytvorené rýchlo a vo veľkom meradle, pretože agent ich môže spustiť veľa naraz a nemal by čakať na spustenie žiadneho z nich. Musia pretrvávať po neurčitú dobu, pretože relácia môže trvať niekoľko minút alebo bežať mesiace. Musia sa dať čisto pozastaviť, niekedy na dlhú dobu, napríklad keď je úloha zablokovaná ľudským vstupom. A musia podporovať vetvenie, vrátenie zmien a obnovu po zlyhaní, takže relácia sa môže vetviť, vrátiť zlý krok alebo pokračovať po poruche namiesto začatia odznova.

SPACE podporuje všetky vyššie uvedené funkcie. Modeluje celý životný cyklus sandboxu ako explicitný stavový automat, čo je to, čo umožňuje operácie ako vytvorenie, pozastavenie, obnovenie, suspendovanie a obnovenie.

Táto základná podmožnosť stavov a prechodov medzi stavmi sandboxu umožňuje podporu bohatého životného cyklu.

Snímky sú mechanizmom, ktorý stojí za väčšinou týchto funkcií. Plánovač tiká v pravidelných intervaloch a zachytáva dva typy snímok: diskové snímky (kópie súborového systému k danému času) a úplné snímky (kontrolné body celého pozastaveného virtuálneho stroja). Diskové snímky sa zachytávajú často, zatiaľ čo úplné kontrolné body menej často. Všetko zostáva na uzle a uchovávanie klesá podľa úrovne. Tieto snímky je možné použiť na obnovu v rámci relácie; napríklad diskové snímky sa dajú použiť na vrátenie súborového systému späť, aby sa zrušil deštruktívny príkaz, a úplné kontrolné body umožňujú zlyhanému sandboxu pokračovať v nedávnom spustenej bode namiesto studeného disku.

Keď je sandbox suspendovaný, virtuálny stroj sa pozastaví, urobí sa úplná snímka a artefakty z úplnej snímky sa odovzdajú do objektového úložiska. Riadok databázy sleduje snímku a stáva sa obnoviteľným až po tom, čo dorazil každý artefakt, takže čiastočne odovzdaná snímka sa nikdy nedá obnoviť do poškodeného stavu. Obnovenie je opakom suspendovania. Pretože snímka sa nachádza v objektovom úložisku namiesto pôvodného uzla, akýkoľvek uzol môže sandbox vrátiť späť. Plánovač vyberie uzol, tento uzol stiahne artefakty, opätovne aplikuje rozdiel súborového systému na šablónu a obnoví virtuálny stroj z jeho zachyteného stavu.

Efektivita: Optimalizácia času a priestoru

Nestačí implementovať vyššie uvedené funkcie vo vacuume; musia byť možné aj za prísnych obmedzení zdrojov. Pamäť a disk na uzle sú konečné a používatelia chcú, aby agenti fungovali čo najrýchlejšie, takže operácie životného cyklu musia byť lacné z hľadiska času aj priestoru. Nemôžeme si dovoliť kopírovať celý obraz stroja zakaždým, keď je sandbox vytvorený, pozastavený alebo vetvený.

Tento kľúčový dizajnový výber to umožňuje: súborový systém. SPACE používa btrfs ako lokálny súborový systém uzla pre úložisko sandboxu. Btrfs (B-tree filesystem) kombinuje súborový systém s kopírovaním pri zápise (copy-on-write) s integrovanou správou logických zväzkov. To prináša niekoľko výhod:

Kópie typu Reflink sú rýchle, pretože zdieľate základné rozsahy, takže stačí skopírovať iba metadáta.

Snímky sú atomické a rýchle, pretože stačí vytvoriť nový koreň.

Vyžaduje sa minimálne úložisko, pretože ukladáte iba to, čo sa zmenilo.

Výsledkom je, že sandy sa dajú vytvárať a obnovovať rýchlo. Namiesto vytvárania sandboxu od nuly zakaždým udržiavame teplý bazén (warm pool) podov, ktoré už majú bežné šablóny zhmotnené na disku, a uspokojujeme požiadavku jej naviazaním na pod, ktorého šablóna už zodpovedá. Poskytnutie vlastného zapisovateľného koreňového súborového systému danému sandboxu je potom klonom typu copy-on-write namiesto úplnej kópie. Keď žiadny teplý pod nevyhovuje, zhmotníme šablónu na požiadanie; súbežné požiadavky na rovnaký obraz zlúčime do jedného siahnutia, takže náraz rovnakých požiadaviek sa nezmení na náraz rovnakej práce.

Výsledkom je runtime sandboxu, ktorý je naraz výkonný, ľahký a bleskovo rýchly. Keď sme uviedli SPACE na trh, spustili sme ho spolu s naším predchádzajúcim poskytovateľom sandboxu na tej istej produkčnej premávke. Počas uvádzacieho týždňa vytváral SPACE sandy tri až päťkrát rýchlejšie v celej distribúcii. Konkrétne medián latencie vytvorenia klesol zo 185 milisekúnd na 60 milisekúnd (3,1-násobné zlepšenie) a 90. percentil latencie klesol zo 447 milisekúnd na 89 milisekúnd (5,0-násobné zlepšenie). Podobné zlepšenia rádu radu sme zaznamenali aj pri iných ukazovateľoch výkonu a využitia zdrojov.

V priamom porovnaní je latencia vytvorenia pre sandy SPACE až 5-krát rýchlejšia ako pri našom predchádzajúcom riešení sandboxu.

Taktiež to uľahčuje vytváranie priebežných diskových snímok, pretože sú rýchle, priestorovo efektívne a nevyžadujú pozastavenie sandboxu. Efektívne ukladanie rozdielov navyše zmenšuje priestor potrebný na uloženie týchto snímok.

Záver

Pri navrhovaní zložitých systémov je lákavé zvoliť si jeden cieľ, ktorý sa má optimalizovať izolovane. Vývojári špičkových agentov však požadujú bezpečnosť, funkčnosť a efektivitu v rovnakej miere. So systémom SPACE sme sa vydali na cestu dosiahnutia Paretovho zlepšenia vo všetkých troch pilieroch.

Každá jednotlivá voľba dizajnu môže slúžiť viacerým cieľom naraz, vďaka čomu je táto jemná rovnováha možná. Virtuálne stroje pre každý sandbox poskytujú každej pracovnej záťaži vlastné jadro, čím posilňujú bezpečnosť prostredníctvom silnej izolácie a zároveň poskytujú čistú hranicu kontrolného bodu, na ktorú sa snímky spoliehajú. Btrfs umožňuje efektivnú implementáciu tvorby snímok, vetvenia a ďalších operácií nevyhnutných pre runtime agentov. Démon space udržiava všetku interakciu s hosťom na kontrolovanej ceste na strane hostiteľa, čím uzatvára hranicu medzi hosťom a hostiteľom a zároveň zachováva slobodu pohybu agentov. Centrálna sieťová brána sprostredkováva výstup a vstrekovanie poverení bez toho, aby kedykoľvek vystavila tajomstvá hosťovi.

Výsledkom týchto a ďalších rozhodnutí o dizajne je platforma, ktorá umožňuje reálnu orchestráciu agentov vo veľkom meradle. SPACE poskytuje základ, na ktorom môžu dlhodobo bežiace a stavové agenty bezpečne riešiť prácu ľubovoľnej zložitosti alebo trvania bez obetovania výkonu alebo bezpečnosti.

Dnes systém SPACE už poháňa milióny relácií Perplexity Computer. Máme v úmysle, aby SPACE slúžil ako jednotná vrstva na poskytovanie a riadenie sandboxov v akomkoľvek prostredí: od linuxových mikro-VM až po windows hostí alebo vlastný lokálny stroj používateľa. Usilovne pracujeme na presadzovaní systému SPACE do týchto nových prostredí, aby vývojári mohli dodávať AI produkty, ktoré fungujú všade tam, kde pracujú používatelia.

Ak vás svrbia prsty a chcete tvarovať výpočtovú vrstvu poháňajúcu zajtrajších špičkových agentov, pozývame vás pridať sa k nášmu tímu.