Създаване на SPACE: Сигурни и ефективни среди за изпълнение за дългосрочни агенти

SPACE е сигурната и ефективна платформа за Sandbox на Perplexity, която захранва дълго протичащи агентни работни процеси и бързо, изолирано изпълнение на код.

АвториPerplexity Engineering

Тъй като агентите работни процеси стават все по-дълги и по-автономни, средите, в които работят AI агентите, са от същото значение като моделите, които ги управляват. Агентите трябва да свършат истинска работа, като например стартиране на код, редактиране на файлови системи и изпълнение на задачи с множество стъпки в рамките на часове или дни. Потребителите искат агентите да имат достъп до инструментите и файловете, от които се нуждаят за изпълнението на тези задачи, но също така трябва да са сигурни, че техните системи ще останат сигурни дори при компрометиране на агентите. Един Sandbox прави всичко това възможно: изолирана среда, в която агентът може да работи свободно, докато хостът, другите наематели и чувствителните удостоверения остават защитени.

Традиционните подходи за Sandbox, базирани на контейнери, не са проектирани за тези задачи. Те обикновено предполагат кратковременни, безсъстоятелни задачи и имат ядрото като единна точка на скупчване на грешки. За разлика от тях, сесия на агентите са дълготрайни и съдържащи състояние: агентът натрупва часове контекст, работеща файлова система и работещи процеси, които не могат просто да бъдат изхвърлени и възстановени от нулата. Освен това работното натоварване вътре трябва да бъде недоверено по подразбиране, което изисква по-силни мерки за сигурност. Дълго работещите сесия на агентите се нуждаят от основа, която може да изолира враждебен гост, да запази неговото състояние и все пак да работи в мащаб.

Основното предизвикателство в инженеринг на Sandbox идва от напрежението, което често възниква между сигурност, функционалност и ефективност. Например:

Предоставянето на по-широк достъп позволява на агента да постигне повече, но излага повече от системата на работно натоварване, на което нямате доверие.

Споделянето на повече между Sandbox прави създаването по-бързо, но разширява повърхността на атака.

Правенето на моментни снимки по-често подобрява възстановяването и позволява функции като връщане назад, но изисква време и пространство за съхранение.

Агентни 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-daemon: фонов процес в госта, който посредничи за достъпа до файловата система, процесите и мрежата за работното натоварване.

Архитектурата на 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 и отговаря за жизнения цикъл на удостоверенията. То съхранява и извлича тайни чрез модулно хранилище за ключове (vault), разрешава удостоверенията чрез йерархично обхватане, управлява метаданни като метод на инжектиране и изтичане на срока и налага ограничения на честотата и одит логове за целия достъп. Когато е необходимо, удостоверенията се инжектират на мрежовия слой или се попълват автоматично от браузърен агент, вместо да влизат директно в Sandbox.

Данните са защитени в покой. SPACE поддържа BYOK (Bring Your Own Key) за защита на външно съхранявани данни. Ключовете за криптиране идват от услугата за управление на ключове на клиента и никога не влизат в Sandbox. Ако предприятието оттегли ключа, техните данни стават нечетливи.

Функционалност: Захранване на работни процеси на агентите

За да поддържат работни процеси на агенти, Sandbox се нуждаят от богата поддръжка на жизнен цикъл. Те трябва да бъдат създадени бързо и в мащаб, тъй като агентът може да стартира много наведнъж и не трябва да чака никой от тях да се зареди. Те трябва да се запазят за неопределена продължителност, тъй като сесия може да продължи минути или да работи месеци. Те трябва да спират изчистено, понякога за дълги периоди, като например когато задача е блокирана от човешко въвеждане. И те трябва да поддържат разделяне (forking), връщане назад и възстановяване след срив, така че сесия да може да се разклонява, да отменя лоша стъпка или да възобновява работата след грешка, вместо да започва отначало.

SPACE поддържа всички гореизброени. Той моделира пълния жизнен цикъл на Sandbox като изрична машина на състоянията, което прави възможно операции като създаване, пауза, възобновяване, спиране и възстановяване.

Този основен поднабор от състояния на Sandbox и преходи между състояния дава възможност за богата поддръжка на жизнения цикъл.

Моментните снимки са механизмът зад повечето от тези възможности. Планировчикът работи на редовни интервали и улавя два типа моментни снимки: моментни снимки на диска (копия на файловата система към определен момент) и пълни моментни снимки (контролни точки на цялата паузирана ВМ). Моментните снимки на диска се улавят често, докато пълните контролни точки са по-редки. Всичко остава на нодата, а задържането намалява по нива. Тези моментни снимки могат да се използват за възстановяване по време на сесия; например моментните снимки на диска могат да се използват за връщане на файловата система назад за отмяна на деструктивна команда, а пълните контролни точки позволяват на сринал се Sandbox да се възобнови от скорошна точка на работа вместо от студен диск.

Когато Sandbox е спрян, виртуалната машина се поставя на пауза, прави се пълна моментна снимка и артефактите от пълната моментна снимка се качват в обектово хранилище. Ред в базата данни проследява моментната снимка и става възстановим едва след като всеки артефакт е бил записан, така че частично качена моментна снимка никога не може да бъде възстановена в коригирано състояние. Възстановяването е обратното на спирането. Тъй като моментната снимка живее в обектово хранилище, а не на оригиналната нода, всяка нода може да върне Sandbox. Планировчикът избира нода, тази нода изтегля артефактите, пририлага делтата на файловата система върху шаблона и възобновява виртуалната машина от нейното заснето състояние.

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

Не е достатъчно горните функции да бъдат реализирани във вакуум; те също трябва да бъдат възможни при тесни ограничения на ресурсите. Паметта и дискът на една нода са крачни, а потребителите искат агентите да работят възможно най-бързо, така че операциите по жизнения цикъл трябва да бъдат евтини както по време, така и по пространство. Не можем да си позволим да копираме цялостен машинен образ всеки път, когато Sandbox се създава, поставя на пауза или разклонява.

Ключов избор в дизайна прави това възможно: файловата система. SPACE използва btrfs като файлова система на нодата за съхранение на Sandbox. Btrfs (B-tree файлова система) съчетава файлова система с копиране при запис (copy-on-write) с интегрирано управление на логически обеми. Това има няколко предимства:

Reflink копиранията са бързи, тъй като споделяте основните екстети, така че само метаданните трябва да бъдат копирани.

Моментните снимки са атомни и бързи, тъй като просто правите нов корен.

Необходимо е минимално съхранение, тъй като съхранявате само това, което се е променило.

В резултат на това Sandbox могат да бъдат създавани и възстановявани бързо. Вместо да създаваме Sandbox от нулата всеки път, ние поддържаме топъл пул от подове, които вече имат общи шаблони, материализирани на диска, и задоволяваме заявка чрез обвързването ѝ с под, чийто шаблон вече съвпада. Предоставянето на този Sandbox със собствена записваема коренна файлова система след това е копие тип копиране при запис вместо пълно копие. Когато никой топъл под не пасва, ние материализираме шаблона при поискване; обединяваме едновременни заявки за едно и също изображение в едно изтегляне, така че порой от идентични заявки да не се превръща в порой от идентична работа.

Резултатът е време за изпълнение на Sandbox, което е едновременно мощно, леко и изключително бързо. Когато пуснахме SPACE, го пуснахме заедно с нашия предишен доставчик на Sandbox на същия производствен трафик. През седмицата на пускане SPACE създаваше Sandbox три до пет пъти по-бързо в цялото разпределение. По-конкретно, медианната латентност при създаване падна от 185 милисекунди на 60 милисекунди (3.1 пъти подобрение), а 90-ият процентил на латентността падна от 447 милисекунди на 89 милисекунди (5.0 пъти подобрение). Наблюдавахме подобни подобрения от порядъка на величините по други показатели за производителност и използване на ресурси.

В директно сравнение латентността при създаване за SPACE Sandbox е до 5 пъти по-бърза от нашето предишно решение за Sandbox.

То също така улеснява правенето на текущи моментни снимки на диска, тъй като те са бързи, ефективни по отношение на пространството и не изискват спиране на Sandbox. И ефективното съхранение на делта намалява пространството, необходимо за съхранение на тези моментни снимки.

Заключение

При проектирането на сложни системи е изкушаващо да се избере една цел за оптимизиране в изолация. Но разработчиците на градивни агенти изискват сигурност, функционалност и ефективност в равни мерки. Със SPACE си поставихме за цел да постигнем подобрение по Парето във всичките три стълба.

Всеки отделен избор на дизайн може да обслужва множество цели едновременно, правейки този деликатен баланс възможен. Виртуалните машини за всеки Sandbox дават на всяко работно натоварване собствено ядро, укрепвайки сигурността чрез силна изолация, като същевременно осигуряват чиста граница за контролни точки, на която разчитат моментните снимки. Btrfs позволява ефективното реализиране на заснемане на моментни снимки, разклоняване и други операции, съществени за времето за изпълнение на агентите. Демонът space поддържа цялото взаимодействие с госта по контролиран път от страна на хоста, запечатвайки границата между гост и хост, като същевременно запазва свободата на маневриране на агентите. Централният мрежов шлюз посредничи при изхода и инжектирането на удостоверения, без никога да излага тайни на госта.

Резултатът от тези и други дизайнерски решения е платформа, която позволява оркестрация на агенти в реалния свят в мащаб. SPACE предоставя основата, върху която дълго работещи, съдържащи състояние агенти могат сигурно да се справят с работа с произволна сложност или продължителност, без да жертват нито производителност, нито сигурност.

Днес SPACE вече захранва милиони сесия на Perplexity Computer. Възнамеряваме SPACE да служи като унифициран слой за предоставяне и управление на Sandbox във всякаква среда: от Linux микроВМ до Windows гости до собствената локална машина на потребителя. Работим усърдно по въвеждането на SPACE в тези нови среди, така че разработчиците да могат да доставят AI продукти, които работят навсякъде, където работят потребителите.

Ако ви се иска да оформите изчислителния слой, движещ утрешните градивни агенти, каним ви да се присъедините към нашия екип.