فتحت Perplexity مصدر SPACE، منصة صندوق الحماية التي يقف خلف كل مهمة في Perplexity Computer. يمنح صندوق حماية Perplexity SPACE كل مهمة وكيلٍ microVM خاصاً بها من Firecracker. وتُدار بيانات الاعتماد وحركة المرور الصادرة من خارج ذلك الـ VM. ويُطرح الكود بموجب Apache 2.0 على GitHub. بالنسبة للفرق التي تبني وكلاء برمجة أو تصفح، فهذه طبقة عزل مُختبَرة في الإنتاج يمكنها استضافتها ذاتياً.
TL;DR
- الحجم: قاعدة كود Rust، الإصدار 0.8.0، الأساس العام. HTTP API مع أحداث server-sent events.
- يعمل على: جهاز Linux x86_64 مزوّد بـ KVM,
/dev/kvm، وbtrfs وDocker. وضع Kind محلي (Kubernetes) أو الوضع المباشر. لا يدعم macOS. - الأداء: في الإنتاج، انخفض زمن الإنشاء الوسيط من 185 ms إلى 60 ms مقارنةً بمزوّد Perplexity السابق.
- الأفضل: 0 من أصل 108 محاولة هروب من VM إلى المضيف نجحت عبر 9 نماذج رائدة.
- الأسوأ: قبل الإصلاحات، تجاوز الوكلاء سياسة egress في 11 من أصل 54 تشغيلاً جزئي الشبكة.
ما هو Perplexity SPACE؟
SPACE (Sandboxed Platform for Agentic Code Execution) هي منصة Perplexity لتشغيل كود الوكلاء داخل microVMs معزولة. تستدعي التطبيقات واجهة HTTP API لإنشاء بيئات Linux وتشغيل الأوامر وبث المخرجات.
A template يوفر نظام الملفات الابتدائي. أما sandbox فهو نسخة واحدة من ذلك القالب، بجهازها الافتراضي الخاص وقرص قابل للكتابة. يمكن تشغيل العديد من الأوامر داخل sandbox واحد.
يشرح مؤشر الإطلاق الخاص بـ Perplexity هدف التصميم. تقوم الوكلاء (Agents) بتشغيل الأوامر، وتثبيت الحزم، واستدعاء الخدمات بصلاحيات الجذر (root) داخل الـ sandbox. ويبقى المضيف خارج سيطرة الضيف. عمل الوكلاء طويل الأمد وذي حالة ومتفرّع، لذا يجب أن ينجو من عمليات إعادة التشغيل.
كيف تعزل SPACE الوكلاء؟
كل sandbox هو Firecracker microVM بنواة ضيف خاصة به. وتفرض بوابة شبكة خاصة بكل sandbox على المضيف سياسة الخروج على كل اتصال صادر.
الأسرار لا تدخل الضيف إطلاقًا. فبحسب منشور Perplexity الهندسي لشهر يوليو، يتم حقن بيانات الاعتماد على مستوى الشبكة. ويضيف مخزن بيانات الاعتماد نطاقًا هرميًا، وحدود معدل، وتسجيلًا للتدقيق.
يقسّم دليل البنية النظام إلى 4 أجزاء. وهي واجهة برمجية مدعومة بـ PostgreSQL، ووحدات تحكم (controllers)، وخدمات عمال (workers)، ومستوى بيانات (data plane). تدير خدمات العمال الأجهزة الافتراضية والشبكات والأقراص والقوالب وبيانات الاعتماد. وينشئ btrfs بنظام النسخ عند الكتابة (copy-on-write) كل نظام ملفات جذري.
كيف يعمل الإيقاف المؤقت والتعليق والاستعادة؟
تتحرك الـ sandboxes عبر 4 حالات: قيد التشغيل، متوقفة مؤقتًا (paused)، معلّقة (suspended)، ومحذوفة.
- متوقفة مؤقتًا (Paused): تبقى ذاكرة الجهاز الافتراضي مقيمة على العامل. وهذه ليست لقطة دائمة.
- معلّقة (Suspended): يتم أخذ لقطة لذاكرة الجهاز الافتراضي وحالة التشغيل ونظام الملفات الجذري. وتُحرَّر الموارد النشطة.
- الوضع الافتراضي عند الخمول: تتحول الـ sandboxes إلى التعليق بعد 6 ساعات بدون نشاط.
لإنشاءات سريعة، تستخدم عمليات نشر Kubernetes مجموعات دافئة (warm pools) من الـ sandboxes المحمّلة مسبقًا. أما إعدادات العقدة الواحدة فتستخدم لقطات أساسية (base snapshots) بدلًا من ذلك.
في بيئة الإنتاج، انخفض زمن التأخير في الإنشاء عند المئين 90 من 447 مللي ثانية إلى 89 مللي ثانية. وتشير تقارير Perplexity إلى أن 100% من جلسات Computer تعمل على SPACE.
هل نجا SPACE من اختبار الفريق الأحمر؟
اختبارات الهروب من SPACE: الجزء الأول اختبر التقرير 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 وعناوين IP مشتركة لشبكات CDN.
أضاف Perplexity بعد ذلك التحقق من عنوان المصدر عبر nftables. تُنهي البوابة الآن اتصال TLS وتتحقق من كل من SNI ومضيف HTTP مقابل قائمة السماح. في إعادة الاختبار، لم يُنتج أي نموذج تجاوزًا مُوثَّقًا.
اختبر الفريق نفسه 10 منصات من أطراف ثالثة. أظهرت 8 منها تجاوزًا واحدًا على الأقل لسياسة الشبكة. أبلغ Perplexity النتائج إلى كل مزوّد متأثر.
زوز</button><button class="btn" id="psx-next">التالي </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: الجزء الأول (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>microVM بـ Firecracker</td><td>microVM بـ Firecracker</td><td>microVM بـ libkrun</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> تحصل كل مهمة على microVM خاصة بها عبر Firecracker مع نواة ضيف خاصة بها. يمكن للوكيل تشغيل الأوامر وتثبيت الحزم بصلاحية 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> تُنفَّذ العمليات. تُحفظ ذاكرة VM الحية ونظام الملفات القابل للكتابة.', '<b>متوقف مؤقتًا.</b> يتوقف التنفيذ. تبقى ذاكرة VM مقيمة على العامل. هذا ليس لقطة دائمة.', '<b>معلّق.</b> تُؤخذ لقطة من ذاكرة VM وحالة التشغيل ونظام الملفات الجذري. تُحرَّر موارد VM النشطة. الافتراضي: التعليق بعد 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 |
|---|---|---|---|---|
| العزل | microVM من Firecracker لكل بيئة حماية | microVM من Firecracker لكل بيئة حماية | microVM من libkrun | نواة مخصصة لكل بيئة حماية |
| الترخيص | 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 يشغّل كل مهمة وكيل في microVM خاص بها من نوع Firecracker.
- بيانات الاعتماد وسياسة الصادر (egress) تعيش خارج الجهاز الافتراضي الضيف.
- 0 من 108 محاولة هروب وصلت إلى المضيف في اختبارات الفريق الأحمر.
- تجاوزات الصادر (egress) أصابت 11 من 54 تشغيلًا قبل الإصلاحات، و0 بعدها.
- رخصة Apache 2.0، مكتوب بـ Rust، يحتاج إلى مضيف Linux x86_64 مع KVM.
اطلع على مستودع GitHub، و الوثائق و تقرير الفريق الأحمر. كل الفضل يعود إلى باحث هذا المشروع. كما لا تترددوا في متابعتنا على تويتر ولا تنسَ الانضمام إلى 150k+ML SubReddit والاشتراك في نشرةنا البريدية. مهلاً! هل أنت على تيليجرام؟ يمكنك الآن الانضمام إلينا على تيليجرام أيضاً.
ظهر المقال Perplexity تفتح مصدر SPACE، صندوق حماية Firecracker MicroVM لوكلاء الذكاء الاصطناعي أولاً على MarkTechPost.