Tvorba SPACE: Bezpečná a efektivní běhová prostředí pro dlouhodobě běžící agenty

SPACE je zabezpečená a efektivní sandboxová platforma od Perplexity, která pohání dlouhodobě běžící pracovní postupy agentů a rychlé, izolované spouštění kódu.

AutořiPerplexity Engineering

Jak se pracovní postupy agentů prodlužují a stávají se autonomnějšími, prostředí, ve kterém AI agenti fungují, je stejně důležité jako modely, které je řídí. Agenti potřebují odvádět skutečnou práci, jako je spouštění kódu, úprava souborových systémů a provádění vícekrokových úkolů trvajících hodiny nebo dny. Uživatelé chtějí, aby agenti měli přístup k nástrojům a souborům, které potřebují k provádění těchto úkolů, ale zároveň potřebují mít jistotu, že jejich systémy zůstanou zabezpečené, i když budou agenti kompromitováni. Právě sandbox umožňuje toto všechno: izolované prostředí, kde může agent pracovat svobodně, zatímco hostitel, ostatní tenanti a citlivé přihlašovací údaje zůstávají chráněni.

Tradiční přístupy k sandboxům založené na kontejnerech pro tyto úkoly nejsou navrženy. Obvykle předpokládají krátkodobé úlohy bez uchovávání stavu a mají kernel jako jediné místo selhání. Naproti tomu relace agentů mají dlouhou životnost a stav: agent hromadí hodiny kontextu, pracovní souborový systém a spuštěné procesy, které nelze jednoduše zahodit a zrekonstruovat od základu. Pracovní zátěž uvnitř by navíc měla být ve výchozím nastavení nedůvěryhodná, což si vyžaduje silnější bezpečnostní opatření. Dlouhodobě běžíci relace agentů potřebují podkladovou vrstvu, která dokáže izolovat nepřátelského hosta, zachovat jeho stav a přesto fungovat ve velkém měřítku.

Hlavní výzva v inženýrství sandboxů pramení z napětí, které často vzniká mezi bezpečností, funkcionalitou a efektivitou. Například:

Poskytnutí širšího přístupu umožňuje agentovi dokázat více, ale vystavuje větší část systému pracovní zátěži, které nedůvěřujete.

Sdílení více prvků mezi sandboxy urychluje vytváření, ale rozšiřuje plochu útoku.

Častější vytváření snímků zlepšuje obnovení a umožňuje funkce jako vrácení změn, ale vyžaduje čas a úložný Prostor.

Agentní sandboxy, jako jsou ty, které jsou vyžadovány ke spouštění kódu, používání Agent Skills nebo provádění Search as Code kanálů v dotazech počítače, potřebují všechny tři. Během posledních několika měsíců jsme usilovně pracovali na vývoji další generace agentní infrastruktury, která pohání naše produkty. Dnes představujeme SPACE (Sandboxed Platform for Agentic Code Execution): platformu sandboxů vytvořenou pro pracovní postupy agentů, která je zabezpečená, spolehlivá a efektivní ve velkém měřítku. Minulý měsíc jsme začali zavádět SPACE jako sandboxovou vrstvu pohánějící Perplexity Computer. Za poslední týden bezpečně podpořila miliony vytvoření sandboxů a desítky milionů znovupřipojení s dobami spuštění, které jsou 3–5krát rychlejší než naše předchozí řešení.

Tento článek představuje architektonická rozhodnutí a rozhodnutí o návrhu, která stojí za systémem SPACE. Od dnešního dne běží 100 % relací počítače na SPACE. Jsme nadšeni, že tuto platformu nasadíme napříč ještě většími plochami, abychom našim uživatelům a vývojářům poskytli špičkový agentní běhové prostředí.

Architektura

Na vysoké úrovni je systém organizován do tří vrstev.

Řídicí rovina je mozkem systému, který rozhoduje o tom, co a kde má existovat. Skládá se z brány API a modulů pro správu stavu na úrovni clusteru.

Služby lokální pro uzly jsou místní mechanismy nutné k provedení plánu řídicí roviny. Mají na starosti životní cyklus sandboxu, úložiště, síťování a privilegované operace za nimi.

Samotný sandbox je izolované prováděcí prostředí. Je implementován jako virtuální počítač spárovaný s démonem space: procesem na pozadí v hostu, který zprostředkovává přístup k souborovému systému, procesům a síti pro pracovní zátěž.

Architektura SPACE je rozdělena do tří vrstev: bezstavová řídicí rovina; služby lokální pro uzly, které spravují životní cyklus sandboxu, úložiště a bezpečnostní brány; a samotný sandbox.

Řídicí rovina

Brána API je vstupním bodem. Příchozí požadavky jsou ověřeny a autorizovány a poté převedeny na záznamy požadovaného stavu.

Řídicí rovina je záměrně bezstavová, přičemž všechny trvanlivé informace jsou přesunuty do sdílené databáze. Sleduje informace o sandboxech na úrovni clusteru, jako je uzel, ke kterému jsou přiřazeny, kde běží a zda byly zálohovány do trvanlivého úložiště. Neustále porovnává požadovaný stav se zjištěným stavem a tlačí obojí ke konvergenci. Operace jsou idempotentní, takže řídicí rovina se může automaticky zotavit po jakémkoli pádu, restartu nebo částečném selhání.

Služby lokální pro uzly

Služby lokální pro uzly provádějí skutečnou práci s přípravou šablon, spouštěním sandboxů, zapojováním sítě a spouštěním běhových služeb na straně hostitele. Každý uzel spouští malou sadu démonů, kteří spravují každý sandbox umístěný na něm, a uzel je zdrojem pravdy pro živé stavy těchto sandboxů.

Správce sandboxů ví, které sandboxy běží, jsou pozastaveny, uspány nebo zastaveny, spolu s jejich skutečnými prostředky. Běží bez oprávnění a deleguje veškerou privilegovanou práci na správce uzlu, jediný kořenový proces, který zprostředkovává základní primitivy. Úložiště je spravováno lokálně a trvanlivě: snímky aktuálních stavů sandboxu se ukládají na uzel a správce svazků přesouvá snímky a šablony do objektového úložiště a zpět podle potřeby, aby umožnil operace napříč uzly. Bezpečnostní brány chrání to, čeho může sandbox dosáhnout: správce přihlašovacích údajů řídí vkládání přihlašovacích údajů v rámci autorizace pro každou službu a síťová brána vynucuje zásady výstupu každého sandboxu.

Sandbox

Samotný sandbox je virtuální počítač (VM) s vlastním kernelem hosta, který spouští pracovní zátěž uživatele za hranicí hardwarové izolace. Protože každý sandbox má svůj vlastní kernel, kompromitovaná pracovní zátěž se nemůže spolehnout na sdílený kernel hostitele jako na jediné místo selhání; i když úspěšně zneužije svůj kernel hosta, tato kompromitace je omezena na hranici VM sandboxu, namísto aby se šířila napříč ostatními pracovními zátěžemi.

Uvnitř každého virtuálního počítače běží démon space, který slouží jako lehký agent regulující každou akci nebo úpravu, kterou platforma provádí uvnitř hosta. Zpracovává přístup k souborovému systému a správu procesů. Rovněž hlásí připravenost hosta a sleduje aktivitu, takže platforma ví, kdy byl sandbox neaktivní a lze jej pozastavit nebo uvolnit. Klíčové je, že démon space nekomunikuje přímo s klienty, ale komunikuje s hostitelem přes soukromý kanál uvnitř VM. Tím se veškerá interakce s hostem udržuje na kontrolované cestě a vlastní síť sandboxu se vyhrazuje čistě pro odchozí provoz pracovní zátěže.

Tři pilíře: Bezpečnost, funkcionalita a efektivita

Dále se ponoříme do klíčových vlastností, které musí SPACE poskytovat napříč třemi pilíři: bezpečností, funkcionalitou a efektivitou. Jak již bylo zmíněno, tyto tři jdou proti sobě. Přesto nemůžeme slevit ani z jednoho z nich, pokud chceme podporovat výkonné agenty, kteří odpovídají dnešním možnostem modelů. Bezpečnost brání nedůvěryhodné, potenciálně nepřátelské pracovní zátěži v poškození hostitele, ostatních tenantů nebo uživatelských tajemství. Funkcionalita poskytuje agentům bohatý životní cyklus, který potřebují. Efektivita činí toto vše cenově dostupným při omezené paměti, disku a výpočetním výkonu.

Bezpečnost: Ochrana dat a systémů

Sandboxové platformy potřebují silnou bezpečnost, aby bylo zajištěno, že chybový nebo dokonce škodlivý kód spuštěný uvnitř sandboxů nemůže způsobit škodlivé účinky jinde. Bez vynucení přísné kontroly výstupu a uchování tajemství mimo sandbox by jediný špatný krok agenta mohl způsobit únik uživatelských klíčů nebo exfiltraci práce.

SPACE vynucuje vrstvenou bezpečnost kombinací izolace na úrovni VM a hostitele s přísně kontrolovanými komunikačními kanály, správou přihlašovacích údajů a šifrováním.

SPACE přistupuje k zajištění bezpečnosti sandboxů vrstveně. Izolace sandboxu má dvě složky: izolaci VM a izolaci procesů operačního systému hostitele. Pro přístup napříč sandboxy je nutné narušit obě. Komunikace se sandboxem je přísně kontrolována; procesy mohou komunikovat pouze prostřednictvím vyhrazených kanálů. Síťová brána vynucuje veškerý výstup přes sebe. Démon space je jediným schváleným kanálem mezi (nedůvěryhodným) sandboxem a (důvěryhodnou) platformou.

Přihlašovací údaje nikdy neexistují tam, kde by je agent mohl ukrást. Úložiště přihlašovacích údajů se nachází mimo hranici sandboxu a zodpovídá za životní cyklus přihlašovacích údajů. Ukládá a načítá tajemství prostřednictvím zásuvného backendu trezoru, řeší přihlašovací údaje pomocí hierarchického rozsahu, spravuje metadata, jako je metoda vložení a vypršení platnosti, a vynucuje limity rychlosti a protokolování auditu u veškerého přístupu. V případě potřeby jsou přihlašovací údaje vloženy na síťové vrstvě nebo automaticky vyplněny agentem prohlížeče, namísto přímého vstupu do sandboxu.

Data jsou chráněna v klidovém stavu. SPACE podporuje BYOK (Bring Your Own Key) k ochraně externě uložených dat. Šifrovací klíče pocházejí ze služby správy klíčů zákazníka a nikdy nevstoupí do sandboxu. Pokud podnik klíč odvolá, jeho data se stanou nečitelnými.

Funkcionalita: Podpora pracovních postupů agentů

K podpoře pracovních postupů agentů potřebují sandboxy bohatou podporu životního cyklu. Musí být vytvářeny rychle a ve velkém měřítku, protože agent jich může spustit mnoho najednou a neměl by čekat na spuštění žádného z nich. Musí přetrvávat po neurčitou dobu, protože relace může trvat minuty nebo běžet měsíce. Musí se čistě pozastavit, někdy na dlouhé úseky, například když je úkol zablokován lidským vstupem. A musí podporovat forkování, vrácení změn a obnovu po pádu, takže relace se může rozvětvit, vrátit špatný krok nebo se obnovit po chybě namísto začínání od začátku.

SPACE podporuje vše výše uvedené. Modeluje celý životní cyklus sandboxu jako explicitní stavový stroj, což umožňuje operace jako vytvoření, pozastavení, obnovení, uspání a obnovení.

Tato základní podmožnost stavů sandboxu a přechodů stavu umožňuje bohatou podporu životního cyklu.

Snímky jsou mechanismem stojícím za většinou těchto funkcí. Plánovač tiká v pravidelných intervalech a pořizuje dva typy snímků: diskové snímky (kopie souborového systému v daném okamžiku) a úplné snímky (kontrolní body celého pozastaveného VM). Diskové snímky jsou pořizovány často, zatímco úplné kontrolní body méně často. Všechno zůstává na uzlu a uchování se snižuje podle úrovně. Tyto snímky lze použít pro obnovení v rámci relace; diskové snímky lze například použít k vrácení souborového systému zpět k odčinění destruktivního příkazu a úplné kontrolní body umožňují padlému sandboxu pokračovat v nedávném běžícím bodě namísto studeného disku.

Když je sandbox uspán, virtuální počítač se pozastaví, pořídí se úplný snímek a artefakty z úplného snímku se nahrát do objektového úložiště. Databázový řádek sleduje snímek a stane se obnovitelným až poté, co dorazí každý artefakt, takže částečně nahrátý snímek nelze nikdy obnovit do poškozeného stavu. Obnovení je inverzní operací k uspání. Protože snímek žije v objektovém úložišti namísto původního uzlu, může sandbox vrátit zpět jakýkoliv uzel. Plánovač vybere uzel, tento uzel stáhne artefakty, znovu aplikuje rozdíl souborového systému nad šablonu a obnoví virtuální počítač z jeho zachyceného stavu.

Efektivita: Optimalizace času a Prostoru

Nestačí implementovat výše uvedené funkce ve vákuu; musí být také proveditelné za přísných omezení zdrojů. Paměť a disk na uzlu jsou konečné a uživatelé chtějí, aby agenti fungovali co nejrychleji, takže operace životního cyklu musí být levné jak z hlediska času, tak prostoru. Nemůžeme si dovolit kopírovat plný obraz stroje pokaždé, když je sandbox vytvořen, pozastaven nebo rozvětven.

Klíčová volba návrhu to umožňuje: souborový systém. SPACE používá btrfs jako souborový systém na uzlu pro úložiště sandboxu. Btrfs (souborový systém B-tree) kombinuje souborový systém s kopií při zápisu s integrovanou správou logických svazků. To má několik výhod:

Reflink kopie jsou rychlé, protože sdílíte základní rozsahy, takže je nutné kopírovat pouze metadata.

Snímky jsou atomické a rychlé, protože jednoduše vytvoříte nový kořen.

Je potřeba minimální úložiště, protože ukládáte pouze to, co se změnilo.

Výsledkem je, že sandboxy lze vytvářet a obnovovat rychle. Namísto vytváření sandboxu od základu pokaždé udržujeme teplou zásobu podů, které již mají na disku zhmotněné běžné šablony, a požadavek uspokojíme jeho svázáním s podem, jehož šablona již odpovídá. Poskytnutí vlastního zapisovatelného kořenového souborového systému tomuto sandboxu je pak klonem typu kopie při zápisu namísto plné kopie. Když žádný teplý pod nevyhovuje, zhmotníme šablonu na vyžádání; souběžné požadavky na stejný obraz sloučíme do jediného stažení, takže nápor stejných požadavků se nezmění v nápor stejné práce.

Výsledkem je běhové prostředí sandboxu, které je zároveň výkonné, lehké a bleskově rychlé. Když jsme SPACE zaváděli, spustili jsme jej vedle našeho předchozího poskytovatele sandboxu na stejném produkčním provozu. Během spouštěcího týdne vytvořil SPACE sandboxy třikrát až pětkrát rychleji v celé distribuci. Konkrétně střední latence vytvoření klesla ze 185 milisekund na 60 milisekund (3,1krát zlepšení) a latence na 90. percentilu klesla ze 447 milisekund na 89 milisekund (5,0krát zlepšení). Podobná řádová zlepšení jsme zaznamenali i u dalších ukazatelů výkonu a využití zdrojů.

Při přímém srovnání je latence vytvoření pro sandboxy SPACE až 5krát rychlejší než naše předchozí sandboxové řešení.

Usnadňuje to také pořizování průběžných diskových snímků, protože jsou rychlé, prostorově efektivní a nevyžadují pozastavení sandboxu. Efektivní ukládání rozdílů navíc zmenšuje Prostor potřebný k uložení těchto snímků.

Závěr

Při navrhování komplexních systémů je lákavé zvolit jediný cíl k optimalizaci izolovaně. Vývojáři špičkových agentů však vyžadují bezpečnost, funkcionalitu a efektivitu ve stejné míře. Se SPACE jsme si dali za cíl dosáhnout Paretova zlepšení napříč všemi třemi pilíři.

Každá jednotlivá volba návrhu může sloužit několika cílům najednou, což tuto choulostivou rovnováhu umožňuje. Virtuální počítače pro každý sandbox poskytují každé pracovní zátěži vlastní kernel, čímž posilují bezpečnost prostřednictvím silné izolace a zároveň poskytují čistou hranici kontrolního bodu, na kterou se snímky spoléhají. Btrfs umožňuje efektivní implementaci pořizování snímků, forkování a dalších operací nezbytných pro agentní běhová prostředí. Démon space udržuje veškerou interakci s hostem na kontrolované cestě na straně hostitele, čímž utěsňuje hranici mezi hostem a hostitelem a zároveň zachovává volnost manévrování agentů. Centrální síťová brána zprostředkovává výstup a vkládání přihlašovacích údajů, aniž by kdy vystavila tajemství hostu.

Výsledkem těchto a dalších rozhodnutí o návrhu je platforma, která umožňuje orchestraci reálných agentů ve velkém měřítku. SPACE poskytuje podkladovou vrstvu, na které mohou dlouhodobě běžící stavoví agenti bezpečně řešit práci libovolné složitosti nebo trvání, aniž by obětovali výkon nebo bezpečnost.

Dnes SPACE již pohání miliony relací Perplexity Computer. Máme v úmyslu, aby SPACE sloužila jako jednotná vrstva pro zřizování a řízení sandboxů v jakémkoli prostředí: od linuxových mikroVM přes Windows hosty až po vlastní lokální počítač uživatele. Usilovně pracujeme na prosazování SPACE do těchto nových prostředí, aby vývojáři mohli dodávat produkty AI, které fungují všude tam, kde pracují uživatelé.

Pokud toužíte utvářet výpočetní vrstvu pohánějící zítřejší špičkové agenty, zveme vás k připojení k našemu týmu.