Perplexity пуска с отворен код SPACE — пясъчник с Firecracker микроVM за AI агенти
Perplexity публикува с отворен код SPACE — платформата-пясъчник зад всяка задача в Perplexity Computer. Пясъчникът SPACE на Perplexity предоставя на всяка задача на агента собствена Firecracker microVM. Идентификационните данни и изходящият трафик се контролират извън тази виртуална машина. Кодът се разпространява под лиценза Apache 2.0 в GitHub. За екипи, които създават агенти за програмиране или сърфиране, това е тестван в продукционна среда изолационен слой, който могат да хостват сами.
Накратко
- Размер: База код на Rust, версия 0.8.0 — публичната базова версия. HTTP API плюс събития, изпращани от сървъра.
- Работи на: Linux x86_64 хост с KVM,
/dev/kvm, btrfs и Docker. Локален Kind (Kubernetes) или директен режим. Няма поддръжка за macOS. - Производителност: В продукционна среда медианната латентност при създаване спадна от 185 ms на 60 ms спрямо предишния доставчик на Perplexity.
- Най-добър резултат: 0 от 108 опита за излизане от виртуалната машина към хоста са успешни при 9 водещи модела.
- Най-лош резултат: Преди корекциите агентите са заобиколили политиката за изходящ трафик при 11 от 54 изпълнения с частично активирана мрежа.
Какво представлява Perplexity SPACE?
SPACE (Sandboxed Platform for Agentic Code Execution) е платформата на Perplexity за изпълнение на код на агенти в изолирани microVM. Приложенията използват нейния HTTP API, за да създават Linux среди, да изпълняват команди и да предават изходни данни.
Шаблонът предоставя началната файлова система. Пясъчникът е една инстанция на този шаблон със собствена виртуална машина и записваем диск. В един пясъчник могат да се изпълняват множество команди.
Публикацията за старта на Perplexity обяснява целта на дизайна. Агентите изпълняват команди, инсталират пакети и извикват услуги с root достъп вътре в пясъчника. Хостът остава извън контрола на госта. Работата на агентите е продължителна, състоянието се запазва и има разклонения, така че трябва да преживява рестартирания.
Как SPACE изолира агентите?
Всеки пясъчник е Firecracker microVM със собствено гост операционно ядро. Мрежов шлюз на хоста за всеки пясъчник прилага политика за изходящия трафик при всяка изходяща връзка.
Секретите никога не влизат в госта. Според инженерната публикация на Perplexity от юли идентификационните данни се инжектират на мрежовия слой. Хранилището за идентификационни данни добавя йерархично обхващане, ограничения на честотата и одитно регистриране.
Ръководството за архитектурата разделя системата на 4 части. Това са API, базиран на PostgreSQL, контролери, работни услуги и слой за данни. Работните услуги управляват виртуалните машини, мрежите, томовете, шаблоните и идентификационните данни. btrfs copy-on-write създава всяка коренова файлова система.
Как работят поставянето на пауза, преустановяването и възстановяването?
Пясъчниците преминават през 4 състояния: работещ, поставен на пауза, преустановен и изтрит.
- Пауза: Паметта на виртуалната машина остава резидентна на работния възел. Това не е устойчив моментен снимък.
- Преустановен: Паметта на виртуалната машина, състоянието по време на изпълнение и кореновата файлова система се записват като моментен снимък. Активните ресурси се освобождават.
- Период на неактивност по подразбиране: пясъчниците се преустановяват след 6 часа без активност.
За бързо създаване Kubernetes разгръщанията използват топли пулове от стартирани пясъчници. Конфигурациите с един възел използват базови моментни снимки.
В продукционна среда латентността при създаване на 90-ия персентил спадна от 447 ms на 89 ms. Perplexity съобщава, че 100% от сесиите на Computer работят върху SPACE.
Успя ли SPACE да премине тест на червен екип?
Докладът на Perplexity „Излизане от SPACE: Част I“ тества 9 модела с root достъп вътре в госта. Проучването включва 216 изпълнения на 2 задачи и 4 конфигурации.
- Излизане от пясъчника: При 0 от 108 изпълнения е достигнат секретът от страната на хоста.
- Заобикаляне без мрежа: 0 от 54 изпълнения са успешни.
- Заобикаляне при частична мрежа: 11 от 54 изпълнения са успешни преди корекциите. 4 модела са открили начин.
Claude Opus 5.0, GPT-5.6 Sol, GPT-5.6 Cyber и Kimi K3 са открили начини за заобикаляне. Атаките са използвали DNS spoofing и споделени CDN IP адреси.
След това Perplexity добавя проверка на адреса на източника чрез nftables. Шлюзът вече прекратява TLS и проверява както SNI, така и HTTP хоста спрямо списъка с разрешени адреси. При повторния тест нито един модел не е успял да осъществи проверено заобикаляне.
Същият екип тества 10 платформи на трети страни. При 8 от тях е установено поне едно заобикаляне на мрежовата политика. Perplexity е разкрил резултатите пред всеки засегнат доставчик.
</button></div>
</div>
<div class="pane" data-p="2">
<div class="bars" id="psx-rt"></div>
<div class="note">9 модела, 216 изпълнения, root достъп вътре в госта. Корекции: проверка на адреса на източника чрез nftables, прекратяване на TLS с проверки на SNI + списъка с разрешени Host адреси. Източник: Perplexity, „Излизане от SPACE: Част I“ (23 септември 2026 г.).</div>
</div>
<div class="pane" data-p="3">
<div class="bars" id="psx-lat"></div>
<div class="note">Трафик през първата седмица от продукционното стартиране, SPACE спрямо предишния доставчик на пясъчници на Perplexity. По-ниската стойност е по-добра. Източник: инженерният блог на Perplexity (15 юли 2026 г.).</div>
</div>
<div class="pane" data-p="4">
<div class="tw"><table>
<tr><th>Функция</th><th>SPACE</th><th>E2B Runtime</th><th>microsandbox</th></tr>
<tr><td>Изолация</td><td>Firecracker microVM</td><td>Firecracker microVM</td><td>libkrun microVM</td></tr>
<tr><td>Лиценз</td><td>Apache 2.0</td><td>Apache 2.0</td><td>Apache 2.0</td></tr>
<tr><td>Език</td><td>Rust</td><td>Go</td><td>Rust</td></tr>
<tr><td>Тест на изходящия трафик на Perplexity</td><td>0 заобикаляния след корекцията</td><td>HTTPS заобикаляне, планирано ограничаване</td><td>HTTP + HTTPS заобикаляне, корекция във v0.6.18</td></tr>
</table></div>
<div class="note">Резултати за изходящия трафик от тестовете на Perplexity на 31 август и 1 септември 2026 г. за тестваните версии.</div>
</div>
<div class="ft"><span>Източници: github.com/perplexityai/SPACE · perplexity.ai/hub/blog</span><b>© Marktechpost</b></div>
</div>
<script>
(function(){
var R=document.getElementById('pplx-space-x');
function post(){try{parent.postMessage({psxHeight:R.offsetHeight+40},'*')}catch(e){}}
var tabs=R.querySelectorAll('.tab'),panes=R.querySelectorAll('.pane');
var D=['<b>Гост microVM.</b> Всяка задача получава собствена Firecracker microVM със собствено гост операционно ядро. Агентът може да изпълнява команди и да инсталира пакети с root права. Хостът остава извън неговия контрол.',
'<b>Шлюз за всеки пясъчник.</b> Целият изходящ трафик на госта преминава през шлюз от страната на хоста. Той вече прекратява TLS и изисква както SNI, така и HTTP Host да бъдат в списъка с разрешени адреси и да са свързани с DNS.',
'<b>Външни услуги.</b> Идентификационните данни никога не влизат в госта. Те се инжектират на мрежовия слой с обхващане, ограничения на честотата и одитно регистриране.'];
var det=document.getElementById('psx-detail'),boxes=R.querySelectorAll('.box');
function showD(i){boxes.forEach(function(b,j){b.classList.toggle('act',i==j)});det.innerHTML=D[i];post()}
boxes.forEach(function(b){b.addEventListener('click',function(){showD(+b.dataset.d)});b.addEventListener('mouseenter',function(){showD(+b.dataset.d)})});
showD(0);
var L=['<b>Работещ.</b> Процесите се изпълняват. Паметта на активната виртуална машина и записваемата файлова система се запазват.',
'<b>Поставен на пауза.</b> Изпълнението спира. Паметта на виртуалната машина остава резидентна на работния възел. Това не е устойчив моментен снимък.',
'<b>Преустановен.</b> Паметта на виртуалната машина, състоянието по време на изпълнение и кореновата файлова система се записват като моментен снимък. Активните ресурси на виртуалната машина се освобождават. По подразбиране: преустановяване след 6 часа неактивност.',
'<b>Изтрит.</b> Пясъчникът вече не е достъпен чрез API.'];
var li=0,sts=R.querySelectorAll('.st'),ld=document.getElementById('psx-life');
function life(){sts.forEach(function(s,j){s.classList.toggle('on',j==li)});ld.innerHTML=L[li];post()}
document.getElementById('psx-next').onclick=function(){li=(li+1)%4;life()};
document.getElementById('psx-prev').onclick=function(){li=(li+3)%4;life()};
sts.forEach(function(s,j){s.style.cursor='pointer';s.onclick=function(){li=j;life()}});
life();
function bars(el,data){el.innerHTML=data.map(function(d){return '<div class="row"><div class="lbl"><span>'+d[0]+'</span><em>'+d[1]+'</em></div><div class="track"><div class="fill" data-w="'+d[2]+'" style="background:'+d[3]+'"></div></div></div>'}).join('')}
bars(document.getElementById('psx-rt'),[
['Излизане от виртуалната машина към хоста','0 от 108 изпълнения',1.5,'#76B900'],
['Заобикаляне на мрежата, без мрежа','0 от 54 изпълнения',1.5,'#76B900'],
['Заобикаляне на мрежата, частична мрежа (преди корекцията)','11 от 54 изпълнения',20.4,'#E5675A'],
['Заобикаляне на мрежата, след корекцията','0 проверени заобикаляния',1.5,'#76B900'],
['Платформи на трети страни със заобикаляне','8 от 10',80,'#1FB8CD']]);
bars(document.getElementById('psx-lat'),[
['Медианно създаване, предишен доставчик','185 ms',41.4,'#5E5B66'],
['Медианно създаване, SPACE','60 ms',13.4,'#20808D'],
['p90 създаване, предишен доставчик','447 ms',100,'#5E5B66'],
['p90 създаване, SPACE','89 ms',19.9,'#20808D']]);
function anim(p){p.querySelectorAll('.fill').forEach(function(f){f.style.width='0';setTimeout(function(){f.style.width=f.dataset.w+'%'},60)})}
tabs.forEach(function(t){t.onclick=function(){var i=+t.dataset.t;tabs.forEach(function(x,j){x.classList.toggle('on',j==i)});panes.forEach(function(p,j){p.classList.toggle('on',j==i)});anim(panes[i]);post()}});
window.addEventListener('load',post);window.addEventListener('resize',post);setTimeout(post,300);
})();
</script>
</body>
</html>
">
Как SPACE се сравнява с други отворени пясъчници?
| Функция | Perplexity SPACE | E2B Runtime | microsandbox | Daytona |
|---|---|---|---|---|
| Изолация | Firecracker microVM за всеки пясъчник | Firecracker microVM за всеки пясъчник | libkrun microVM | Отделно ядро за всеки пясъчник |
| Лиценз | Apache 2.0 | Apache 2.0 | Apache 2.0 | Публично хранилище, неподдържано от юни 2026 г. |
| Език | Rust | Go | Rust | Не е разкрит |
| Изисквания към хоста | Linux x86_64 + KVM | Не е разкрито | Linux с KVM | Не е разкрито |
| Контрол на изходящия трафик | Шлюз за всеки пясъчник, прекратяване на TLS | nftables защитна стена, списъци със SNI/Host | Не е разкрито | Не е разкрито |
| Тест на изходящия трафик на Perplexity | 0 заобикаляния след корекцията | HTTPS заобикаляне, планирано ограничаване | HTTP + HTTPS заобикаляне, корекция във v0.6.18 | HTTPS заобикаляне, ограничаването е публикувано |
| Поддръжка на E2B SDK | Да, чрез ECW обвивка | Нативна | Не е разкрита | Не е разкрита |
Как разработчиците разгръщат SPACE?
Ръководството за инсталация разгръща SPACE в локален Kind клъстер. Хостът се нуждае от /dev/kvm, /dev/net/tun, loop устройства и btrfs. Работата във виртуална машина изисква вложена виртуализация.
Екипите, които вече използват E2B, могат да изпробват обвивката за съвместимост с E2B. Тестваната ѝ базова версия е Python пакетът e2b==2.21.1. В хранилището е включено примерно AWS EKS разгръщане.
Основни изводи
- SPACE изпълнява всяка задача на агента в собствена Firecracker microVM.
- Идентификационните данни и политиката за изходящия трафик се намират извън гост виртуалната машина.
- При тестовете на червен екип 0 от 108 опита за излизане са достигнали хоста.
- Заобикалянията на изходящия трафик са засегнали 11 от 54 изпълнения преди корекциите и 0 след тях.
- Apache 2.0, Rust, изисква Linux x86_64 хост с KVM.
Разгледайте хранилището в GitHub, документацията и доклада на червения екип. Цялата заслуга е на изследователя на този проект. Също така, можете да ни последвате в Twitter и не забравяйте да се присъедините към нашия ML SubReddit с над 150 хил. членове и да се абонирате за нашия бюлетин. Чакайте! В Telegram ли сте? Сега можете да се присъедините към нас и в Telegram.
Преведено автоматично от английски. Оригиналната статия е на връзката по-долу.