SPACE-i loomine: turvalised ja tõhusad käitusajad pikaajalistele agentidele
SPACE on Perplexity turvaline ja tõhus liivakastiplatvorm, mis toetab pikaajalisi agentide töövooge ja kiiret isoleeritud koodi täitmist.
Kuna agentide töövoog muutub pikemaks ja autonoomsemaks, on keskkonnad, kus tehisintellekti agendid tegutsevad, sama olulised kui neid juhtivad mudelid. Agendid peavad tegema reaalset tööd, näiteks käivitama koodi, redigeerima failisüsteeme ja täitma mitmeetapilisi ülesandeid tundide või päevade jooksul. Kasutajad soovivad, et agentidel oleks juurdepääs nende ülesannete täitmiseks vajalikele tööriistadele ja failidele, kuid nad peavad ka usaldama, et nende süsteemid püsivad turvalised isegi siis, kui agentide turvalisus on ohus. Kõik see on teostatav tänu liivakastile: isoleeritud keskkonnale, kus agent saab vabalt tegutseda, samal ajal kui host, teised rentnikud ja tundlikud mandaadid on kaitstud.
Traditsioonilised konteineripõhised liivakasti lähenemised ei ole selliste ülesannete jaoks loodud. Tavaliselt eeldatakse neis lühiajalisi, olekuta töid ja tuum on seal üheks rikkepunktiks. Seevastu agentide seansid on pikaajalised ja olekuga: agent kogub tundide viisi konteksti, toimiva failisüsteemi ja töötavaid protsesse, mida ei saa lihtsalt minema visata ja nullist uuesti luua. Lisaks peaks sealne töökoormus olema vaikimisi usaldamatu, mis nõuab tugevamaid turvameetmeid. Pikaajalised agentide seansid vajavad alust, mis suudab isoleerida vaenuliku külalise, säilitada selle oleku ja töötada siiski ulatuslikult.
Liivakasti inseneritöö peamine väljakutse tuleneb pingest, mis sageli tekib turvalisuse, funktsionaalsuse ja tõhususe vahel. Näiteks:
Laiema juurdepääsu andmine võimaldab agendil rohkem ära teha, kuid paljastab suurema osa süsteemist töökoormusele, mida te ei usalda.
Liivakastide vahel rohkema jagamine teeb loomise kiiremaks, kuid suurendab ründepinda.
Sagedasem salvestustõmmiste tegemine parandab taastamist ja võimaldab selliseid funktsioone nagu tagasipööramine, kuid nõuab aega ja ruumi.
Agentide liivakastid, näiteks need, mis on vajalikud koodi käivitamiseks, agentide oskuste kasutamiseks või otsingu kui koodi torujuhtmete käitamiseks arvutijuurringutes, vajavad kõiki kolme. Oleme viimastel kuudel teinud tõsiseid pingutusi meie tooteid toitva järgmise põlvkonna agendiinfrastruktuuri kujundamisel. Täna tutvustame platvormi SPACE (Sandboxed Platform for Agentic Code Execution): agentide töövoogude jaoks ehitatud liivakastiplatvormi, mis on turvaline, usaldusväärne ja mastaapselt tõhus. Eelmisel kuul hakkasime kasutusele võtma SPACE-i liivakastikihina, mis toidab Perplexity Computerit. Viimase nädala jooksul on see turvaliselt toetanud miljoneid liivakastide loomisi ja kümneid milioone taasühendamisi, kusjuures käivitusaeg on 3–5 korda kiirem kui meie eelmisel lahendusel.
See artikkel tutvustab SPACE-i taga olevaid arhitektuuri- ja disainiotsuseid. Tänase seisuga töötab 100% Computer seanssidest SPACE-il. Meil on hea meel see platvorm kasutusele võtta veelgi suuremas ulatuses, et pakkuda oma kasutajatele ja arendajatele omaklassi parimat agendi käitusaega.
Arhitektuur
Kõrgel tasemel on süsteem jagatud kolmeks kihiks.
Juhtplaan on süsteemi aju, mis otsustab, mis peaks olemas olema ja kus. See koosneb API lüüsist ja klastritaseme olekuhaldusmoodulitest.
Sõlmesisesed teenused on kohalikud mehhanismid, mis on vajalikud juhtplaani plaani täitmiseks. Need haldavad liivakasti elutsüklit, salvestusruumi, võrku ja nende taga olevaid privilegeeritud toiminguid.
Liivakast on isoleeritud täitmiskeskkond ise. See on rakendatud virtuaalmasinana, mis on ühendatud space-deemoniga: külalises asuva taustaprotsessiga, mis vahendab töökoormuse jaoks juurdepääsu failisüsteemile, protsessile ja võrgule.

Juhtplaan
API lüüs on sisenemispunkt. Sissetulevad päringud autentitakse ja autoriseeritakse ning seejärel tõlgitakse soovitud oleku kirjeteks.
Juhtplaan on olemuselt olekuta, kogu vastupidav teave on paigutatud ühiskasutatavasse andmebaasi. See jälgib klastritaseme teavet liivakastide kohta, näiteks seda, millisele sõlmele need on määratud, kus nad töötavad ja kas neid on varundatud vastupidavasse salvestusruumi. See võrdleb pidevalt soovitud olekut täheldatud olekuga ja viib mõlemad kokkuleppele. Toimingud on idempotentsed, nii et juhtplaan saab pärast mis tahes krahhi, taaskäivitust või osalist riket automaatselt taastuda.
Sõlmesisesed teenused
Sõlmesisesed teenused teevad mallide ettevalmistamise, liivakastide käivitamise, võrguühenduse loomise ja hostipoolsete käitusteenuste käitamise tegeliku töö. Iga sõlm käitab väikest hulka deemoneid, mis haldavad kõiki sellele paigutatud liivakaste, ja sõlm on nende liivakastide reaalajas olekute tõeallikas.
Liivakasihaldur teab, millised liivakastid töötavad, on pausil, peatatud või peatatud, koos nende reaalsete ressurssidega. See töötab privileegideta ja delegeerib kogu privilegeeritud töö sõlmehaldurile, ühele juurprotsessile, mis vahendab aluseks olevaid primitiive. Salvestusruumi hallatakse kohapeal ja vastupidavalt: praeguste liivakasti olekute salvestustõmmised salvestatakse sõlmesse ja helitugevuse haldur teisaldab salvestustõmmised ja mallid objektide salvestusruumi ja tagasi vastavalt vajadusele, et võimaldada sõlmeüleseid toiminguid. Turvaväravad kaitsevad seda, milleni liivakast ulatub: mandaadihaldur reguleerib mandaatide sisestamist teenusepõhise autoriseerimise alusel ja võrgulüüs jõustab iga liivakasti väljamineku poliitikat.
Liivakast
Liivakast ise on virtuaalmasin (VM), millel on oma külalistuum ja mis käivitab kasutaja töökoormuse riistvaralise isolatsioonipiiri taga. Kuna igal liivakastil on oma tuum, ei saa ohustatud töökoormus tugineda ühisele hostituumale kui ühele rikkepunktile; isegi kui see kasutab oma külalituuma edukalt ära, on see oht piiratud liivakasti VM-i piiridega, selle asemel et levida teistesse töökoormustesse.
Igas virtuaalmasinas töötab space deemon, mis toimib kerge agendina, mis reguleerib kõiki toiminguid või muudatusi, mida platvorm külalises teeb. See käsitleb juurdepääsu failisüsteemile ja protsesside haldamist. Samuti annab see teada külalise valmisolekust ja jälgib tegevust, et platvorm teaks, millal liivakast on tühikäigul ja seda saab peatada või taaskasutada. Mis kõige tähtsam, space deemon ei räägi klientidega otse, vaid suhtleb hostiga privaatse VM-isisese kanali kaudu. See hoiab kogu külalissuhtluse kontrollitud teel ja reserveerib liivakasti enda võrgu puhtalt töökoormuse väljamineva liikluse jaoks.
Kolm sammast: turvalisus, funktsionaalsus ja tõhusus
Järgmisena sukeldume põhialustesse, mida SPACE peab tagama kolmel sambal: turvalisus, funktsionaalsus ja tõhusus. Nagu varem märgitud, tõmbavad need kolm üksteisele vastu. Kuid me ei saa teha järeleandmisi üheski neist, kui soovime toetada võimsaid agente, mis vastavad tänapäevastele mudelivõimalustele. Turvalisus hoiab ära usaldamatu, potentsiaalselt vaenuliku töökoormuse kahjustamast hosti, teisi rentnikke või kasutaja saladusi. Funktsionaalsus annab agentidele rikkaliku elutsükli, mida nad vajavad. Tõhusus teeb selle kõik taskukohaseks piiratud mälu, ketta ja arvutusvõimsuse korral.
Turvalisus: andmete ja süsteemide kaitsmine
Liivakastiplatvormid vajavad tugevat turvalisust, tagamaks, et liivakastides käivitatud ekslik või isegi pahatahtlik kood ei saa mujal kahjulikke mõjusid põhjustada. Ilma range väljaminekukontrolli jõustamiseta ja saladuste hoidmiseta liivakastist eemal võib agendi üks vale samm lekitada kasutaja võtmed või eksfiltreerida tööd.

SPACE kasutab mitmekihilist lähenemist liivakastide turvalisuse tagamiseks. Liivakasti isolatsioonil on kaks komponenti: VM-i isolatsioon ja hosti OS-i protsessi isolatsioon. Mõlemad tuleb ületada liivakastidevaheliseks juurdepääsuks. Suhtlemine liivakastiga on rangelt kontrollitud; protsessid saavad suhelda ainult spetsiaalsete kanalite kaudu. Võrgulüüs sunnib kogu väljamineva liikluse läbi selle. Space deemon on ainus heakskiidetud kanal (usaldamatu) liivakasti ja (usaldusväärse) platvormi vahel.
Mandaadid ei ela kunagi seal, kus agent saaks neid varastada. Mandaaditsoon asub liivakasti piiridest väljas ja vastutab mandaadi elutsükli eest. See salvestab ja toob saladusi pistikprogrammi hoidla taustaprogrammi kaudu, lahendab mandaate hierarhiallise ulatuse abil, haldab metaandmeid, nagu sisestusmeetod ja aegumiskuupäev, ning jõustab kõigile juurdepääsudele kiiruspiiranguid ja auditilogi. Vajadusel sisestatakse mandaadid võrgukihis või täidetakse brauseriagendi poolt automaatselt, selle aitamiseks, et mitte siseneda otse liivakasti.
Andmed on kaitstud puhkeolekus. SPACE toetab BYOK-i (Bring Your Own Key) väliselt salvestatud andmete kaitsmiseks. Krüpteerimisvõtmed pärinevad kliendi võtmehaldusteenusest ja ei sisene kunagi liivakasti. Kui ettevõte tühistab võtme, muutuvad selle andmed loetamatuks.
Funktsionaalsus: agentide töövoogude toetamine
Agentide töövoogude toetamiseks vajavad liivakastid rikkalikku elutsükli tuge. Neid tuleb luua kiiresti ja mastaapselt, kuna agent võib luua mitu tükki korraga ega peaks ootama nende käivitumist. Need peavad säilima määramata aja, kuna seanss võib kesta minuteid või kuid. Neid peab saama puhtalt peatada, mõnikord pikaks ajaks, näiteks kui ülesanne on blokeeritud inimsisendi tõttu. Ja nad peavad toetama hargnemist, tagasipööramist ja krahhi taastamist, et seanss saaks hargneda, halva sammu tagasi võtta või pärast tõrget jätkata, selle asemel et uuesti alustada.
SPACE toetab kõike ülaltoodut. See modelleerib kogu liivakasti elutsükli eksplitsiitse olekumasinana, mis teeb võimalikuks sellised toimingud nagu loomine, peatamine, jätkamine, peatamine ja taastamine.

Salvestustõmmised on mehhanism enamiku nende võimaluste taga. Ajastaja tiksub kindla intervalliga ja teeb kahte tüüpi salvestustõmmiseid: kettasalvestustõmmiseid (failisüsteemi punktiaja koopiaid) ja täielikke salvestustõmmiseid (kogu peatatud VM-i kontrollpunkte). Kettasalvestustõmmiseid tehakse sageli, samas kui täielikke kontrollpunkte tehakse harvemini. Kõik jääb sõlmele ja säilitusvähenemine toimub astmete kaupa. Neid salvestustõmmiseid saab kasutada seansisiseseks taastamiseks; näiteks saab kettasalvestustõmmiseid kasutada failisüsteemi tagasipööramiseks hävitava käsu tagasivõtmiseks ning täielikud kontrollpunktid võimaldavad krahhiohvriks langenud liivakastil jätkata tööd hiljutisest käivituspunktist, mitte külmalt kettalt.
Kui liivakast peatatakse, pannakse virtuaalmasin pausile, tehakse täielik salvestustõmmis ja täieliku salvestustõmmise artefaktid laaditakse üles objektide salvestusruumi. Andmebaasi rida jälgib salvestustõmmist ja muutub taastatavaks alles siis, kui iga artefakt on kohale jõudnud, nii et osaliselt üleslaaditud salvestustõmmist ei saa kunagi rikutud olekusse taastada. Taastamine on peatamise vastand. Kuna salvestustõmmis asub objektide salvestusruumis, mitte algses sõlmes, saab iga sõlm liivakasti tagasi tuua. Ajastaja valib sõlme, see sõlm laadib artefaktid alla, rakendab failisüsteemi delta uuesti malli peale ja jätkab VM-i selle jäädvustatud olekust.
Tõhusus: aja ja ruumi optimeerimine
Ülaltoodud funktsioonide rakendamisest vaakumis ei piisa; neid peab olema võimalik teostada ka rangete ressursipiirangute korral. Mälu ja ketas sõlmes on piiratud ja kasutajad soovivad, et agendid töötaksid võimalikult kiiresti, seega peavad elutsükli toimingud olema odavad nii aja kui ka ruumi poolest. Meil ei ole võimalik kopeerida täielikku masinapilti iga kord, kui liivakast luuakse, peatatakse või hargnetakse.
Selle teeb võimalikuks üks peamine disainivalik: failisüsteem. SPACE kasutab btrfs-i sõlmesisese failisüsteemina liivakasti salvestusruumi jaoks. Btrfs (B-tree filesystem) ühendab kirjutamisel kopeeriva failisüsteemi integreeritud loogilise helitugevuse haldusega. Sellel on mitmeid eeliseid:
Reflink-koopiad on kiired, kuna jagate aluseks olevaid ulatuseid, nii et kopeerida on vaja ainult metaandmeid.
Salvestustõmmised on aatomilised ja kiired, kuna loote lihtsalt uue juure.
Vaja on minimaalselt salvestusruumi, kuna salvestate ainult seda, mis on muutunud.
Selle tulemusena saab liivakaste kiiresti luua ja taastada. Selle asemel, et luua liivakast iga kord nullist, hoiame soojas podide basseini, mille kettal on juba tavalised mallid materialiseeritud, ja täidame päringu, sidudes selle podiga, mille mall juba vastab. Sellele liivakastile oma kirjutatava juurfailisüsteemi andmise asemel on tegemist kirjutamisel kopeeritava klooniga, mitte täieliku koopiaga. Kui ükski soe pod ei sobi, materialiseerime malli nõudmisel; liidame sama pildi samaaegsed päringud üheks allalaadimiseks, nii et identsete päringute puhang ei muutu identsete tööde puhanguks.
Tulemuseks on liivakasti käitusaeg, mis on üheaegselt võimas, kerge ja ülikiire. SPACE turule toomisel käivitasime selle koos oma eelmise liivakastipakkujaga samal tootmisliikluses. Turuletoomise nädala jooksul lõi SPACE liivakaste kolm kuni viis korda kiiremini kogu jaotuse ulatuses. Täpsemalt langes mediaanloodud latentsusaeg 185 millisekundilt 60 millisekundile (3,1-kordne paranemine) ja 90. protsentiili latentsusaeg langes 447 millisekundilt 89 millisekundile (5,0-kordne paranemine). Märkasime sarnaseid suurusjärgu paranemisi ka teistes jõudluse ja ressursikasutuse näitajates.

Samuti on lihtne teha jooksvaid kettasalvestustõmmiseid, kuna need on kiired, ruumitõhusad ega nõua liivakasti peatamist. Ja tõhus deltasalvestus vähendab nende salvestustõmmiste salvestamiseks vajalikku ruumi.
Kokkuvõte
Keeruliste süsteemide kujundamisel on kiusatus valida optimeerimiseks üksainus eesmärk eraldatult. Kuid eesliiniagentide arendajad nõuavad turvalisust, funktsionaalsust ja tõhusust võrdsel määral. SPACE-iga asusime saavutama Pareto täiustust kõigil kolmel sambal.
Iga üksik disainivalik võib teenida mitut eesmärki korraga, muutes selle õrna tasakaalu võimalikuks. Liivakastipõhised VM-id annavad igale töökoormusele oma tuuma, tugevdades turvalisust tugeva isolatsiooni kaudu, pakkudes samas ka puhast kontrollpunkti piiri, millele salvestustõmmised tuginevad. Btrfs võimaldab tõhusalt rakendada salvestustõmmise tegemist, hargnemist ja muid agendi käitusaegade jaoks olulisi toiminguid. Space deemon hoiab kogu külalissuhtluse kontrollitud hostipoolsel teel, sulgedes külalise-hosti piiri, säilitades samal ajal agentide liikumisvabaduse. Keskne võrgulüüs vahendab väljaminekut ja mandaatide sisestamist ilma saladusi külalisele kunagi paljastamata.
Nende ja teiste disainivalikute tulemuseks on platvorm, mis võimaldab reaalset agendi orkestreerimist mastaapselt. SPACE pakub alust, millel pikaajalised, olekuga agendid saavad turvaliselt lahendada mis tahes keerukuse või kestusega tööd, ohverdamata ei jõudlust ega turvalisust.
Tänaseks toidab SPACE juba miljoneid Perplexity Computer seansse. Meie eesmärk on, et SPACE toimiks ühtse kihina liivakastide eraldamiseks ja juhtimiseks igas keskkonnas: alates Linuxi mikrovirtuaalmasinatest kuni Windowsi külaliste ja kasutaja enda kohaliku masinani. Töötame usinalt selle nimel, et viia SPACE nendesse uutesse keskkondadesse, et arendajad saaksid tarnida tehisintellekti tooteid, mis töötavad kõikjal, kus kasutajad töötavad.
Kui teil on soov kujundada arvutuskihis sõitvaid homseid eesliiniagente, kutsume teid meie meeskonnaga liituma.