Правимо SPACE: Сигурна и ефикасна извршна окружења за агенте који дуго раде

SPACE је Perplexity-јева сигурна, ефикасна платформа у оквиру Sandbox-а која покреће дуготрајне токове рада агената и брзо, изолирано извршавање кода.

АуториPerplexity Engineering

Како токови рада агента постају дужи и аутономнији, окружења у којима AI агенти раде постају подједнако важна као и модели који их покрећу. Агентима је потребно да обављају прави посао, као што је покретање кода, уређивање фајл система и извршавање задатака у више корака током сати или дана. Корисници желе да агенти имају приступ алатима и фајловима који су им потребни за обављање ових задатака, али такође морају бити сигурни да ће њихови системи остати безбедни чак и ако агенти буду компромитовани. Sandbox је оно што све ово чини могућим: изолирано окружење у којем агент може слободно да ради док домаћин, други корисници и осетљиви акредитиви остају заштићени.

Традиционални приступи засновани на контејнерима нису дизајнирани за ове задатке. Они обично претпостављају послове кратког века, без стања, и имају кернел као једину тачку отказивања. Насупрот томе, сесије агената су дуговечне и са стањем: агент акумулира сате контекста, радни фајл систем и процесе у току који се не могу једноставно одбацити и реконструисати испочетка. Штавише, оптерећење унутра треба да буде непровјерено по дефулту, што захтева јаче безбедносне мјере. Сесије агената које дуго трају захтевају супстрат који може да изолира непријатељског госта, сачува његово стање и ипак функционише у скалираном режиму.

Главни изазов у инжењерингу Sandbox-а произилази из тензије која се често јавља између безбедности, функционалности и ефикасности. На примјер:

Одобравање ширег приступа омогућава агенту да постигне више, али излаже већи дио система радном оптерећењу којем не вјерујете.

Дијељење више тога између Sandbox-ова чини креирање бржим, али шири површину за напад.

Чешће прављење снимака побољшава опоравак и омогућава функције попут враћања у претходно стање (rollback), али захтијева вријеме и простор за складиштење.

Sandbox-ови за агенте, попут оних који су потребни за извршавање кода, коришћење Agent Skills, или извршавање Search as Code цевовода у Computer упитима, захтијевају све три ствари. Напорно смо радили у протеклим мјесецима на инжењерингу сљедеће генерације инфраструктуре за агенте која покреће наше производе. Данас представљамо SPACE (Sandboxed Platform for Agentic Code Execution): платформу у оквиру Sandbox-а направљену за токове рада агента која је безбедна, поуздана и ефикасна у великим размјерама. Прошлог мјесеца почели смо са увођењем SPACE-а као слоја Sandbox-а који покреће Perplexity Computer. Током протекле недјеље, сигурно је подржао милионе креирања Sandbox-ова и десетине милиона поновних повезивања, са временима покретања која су 3-5 пута бржа од нашег претходног рјешења.

Овај чланак представља архитектуру и одлуке о дизајну које стоје иза SPACE-а. Од данас, 100% Computer сесија сада ради на SPACE-у. Узбуђени смо што ћемо применити ову платформу на још више површина како бисмо нашим корисницима и програмерима испоручили најбоље извршно окружење за агенте у својој класи.

Архитектура

На високом нивоу, систем је организован у три слоја.

Контролна раван је мозак система, који одлучује шта треба да постоји и гдје. Састоји се од API гатваја и модула за управљање стањем на нивоу кластера.

Услуге на нивоу чвора су локална механизација која је потребна за извршавање плана контролне равни. Оне посједују животни циклус Sandbox-а, складиштење, умрежавање и привилеговане операције које стоје иза њих.

Sandbox је само изолирано извршно окружење. Имплементиран је као виртуелна машина упарена са space демоном: позадинским процесом у оквиру госта који посредује у приступу фајл систему, процесима и мрежи за радно оптерећење.

SPACE-ова архитектура је подељена на три слоја: небезличну контролну раван; услуге на нивоу чвора које управљају животним циклусом Sandbox-а, складиштењем и сигурносним капијама; и сам Sandbox.

Контролна раван

API гатвај је улазна тачка. Долазни захтеви се аутентикују и ауторизују, затим преводе у записе о жељеном стању.

Контролна раван је дизајнирана без стања, при чему су све трајне информације пребачене на заједничку базу података. Она прати информације о кластеру о Sandbox-овима, као што су чвор којем су додељени, гдје раде и да ли су направљене резервне копије на трајном складишту. Она континуирано упоређује жељено стање са уоченим стањем и усмјерава то двоје ка конвергенцији. Операције су идемпотентне, тако да се контролна раван може аутоматски опоравити након било каквог пада, поновног покретања или дјелимичног отказивања.

Услуге на нивоу чвора

Услуге на нивоу чвора обављају стварни посао припреме шаблона, покретања Sandbox-ова, повезивања мреже и покретања рунтајм услуга на страни домаћина. Сваки чвор покреће мали скуп демона који управљају сваким Sandbox-ом који је постављен на њему, а чвор је извор истине за стања у реалном времену тих Sandbox-ова.

Менаџер Sandbox-а зна који Sandbox-ови раде, паузирани су, суспендовани или заустављени, заједно са њиховим стварним ресурсима. Он ради без привилегија и делегира сав привилегован посао менаџеру чвора, једином корјенском процесу који посредује у основним примитивима. Складиштењем се управља локално и трајно: снимци тренутних стања Sandbox-а чувају се на чвору, а менаџер волумена премешта снимке и шаблоне у и из објектног складишта по потреби како би се омогућиле операције на више чворова. Сигурносне капије чувају оно што Sandbox може да досегне: менаџер акредитива управља убризгавањем акредитива под ауторизацијом по услузи, а мрежни гатвај намеће политику излаза за сваки Sandbox.

Sandbox

Само окружење Sandbox је виртуелна машина (ВМ) са сопственим гостујућим кернелом, која покреће корисничко радно оптерећење иза границе хардверске изолације. Будући да сваки Sandbox има свој сопствени кернел, компромитовано радно оптерећење не може да се ослони на заједнички кернел домаћина као једину тачку отказивања; чак и ако успјешно искористи свој гостујући кернел, та компромитација је ограничена на границу ВМ-а Sandbox-а, умјесто да се шиří на друга радна оптерећења.

Демон space ради унутар сваке виртуелне машине, служећи као лагани агент који регулише сваку акцију или модификацију коју платформа извршава унутар госта. Он рукује приступом фајл систему и управљањем процесима. Такође привјештава о спремности госта и прати активност, тако да платформа зна када је Sandbox постао неактиван и може бити паузиран или поново преузет. Што је најважније, space демон не разговара директно са клијентима, већ комуницира са домаћином преко приватног канала у оквиру ВМ-а. Ово задржава сву интеракцију са гостом на контролисаној путањи и резервише сопствену мрежу Sandbox-а искључиво за одлазни саобраћај радног оптерећења.

Три стуба: безбедност, функционалност и ефикасност

Затим се упуштамо у кључне особине које SPACE мора да испоручи кроз три стуба: безбедност, функционалност и ефикасност. Као што је раније напоменуто, ова три стуба се међусобно супротстављају. Ипак, не можемо правити компромисе ни у једном од њих ако желимо да подржимо моћне агенте који одговарају данашњим могућностима модела. Безбедност чува непровјерено, можда непријатељско радно оптерећење од наношења штете домаћину, другим корисницима или корисничким тајнама. Функционалност даје агентима богат животни циклус који им је потребан. Ефикасност чини све ово приступачним уз коначну меморију, диск и рачунарске ресурсе.

Безбедност: Заштита података и система

Платформама Sandbox-а је потребна јака безбедност како би се осигурало да погрешан или чак злонамеран код покренут унутар Sandbox-ова не може изазвати штетне ефекте негдје другде. Без спровођења строге контроле излаза и држања тајни ван Sandbox-а, један лош корак од стране агента могао би да процури корисничке кључеве или извуче посао.

SPACE намеће вишеслојну безбедност комбиновањем ВМ и изолације на нивоу домаћина са строго контролисаним комуникационим каналима, управљањем акредитивима и енкрипцијом.

SPACE приступа вишеслојном приступу обезбеђивању безбедности за Sandbox-ове. Изолација Sandbox-а има двије компоненте, изолацију ВМ-а и изолацију процеса ОС-а домаћина. Обје морају бити пробијене за приступ између различитих Sandbox-ова. Комуникација са Sandbox-ом је строго контролисана; процеси могу комуницирати само преко посвећених канала. Мрежни гатвај приморава сав излаз кроз себе. space демон је једини одобрени канал између (непровјереног) Sandbox-а и (провјерене) платформе.

Акредитиви никада не живе тамо гдје их агент може украсти. Складиште акредитива се налази изван границе Sandbox-а и одговорно је за животни циклус акредитива. Оно чува и преузима тајне преко заменљиве позадине трезора, рјешава акредитиве користећи хијерархијско дефинисање опсега, управља метаподацима као што су метод убризгавања и рок трајања, и намеће ограничења стопе и евидентирање ревизије за сав приступ. Када је потребно, акредитиви се убризгавају на мрежном слоју или их аутоматски попуњава агент претраживача, уместо да директно улазе у Sandbox.

Подаци су заштићени у мировању. SPACE подржава BYOK (Bring Your Own Key) за заштиту спољно складиштених података. Кључеви за шифровање долазе из услуге управљања кључевима клијента и никада не улазе у Sandbox. Ако предузеће опозове кључ, њихови подаци постају нечитаки.

Функционалност: Покретање токова рада агената

Да би се подржали токови рада агената, Sandbox-овима је потребна богата подршка за животни циклус. Они морају бити креирани брзо и у великим размјерама, пошто агент може покренути многе одједном и не би требало да чека да се било који од њих покрене. Они морају да опстају неодређено вријеме, пошто сесија може трајати минутима или радити мјесецима. Они морају чисто да паузирају, понекад на дуге периоде, као што је када је задатак блокиран на уносу од стране човјека. И они морају да подржавају форковање, враћање у претходно стање и опоравак од пада, тако да се сесија може разгранати, поништити лош корак или наставити након квара уместо да почиње из почетка.

SPACE подржава све горе наведено. Он моделује пун животни циклус Sandbox-а као експлицитну машину стања, што је оно што чини могућим операције попут креирања, паузирања, наставка, суспендовања и враћања у претходно стање.

Овај основни подскуп стања Sandbox-а и прелаза стања омогућава богату подршку за животни циклус.

Снимци представљају механизам који стоји иза већине ових могућности. Распоређивач куца у редовним интервалима и снима двије врсте снимака: снимке диска (копије фајл система у одређеном тренутку) и пуне снимке (контролне тачке цијеле паузиране ВМ). Снимци диска се снимају често, док су пуне контролне тачке рјеђе. Све остаје на чвору, а задржавање опада према нивоу. Ови снимци се могу користити за опоравак у току сесије; на примјер, снимци диска се могу користити за враћање фајл система у претходно стање како би се поништила деструктивна команда, а пуне контролне тачке омогућавају срушеном Sandbox-у да настави радећи од недавног тренутка уместо са хладног диска.

Када је Sandbox суспендован, ВМ се паузира, прави се пун снимак, а артефакти из пуног снимка се отпремају у објектно складиште. Ред у бази података прати снимак и постаје могућ за враћање тек када сви артефакти стигну, тако да се дјелимично отпремљени снимак никада не може наставити у оштећеном стању. Враћање је супротност суспендовању. Пошто снимак живи у објектном складишту, а не на оригиналном чвору, било који чвор може да врати Sandbox. Распоређивач бира чвор, тај чвор преузима артефакте, поново примјењује делту фајл система на врх шаблона и наставља ВМ из њеног снимљеног стања.

Ефикасност: Оптимизација времена и простора

Није довољно имплементирати горе наведене карактеристике у изолацији; оне такође морају бити могуће под уским ограничењима ресурса. Меморија и диск на чвору су коначни, а корисници желе да агенти раде што је брже могуће, тако да операције животног циклуса морају бити јефтине и у погледу времена и простора. Не можемо себи приуштити да копирамо пуну слику машине сваки пут када се Sandbox креира, паузира или разграна.

Кључни избор дизајна ово чини могућим: фајл систем. SPACE користи btrfs као фајл систем на чвору за складиштење Sandbox-а. Btrfs (B-tree фајл систем) комбинује фајл систем заснован на копирању при упису са интегрисаним управљањем логичким волуменима. Ово има неколико предности:

Reflink копије су брзе, пошто дијелите основне екстенте, тако да само метаподаци морају бити копирани.

Снимци су а томски и брзи, пошто само правите нови корјен.

Потребно је минимално складиштење, јер чувате само оно што је промјењено.

Као резултат тога, Sandbox-ови се могу брзо креирати и вратити. Умјесто креирања Sandbox-а од нуле сваки пут, задржавамо топли базен подржавајућих јединица које већ имају заједничке шаблоне материјализоване на диску, и испуњавамо захтев повезивањем на јединицу чији се шаблон већ подудара. Давање том Sandbox-у сопственог корисног корјенског фајл система за упис је тада клонирање са копирањем при упису уместо пуне копије. Када ниједна топла јединица не одговара, ми материјализујемо шаблон по захтеву; спајамо истовремене захтеве за исту слику у једно преузимање, тако да налет идентичних захтева не прелази у налет идентичног посла.

Резултат је рантајм Sandbox-а који је истовремено моћан, лаган и невероватно брз. Када смо увели SPACE, покренули смо га заједно са нашим претходним добављачем Sandbox-а на истом продукционом саобраћају. Током недјеље лансирања, SPACE је креирао Sandbox-ове три до пет пута брже широм дистрибуције. Конкретно, медијана кашњења креирања пала је са 185 милисекунди на 60 милисекунди (побољшање од 3,1x), а 90. перцентил кашњења пао је са 447 милисекунди на 89 милисекунди (побољшање од 5,0x). Уочили смо слична побољшања реда величине на другим индикаторима перформанси и коришћења ресурса.

У директном поређењу, кашњење креирања за SPACE Sandbox-ове је до 5 пута брже од нашег претходног рјешења за Sandbox.

Такође олакшава прављење покретних снимака диска, јер су брзи, ефикасни у погледу простора и не захтијевају паузирање Sandbox-а. И, ефикасно складиштење делта смањује простор потребан за чување ових снимака.

Закључак

При дизајнирању сложених система, постоји искушење да се изабере један циљ који треба оптимизовати у изолацији. Али програмери граничних агената захтевају безбедност, функционалност и ефикасност у једнакој мјери. Са SPACE-ом, кренули смо да постигнемо Парето побољшање кроз сва три стуба.

Сваки појединачни избор дизајна може служити више циљева одједном, чинећи овај осетљив баланс могућим. ВМ-ови по Sandbox-у дају сваком радном оптерећењу сопствени кернел, јачајући безбедност кроз јаку изолацију док такође пружају чисту границу контролне тачке на коју се снимци ослањају. Btrfs омогућава ефикасну имплементацију прављења снимака, форковања и других операција неопходних за рантајме агената. Демон space задржава сву интеракцију са гостом на контролисаној путањи на страни домаћина, затварајући границу између госта и домаћина уз очување слободе кретања агената. Централни мрежни гатвај посредује у излазу и убризгавању акредитива без икакав излагања тајни госту.

Резултат ових и других одлука о дизајну је платформа која омогућава оркестрацију агената у стварном свијету у великим размјерама. SPACE пружа супстрат на којем дуговечни агенти са стањем могу безбедно да се ухвате у коштац са посалом произвољне сложености или трајања, без жртвовања перформанси или безбедности.

Данас SPACE већ покреће милионе Perplexity Computer сесија. Намеравамо да SPACE служи као јединствени слој за обезбеђивање и контролу Sandbox-ова у било ком окружењу: од Linux микроВМ-ова до Windows гостију до сопствене локалне машине корисника. Напорно радимо на угуравању SPACE-а у ова нова окружења, тако да програмери могу да испоруче AI производе који раде свуда гдје корисници раде.

Ако вас сврби да обликујете рачунарски слој који покреће сутрашње граничне агенте, позивамо вас да придружите се нашем тиму.