Skabelse af SPACE: Sikre og effektive runtimes for langtidsforløbende agenter
SPACE er Perplexitys sikre, effektive sandbox-platform, der driver langtidsforløbende agentbaserede arbejdsprocesser og hurtig, isoleret kodeudførelse.
Efterhånden som agentbaserede arbejdsprocesser bliver længere og mere autonome, betyder de miljøer, som AI-agenter opererer i, lige så meget som de modeller, der driver dem. Agenter er nødt til at udføre rigtigt arbejde, såsom at køre kode, redigere filsystemer og udføre opgaver i flere trin over timer eller dage. Brugere vil have, at agenter har adgang til de værktøjer og filer, de skal bruge for at udføre disse opgaver, men har også brug for at stole på, at deres systemer forbliver sikre, selv hvis agenter bliver kompromitteret. En sandbox er det, der gør alt dette muligt: et isoleret miljø, hvor en agent kan operere frit, mens værten, andre lejerne og følsomme legitimationsoplysninger forbliver beskyttede.
Traditionelle containerbaserede sandbox-tilgange er ikke designet til disse opgaver. De antager typisk kortlivede, stateløse jobs og har kernen som et enkelt fejlpunkt. I kontrast hertil er agent-Sessioner langlivede og statefulde: en agent opamper timers kontekst, et arbejdende filsystem og kørende processer, som ikke bare kan smides væk og genopbygges fra bund af. Desuden bør arbejdsbelastningen indeni være ikketillidsbaseret som standard, hvilket nødvendiggør stærkere sikkerhedsforanstaltninger. Langtidsforløbende agent-Sessioner har brug for et substrat, der kan isolere en fjendtlig gæst, bevare dens tilstand og stadig drives i skala.
Den vigtigste udfordring inden for sandbox-engineering kommer fra det spændingsfelt, der ofte opstår mellem sikkerhed, funktionalitet og effektivitet. For eksempel:
At give bredere adgang gør det muligt for en agent at udrette mere, men udsætter mere af systemet for en arbejdsbelastning, du ikke stoler på.
At dele mere mellem sandboxe gør oprettelse hurtigere, men udvider angrebsfladen.
At tage snapshots hyppigere forbedrer genoprettelse og muliggør funktioner som rollback, men kræver tid og lagerplads.
Agentbaserede sandboxe, som dem der kræves til at køre kode, bruge Agent Skills eller udføre Search as Code-pipelines i Computer-forespørgsler, har brug for alle tre. Vi har arbejdet hårdt de seneste måneder på at udvikle næste generation af agent-infrastruktur, der driver vores produkter. I dag introducerer vi SPACE (Sandboxed Platform for Agentic Code Execution): en sandbox-platform bygget til agentbaserede arbejdsprocesser, som er sikker, pålidelig og effektiv i skala. I sidste måned begyndte vi at rulle SPACE ud som det sandbox-lag, der driver Perplexity Computer. I løbet af den sidste uge har den sikkert understøttet millioner af sandbox-oprettelser og ti millioner af genforbindelser, med opstartstider der er 3-5 gange hurtigere end vores tidligere løsning.
Denne artikel præsenterer de arkitektoniske og designmæssige beslutninger bag SPACE. Pr. i dag kører 100% af Computer-Sessioner nu på SPACE. Vi glæder os til at udrulle denne platform på endnu flere flader for at levere en førsteklasses agentbaseret runtime til vores brugere og udviklere.
Arkitektur
På et overordnet niveau er systemet organiseret i tre lag.
Kontrolplanet er systemets hjerne, der beslutter, hvad der skal eksistere, og hvor. Det består af API-gatewayen og tilstandsstyringsmoduler på clusterniveau.
Nodelokale tjenester er det lokale maskineri, der kræves for at udføre kontrolplanets plan. De ejer sandbox-livscyklussen, lager, netværk og de privilegerede operationer bag dem.
Selve sandboxen er det isolerede udførelsesmiljø. Den er implementeret som en virtuel maskine parret med space-daemonen: en baggrundsproces inde i gæsten, der mægler filsystem-, proces- og netværksadgang for arbejdsbelastningen.

Kontrolplan
API-gatewayen er indgangspunktet. Indgående anmodninger godkendes og autoriseres, og omsættes derefter til poster over den ønskede tilstand.
Kontrolplanet er per design stateløst, idet al holdbar information er aflastet til en delt database. Det sporer information på clusterniveau om sandboxe, såsom hvilken node de er tildelt til, hvor de kører, og om de er blevet sikkerhedskopieret til holdbart lager. Det sammenligner løbende den ønskede tilstand med den observerede tilstand og driver de to mod konvergens. Operationer er idempotente, så kontrolplanet kan gendannes automatisk efter et eventuelt crash, genstart eller delvis fejl.
Nodelokale tjenester
Nodelokale tjenester udfører det egentlige arbejde med at klargøre skabeloner, starte sandboxe, kabelføre netværk og køre runtime-tjenester på værtsiden. Hver node kører et lille sæt daemons, der administrerer hver enkelt sandbox placeret på den, og noden er sandhedskilden for disse sandbox’es live-tilstande.
Sandbox-manageren ved, hvilke sandboxe der kører, er sat på pause, suspenderet eller stoppet, sammen med deres reelle ressourcer. Den kører uprivilegeret og delegerer alt privilegeret arbejde til node-manageren, den enkelte rodproces, der mægler de underliggende primitiver. Lager håndteres lokalt og holdbart: snapshots af nuværende sandbox-tilstande gemmes på noden, og en volumenmanager flytter snapshots og skabeloner til og fra objektlager efter behov for at muliggøre tværnode-operationer. Sikkerhedsporte vogter over, hvad en sandbox kan nå: legitimationsmanageren styrer injektion af legitimationsoplysninger under tilladelse pr. tjeneste, og netværksgatewayen håndhæver hver sandboxs udgående trafikpolitik.
Sandbox
Selve sandboxen er en virtuel maskine (VM) med sin egen gæstekernel, der kører brugerens arbejdsbelastning bag en hardware-isoleringsgrænse. Da hver sandbox har sin egen kernel, kan en kompromitteret arbejdsbelastning ikke falde tilbage på en delt værtsserverkernel som et enkelt fejlpunkt; selv hvis den med succes udnytter sin gæstekernel, er denne kompromittering begrænset til sandboxens VM-grænse i stedet for at sprede sig på tværs af andre arbejdsbelastninger.
En space-daemon kører inde i hver virtuel maskine og fungerer som en letvægtsagent, der regulerer enhver handling eller ændring, platformen udfører inde i gæsten. Den håndterer filsystemadgang og processtyring. Den rapporterer også gæstens parathed og sporer aktivitet, så platformen ved, hvornår en sandbox er gået i tomgang og kan sættes på pause eller genindvindes. Afgørende er det, at space-daemonen ikke taler direkte med klienter, men i stedet kommunikerer med værten over en privat i-VM-kanal. Dette holder al gæsteinteraktion på en kontrolleret sti og reserverer sandboxens eget netværk udelukkende til arbejdsbelastningens udgående trafik.
Tre søjler: Sikkerhed, funktionalitet og effektivitet
Dernæst dykker vi ned i de nøgleegenskaber, som SPACE skal levere på tværs af tre søjler: sikkerhed, funktionalitet og effektivitet. Som bemærket tidligere trækker disse tre i hver sin retning. Alligevel kan vi ikke gå på kompromis med nogen af dem, hvis vi ønsker at understøtte kraftfulde agenter, der lever op til nutidens modelkapaciteter. Sikkerhed forhindrer en utilgængelig, muligvis fjendtlig arbejdsbelastning i at skade værten, andre lejerne eller en brugers hemmeligheder. Funktionalitet giver agenter den rige livscyklus, de har brug for. Effektivitet gør alt dette overkommeligt under endelig hukommelse, disk og beregning.
Sikkerhed: Beskyttelse af data og systemer
Sandbox-platforme har brug for stærk sikkerhed for at sikre, at fejlagtig eller endda ondskabsfuld kode, der køres inde i sandboxe, ikke kan forårsage skadelige virkninger andre steder. Uden at gennemtvinge stram kontrol med udgående trafik og holde hemmeligheder ude af sandboxen, kan et enkelt forkert skridt af en agent lække en brugers nøgler eller eksfiltrere arbejde.

SPACE anvender en lagdelt tilgang til at sikre sikkerhed for sandboxe. Sandbox-isolering har to komponenter: VM-isolering og vært-OS-procesisolering. Begge skal brydes for at opnå tværgående sandbox-adgang. Kommunikation med sandboxen er strengt kontrolleret; processer kan kun kommunikere gennem dedikerede kanaler. Netværksgatewayen tvinger al udgående trafik gennem sig. space-daemonen er den eneste sanktionerede kanal mellem den (utillidte) sandbox og den (pålidelige) platform.
Legitimationsoplysninger lever aldrig der, hvor en agent kan stjæle dem. Butikken for legitimationsoplysninger ligger uden for sandbox-grænsen og er ansvarlig for livscyklussen for legitimationsoplysninger. Den lagrer og henter hemmeligheder via et udskifteligt vault-backend, løser legitimationsoplysninger ved hjælp af hierarkisk scoping, administrerer metadata såsom injektionsmetode og udløb, og håndhæver hastighedsgrænser og audit-logging på al adgang. Når det er nødvendigt, injiceres legitimationsoplysninger på netværkslaget eller autoudfyldes af en browseragent i stedet for at komme direkte ind i sandboxen.
Data beskyttes i hvile. SPACE understøtter BYOK (Bring Your Own Key) for at beskytte eksternt lagrede data. Krypteringsnøgler kommer fra kundens nøglestyringstjeneste og kommer aldrig ind i sandboxen. Hvis virksomheden tilbagekalder nøglen, bliver deres data ulæselige.
Funktionalitet: Understøttelse af agentbaserede arbejdsprocesser
For at understøtte agentbaserede arbejdsprocesser har sandboxe brug for rig livscyklus-understøttelse. De skal oprettes hurtigt og i skala, da en agent kan starte mange på én gang og ikke bør vente på, at nogen af dem booter. De skal bestå i en ubestemt varighed, da en session kan vare i minutter eller køre i måneder. De skal kunne sættes på pause rent, nogle gange i lange stræk, f.eks. når en opgave er blokeret af menneskeligt input. Og de skal understøtte forking, rollback og gendannelse efter nedbrud, så en session kan forgrene sig, fortryde et dårligt trin eller genoptage efter en fejl i stedet for at starte forfra.
SPACE understøtter alt det ovenstående. Den modellerer hele sandbox-livscyklussen som en eksplicit tilstandsmaskine, hvilket er det, der gør operationer som oprettelse, pause, genoptagelse, suspension og gendannelse mulige.

Snapshots er mekanismen bag de fleste af disse funktioner. En scheduler tikkker med faste mellemrum og tager to typer snapshots: disksnapshots (tidspunktskopier af filsystemet) og fulde snapshots (kontrolpunkter af hele den pausede VM). Disksnapshots tages hyppigt, mens fulde kontrolpunkter er mindre hyppige. Alt forbliver på noden, og opbevaring aftager efter lag. Disse snapshots kan bruges til gendannelse i sessionen; for eksempel kan disksnapshots bruges til at rulle filsystemet tilbage for at fortryde en destruktiv kommando, og fulde kontrolpunkter lader en nedbrudt sandbox genoptage på et nyligt kørende punkt i stedet for en kold disk.
Når en sandbox suspenderes, sættes VM’en på pause, der tages et fuldt snapshot, og artefakterne fra det fulde snapshot uploades til objektlager. En databaserække sporer snapshottet og kan først gendannes, når hvert artefakt er landet, så et delvist uploadet snapshot aldrig kan genoptages til en korrupt tilstand. Gendannelse er det modsatte af suspension. Da snapshottet ligger i objektlageret i stedet for på den oprindelige node, kan enhver node bringe sandboxen tilbage. Scheduleren vælger en node, den node downloader artefakterne, genanvender filsystem-deltaet oven på skabelonen og genoptager VM’en fra dens fangede tilstand.
Effektivitet: Optimering af tid og plads
Det er ikke nok at implementere ovenstående funktioner i et vakuum; de skal også være mulige under stramme ressourcebegrænsninger. Hukommelse og disk på en node er endelige, og brugere vil have agenter til at fungere så hurtigt som muligt, så livscyklusoperationer skal være billige i både tid og plads. Vi har ikke råd til at kopiere et fuldt maskinbillede hver gang en sandbox oprettes, sættes på pause eller forgrenes.
Et vigtigt designvalg gør dette muligt: filsystemet. SPACE bruger btrfs som nodens filsystem til sandbox-lager. Btrfs (B-tree filesystem) kombinerer et copy-on-write-filsystem med integreret logisk volumenstyring. Dette har en række fordele:
Reflink-kopier er hurtige, da du deler de underliggende omfang, så kun metadata skal kopieres.
Snapshots er atomare og hurtige, da du blot laver en ny rod.
Minimalt lager er påkrævet, da du kun gemmer det, der er ændret.
Som et resultat kan sandboxe oprettes og gendannes hurtigt. I stedet for at oprette en sandbox fra bunden hver gang, beholder vi en varm pool af pods, der allerede har almindelige skabeloner materialiseret på disken, og opfylder en anmodning ved at knytte den til en pod, hvis skabelon allerede matcher. At give denne sandbox sin egen skrivbare rodfilsystem er derefter en copy-on-write-klon i stedet for en fuld kopi. Når ingen varm pod passer, materialiserer vi skabelonen efter behov; vi slår samtidige anmodninger for det samme billede sammen til en enkelt download, så en byge af identiske anmodninger ikke forvandler sig til en byge af identisk arbejde.
Resultatet er en sandbox-runtime, der på én gang er kraftfuld, letvægtig og lynhurtig. Da vi udrullede SPACE, kørte vi det ved siden af vores tidligere sandbox-udbyder på den samme produktionstrafik. På tværs af lanceringsugen skabte SPACE sandboxe tre til fem gange hurtigere gennem hele distributionen. Specifikt faldt medianoprettelseslatensen fra 185 millisekunder til 60 millisekunder (3,1x forbedring), og 90-procentilens latens faldt fra 447 millisekunder til 89 millisekunder (5,0x forbedring). Vi observerede lignende størrelsesordensforbedringer på tværs af andre ydeevne- og ressourceforbrugsindikatorer.

Det gør det også nemt at tage rullende disksnapshots, da de er hurtige, pladseffektive og ikke kræver at sætte sandboxen på pause. Og effektivt delta-lager mindsker den plads, der er nødvendig for at gemme disse snapshots.
Konklusion
Når man designer komplekse systemer, er det fristende at vælge et enkelt mål at optimere isoleret. Men udviklere af grænsefladeagenter kræver sikkerhed, funktionalitet og effektivitet i lige grad. Med SPACE satte vi os for at opnå en Pareto-forbedring på tværs af alle tre søjler.
Hvert enkelt designvalg kan tjene flere mål på én gang, hvilket gør denne sarte balance mulig. VM’er pr. sandbox giver hver arbejdsbelastning sin egen kernel, hvilket styrker sikkerheden gennem stærk isolering og samtidig giver den rene kontrolpunktsgrænse, som snapshots er afhængige af. Btrfs muliggør den effektive implementering af snapshotting, forking og andre operationer, der er afgørende for agentbaserede runtimes. space-daemonen holder al gæsteinteraktion på en kontrolleret værtside-sti, forsegler gæst-vært-grænsen og bevarer samtidig agenternes bevægelsesfrihed. Den centrale netværksgateway formidler udgående trafik og injektion af legitimationsoplysninger uden nogensinde at afsløre hemmeligheder for gæsten.
Resultatet af disse og andre designbeslutninger er en platform, der muliggør agent-orkestrering i den virkelige verden i skala. SPACE leverer det substrat, som langlivede, statefulde agenter sikkert kan tackle arbejde af vilkårlig kompleksitet eller varighed på, uden at ofre hverken ydeevne eller sikkerhed.
I dag driver SPACE allerede millioner af Perplexity Computer-Sessioner. Vi har til hensigt, at SPACE skal fungere som et samlet lag til klargøring og styring af sandboxe i enhver indstilling: fra Linux-microVM'er til Windows-gæster til en brugers egen lokale maskine. Vi arbejder hårdt på at skubbe SPACE ind i disse nye indstillinger, så udviklere kan levere AI-produkter, der fungerer overalt, hvor brugere arbejder.
Hvis du kribler efter at forme det beregningslag, der driver morgendagens grænsefladeagenter, inviterer vi dig til at slutte dig til vores team.