การสร้าง SPACE: รันไทม์ที่ปลอดภัยและมีประสิทธิภาพสำหรับเอเจนต์ที่ทำงานยาวนาน
SPACE คือแพลตฟอร์มแซนด์บ็อกซ์ที่ปลอดภัยและมีประสิทธิภาพของ Perplexity ซึ่งขับเคลื่อนเวิร์กโฟลว์ของเอเจนต์ที่ทำงานยาวนานและการรันโค้ดแบบแยกส่วนที่รวดเร็ว
ในขณะที่เวิร์กโฟลว์ของเอเจนต์มีความยาวนานและเป็นอิสระมากขึ้น สภาพแวดล้อมที่เอเจนต์ AI ทำงานอยู่ก็มีความสำคัญไม่แพ้โมเดลที่ขับเคลื่อนมัน เอเจนต์จำเป็นต้องทำงานจริง เช่น การรันโค้ด การแก้ไขไฟล์สิสเต็ม และการดำเนินการงานหลายขั้นตอนเป็นเวลาหลายชั่วโมงหรือหลายวัน ผู้ใช้ต้องการให้เอเจนต์เข้าถึงเครื่องมือและไฟล์ที่จำเป็นในการทำงานเหล่านี้ แต่ในขณะเดียวกันก็ต้องมั่นใจด้วยว่าระบบของพวกเขาจะยังคงปลอดภัยแม้ว่าเอเจนต์จะถูกบุกรุก แซนด์บ็อกซ์คือสิ่งทำให้ทั้งหมดนี้เป็นไปได้: สภาพแวดล้อมแบบไอโซเลทที่เอเจนต์สามารถทำงานได้อย่างอิสระ ในขณะที่โฮสต์ ผู้เช่ารายอื่น และข้อมูลรับรองที่มีความละเอียดอ่อนยังคงได้รับการปกป้อง
แนวทางแซนด์บ็อกซ์แบบคอนเทนเนอร์แบบดั้งเดิมไม่ได้ถูกออกแบบมาสำหรับงานเหล่านี้ โดยทั่วไปแนวทางเหล่านี้จะสันนิษฐานว่าเป็นงานอายุสั้นและไร้สถานะ (stateless) และมีเคอร์เนลเป็นจุดเดียวที่อาจทำให้เกิดความล้มเหลว ในทางตรงกันข้าม เซสชันของเอเจนต์จะมีอายุยาวนานและมีสถานะ (stateful): เอเจนต์สะสมบริบทนานหลายชั่วโมง ระบบไฟล์สำหรับการทำงาน และกระบวนการรันที่ไม่อาจแค่โยนทิ้งแล้วสร้างขึ้นใหม่จากศูนย์ได้ ยิ่งไปกว่านั้น เวิร์กโหลดภายในควรไม่ได้รับความเชื่อถือโดยค่าเริ่มต้น ซึ่งจำเป็นต้องมีมาตรการรักษาความปลอดภัยที่แข็งแกร่งยิ่งขึ้น เซสชันเอเจนต์ที่ทำงานยาวนานต้องการซับสเตรตที่สามารถแยกเกสต์ที่ไม่เป็นมิตร รักษาความปลอดภัยสถานะของมัน และยังคงสามารถใช้งานได้ในสเกลใหญ่
ความท้าทายหลักในการวิศวกรรมแซนด์บ็อกซ์มาจากความตึงเครียดที่มักเกิดขึ้นระหว่างความปลอดภัย ฟังก์ชันการทำงาน และประสิทธิภาพ ตัวอย่างเช่น:
การให้สิทธิ์การเข้าถึงที่กว้างขึ้นช่วยให้เอเจนต์ทำอะไรได้มากขึ้น แต่ก็เปิดเผยระบบส่วนใหญ่ให้กับเวิร์กโหลดที่คุณไม่ไว้วางใจ
การแชร์ข้อมูลระหว่างแซนด์บ็อกซ์มากขึ้นทำให้การสร้างเร็วขึ้น แต่ก็ขยายพื้นที่ผิวของการโจมตีให้กว้างขึ้น
การบันทึกสโ냅ช็อตบ่อยขึ้นช่วยปรับปรุงการกู้คืนและเปิดใช้งานฟีเจอร์ต่างๆ เช่น การย้อนกลับ แต่ต้องใช้เวลาและพื้นที่จัดเก็บ
แซนด์บ็อกซ์ของเอเจนต์ เช่น แซนด์บ็อกซ์ที่จำเป็นสำหรับการรันโค้ด ใช้ Agent Skills หรือดำเนินการไปป์ไลน์ Search as Code ในคิวรีของ Computer จำเป็นต้องใช้ทั้งสามอย่าง เราทำงานอย่างหนักในช่วงสองสามเดือนที่ผ่านมาเพื่อวิศวกรรมโครงสร้างพื้นฐานของเอเจนต์รุ่นถัดไปที่ขับเคลื่อนผลิตภัณฑ์ของเรา วันนี้เราขอแนะนำ SPACE (Sandboxed Platform for Agentic Code Execution): แพลตฟอร์มแซนด์บ็อกซ์ที่สร้างขึ้นสำหรับเวิร์กโฟลว์ของเอเจนต์ที่มีความปลอดภัย น่าเชื่อถือ และมีประสิทธิภาพในสเกลใหญ่ เมื่อเดือนที่แล้ว เราเริ่มเปิดตัว SPACE เป็นเลเยอร์แซนด์บ็อกซ์ที่ขับเคลื่อน Perplexity Computer ตลอดสัปดาห์ที่ผ่านมา ระบบได้รองรับการสร้างแซนด์บ็อกซ์อย่างปลอดภัยหลายล้านครั้ง และการเชื่อมต่อใหม่หลายสิบล้านครั้ง โดยมีเวลาในการสปินอัปเร็วกว่าโซลูชันก่อนหน้าของเรา 3-5 เท่า
บทความนี้นำเสนอการตัดสินใจด้านสถาปัตยกรรมและการออกแบบที่อยู่เบื้องหลัง SPACE นับตั้งแต่วันนี้เป็นต้นไป 100% ของเซสชัน Computer ทำงานบน SPACE แล้ว เราตื่นเต้นที่จะปรับใช้แพลตฟอร์มนี้กับพื้นผิวที่มากยิ่งขึ้น เพื่อมอบรันไทม์ของเอเจนต์ที่ดีที่สุดในระดับเดียวกันให้กับผู้ใช้และนักพัฒนาของเรา
สถาปัตยกรรม
ในระดับสูง ระบบถูกจัดระเบียบออกเป็นสามเลเยอร์
ระนาบการควบคุม (control plane) คือสมองของระบบ ซึ่งทำหน้าที่ตัดสินใจว่าสิ่งใดควรมีอยู่และอยู่ที่ไหน ประกอบด้วยเกตเวย์ API และโมดูลการจัดการสถานะระดับคลัสเตอร์
บริการระดับโหนด (node-local services) คือกลไกภายในเครื่องที่จำเป็นในการดำเนินการตามแผนของระนาบการควบคุม พวกมันเป็นเจ้าของวงจรชีวิตของแซนด์บ็อกซ์ ที่เก็บข้อมูล ระบบเครือข่าย และการดำเนินการที่มีสิทธิ์พิเศษเบื้องหลังสิ่งเหล่านี้
แซนด์บ็อกซ์คือสภาพแวดล้อมการทำงานแบบแยกส่วนด้วยตัวมันเอง ถูกนำไปใช้งานเป็นเครื่องเสมือนที่จับคู่กับ space-daemon ซึ่งเป็นกระบวนการเบื้องหลังในเกสต์ที่ทำหน้าที่เป็นตัวกลางในการเข้าถึงระบบไฟล์ กระบวนการ และเครือข่ายสำหรับเวิร์กโหลด

ระนาบการควบคุม
เกตเวย์ API คือจุดเริ่มต้น คำขอขาเข้าได้รับการตรวจสอบสิทธิ์และอนุญาต จากนั้นจึงแปลเป็นบันทึกของสถานะที่ต้องการ
ระนาบการควบคุมถูกออกแบบมาให้ไร้สถานะ (stateless) โดยข้อมูลที่คงทนทั้งหมดจะถูกถ่ายโอนไปยังฐานข้อมูลที่ใช้ร่วมกัน มันติดตามข้อมูลระดับคลัสเตอร์เกี่ยวกับแซนด์บ็อกซ์ เช่น โหนดที่พวกมันถูกกำหนดให้อยู่ ตำแหน่งที่พวกมันกำลังทำงาน และข้อมูลว่าพวกมันได้รับการสำรองข้อมูลไปยังที่เก็บข้อมูลที่คงทนแล้วหรือไม่ มันเปรียบเทียบสถานะที่ต้องการกับสถานะที่สังเกตเห็นอย่างต่อเนื่องและผลักดันให้ทั้งสองเข้าสู่การบรรจบกัน การดำเนินการมีความเป็นไอเด็มโพเทนต์ (idempotent) ดังนั้นระนาบการควบคุมจึงสามารถกู้คืนโดยอัตโนมัติหลังจากการขัดข้อง การรีสตาร์ท หรือความล้มเหลวบางส่วน
บริการระดับโหนด
บริการระดับโหนดทำงานจริงในการเตรียมเทมเพลต การเริ่มแซนด์บ็อกซ์ การเดินสายเครือข่าย และการรันบริการรันไทม์ฝั่งโหนด แต่ละโหนดจะรันชุดเดมอนขนาดเล็กที่จัดการแซนด์บ็อกซ์ทุกตัวที่วางอยู่บนโหนดนั้น และโหนดคือแหล่งข้อมูลที่น่าเชื่อถือสำหรับสถานะสดของแซนด์บ็อกซ์เหล่านั้น
ตัวจัดการแซนด์บ็อกซ์ทราบว่าแซนด์บ็อกซ์ใดกำลังทำงาน หยุดชั่วคราว ระงับ หรือหยุดทำงาน พร้อมทั้งทรัพยากรจริงของพวกมัน มันทำงานโดยไม่มีสิทธิ์พิเศษและมอบหมายงานที่มีสิทธิ์พิเศษทั้งหมดให้กับตัวจัดการโหนด ซึ่งเป็นกระบวนการรูทเพียงกระบวนการเดียวที่ทำหน้าที่เป็นตัวกลางพริมิทิฟพื้นฐาน การจัดเก็บข้อมูลได้รับการจัดการภายในเครื่องและคงทนถาวร: สโ냅ช็อตของสถานะแซนด์บ็อกซ์ปัจจุบันจะถูกบันทึกไว้บนโหนด และตัวจัดการโวลุ่มจะย้ายสโ냅ช็อตและเทมเพลตเข้าและออกจากที่เก็บข้อมูลออบเจ็กต์ตามต้องการเพื่อให้สามารถดำเนินการข้ามโหนดได้ เกตความปลอดภัยคอยควบคุมสิ่งที่แซนด์บ็อกซ์สามารถเข้าถึงได้: ตัวจัดการข้อมูลรับรองจะควบคุมการฉีดข้อมูลรับรองภายใต้การอนุญาตต่อบริการ และเกตเวย์เครือข่ายจะบังคับใช้นโยบายการออกนอกเครือข่าย (egress) ของแซนด์บ็อกซ์แต่ละตัว
แซนด์บ็อกซ์
ตัวแซนด์บ็อกซ์เองคือเครื่องเสมือน (VM) ที่มีเคอร์เนลเกสต์ของตัวเอง ทำหน้าที่รันเวิร์กโหลดของผู้ใช้หลังขอบเขตการแยกฮาร์ดแวร์ เนื่องจากแซนด์บ็อกซ์แต่ละตัวมีเคอร์เนลของตัวเอง เวิร์กโหลดที่ถูกบุกรุกจึงไม่สามารถพึ่งพาเคอร์เนลโสต์ที่ใช้ร่วมกันเป็นจุดเดียวที่อาจทำให้เกิดความล้มเหลวได้ แม้ว่าจะใช้ประโยชน์จากเคอร์เนลเกสต์สำเร็จ การบุกรุกนั้นก็จะจำกัดอยู่แค่ขอบเขต VM ของแซนด์บ็อกซ์ แทนที่จะแพร่กระจายไปยังเวิร์กโหลดอื่นๆ
space daemon ทำงานภายในเครื่องเสมือนแต่ละเครื่อง ทำหน้าที่เป็นเอเจนต์น้ำหนักเบาที่ควบคุมทุกการกระทำหรือการแก้ไขที่แพลตฟอร์มดำเนินการภายในเกสต์ มันจัดการการเข้าถึงระบบไฟล์และการจัดการกระบวนการ นอกจากนี้ยังรายงานความพร้อมของเกสต์และติดตามกิจกรรม เพื่อให้แพลตฟอร์มทราบว่าเมื่อใดที่แซนด์บ็อกซ์เข้าสู่สถานะว่างและสามารถหยุดชั่วคราวหรือเรียกคืนได้ ที่สำคัญ space daemon ไม่ได้สื่อสารกับไคลเอนต์โดยตรง แต่จะสื่อสารกับโฮสต์ผ่านช่องทางส่วนตัวภายใน VM แทน วิธีนี้ช่วยให้การโต้ตอบของเกสต์ทั้งหมดอยู่บนเส้นทางที่มีการควบคุม และสงวนเครือข่ายของแซนด์บ็อกซ์ไว้สำหรับทราฟฟิกขาออกของเวิร์กโหลดเท่านั้น
สามเสาหลัก: ความปลอดภัย ฟังก์ชันการทำงาน และประสิทธิภาพ
ถัดไป เราจะเจาะลึกถึงคุณสมบัติหลักที่ SPACE ต้องส่งมอบให้ครอบคลุมสามเสาหลัก ได้แก่ ความปลอดภัย ฟังก์ชันการทำงาน และประสิทธิภาพ ดังที่ได้กล่าวไว้ก่อนหน้านี้ ทั้งสามสิ่งนี้มีความขัดแย้งกันเอง ถึงกระนั้น เราก็ไม่สามารถประนีประนอมกับข้อใดข้อหนึ่งได้หากเราต้องการสนับสนุนเอเจนต์ทรงพลังที่ก้าวทันขีดความสามารถของโมเดลในปัจจุบัน ความปลอดภัยช่วยป้องกันไม่ให้เวิร์กโหลดที่ไม่น่าเชื่อถือและอาจเป็นอันตรายสร้างความเสียหายต่อโฮสต์ ผู้ผู้เช่ารายอื่น หรือความลับของผู้ใช้ ฟังก์ชันการทำงานช่วยให้เอเจนต์มีวงจรชีวิตที่สมบูรณ์ตามที่ต้องการ ประสิทธิภาพทำให้ทั้งหมดนี้คุ้มค่าภายใต้หน่วยความจำ ดิสก์ และการประมวลผลที่มีอยู่อย่างจำกัด
ความปลอดภัย: การปกป้องข้อมูลและระบบ
แพลตฟอร์มแซนด์บ็อกซ์จำเป็นต้องมีความปลอดภัยที่แข็งแกร่งเพื่อให้แน่ใจว่าโค้ดที่ผิดพลาดหรือแม้แต่โค้ดประสงค์ร้ายที่ทำงานภายในแซนด์บ็อกซ์จะไม่ก่อให้เกิดผลกระทบที่เป็นอันตรายในส่วนอื่นๆ หากไม่มีการบังคับใช้การควบคุมการออกนอกเครือข่ายที่รัดกุมและการเก็บความลับให้อยู่ภายนอกแซนด์บ็อกซ์ การเดินหมากผิดเพียงครั้งเดียวของเอเจนต์อาจทำให้คีย์ของผู้ใช้รั่วไหลหรือขโมยข้อมูลงานออกไปได้

SPACE ใช้แนวทางแบบเป็นชั้นในการรับรองความปลอดภัยสำหรับแซนด์บ็อกซ์ การแยกแซนด์บ็อกซ์มีสองส่วน ได้แก่ การแยก VM และการแยกกระบวนการของระบบปฏิบัติการโหนด ทั้งสองอย่างนี้ต้องถูกเจาะทะลุจึงจะสามารถเข้าถึงข้ามแซนด์บ็อกซ์ได้ การสื่อสารกับแซนด์บ็อกซ์ถูกควบคุมอย่างเข้มงวด กระบวนการต่างๆ สามารถสื่อสารผ่านช่องทางเฉพาะเท่านั้น เกตเวย์เครือข่ายบังคับให้การออกนอกเครือข่ายทั้งหมดต้องผ่านตัวมันเอง space daemon เป็นช่องทางเดียวที่ได้รับอนุญาตระหว่างแซนด์บ็อกซ์ (ที่ไม่น่าเชื่อถือ) และแพลตฟอร์ม (ที่น่าเชื่อถือ)
ข้อมูลรับรองจะไม่ถูกเก็บบันทึกไว้ในจุดที่เอเจนต์สามารถขโมยได้ ที่เก็บข้อมูลรับรองจะตั้งอยู่นอกขอบเขตของแซนด์บ็อกซ์และมีหน้าที่รับผิดชอบต่อวงจรชีวิตของข้อมูลรับรอง มันจัดเก็บและดึงข้อมูลลับผ่านแบ็กเอนด์ห้องนิรภัยที่ถอดเปลี่ยนได้ (pluggable vault) แก้ไขข้อมูลรับรองโดยใช้ขอบเขตแบบลำดับชั้น จัดการข้อมูลเมตา เช่น วิธีการฉีดและวันหมดอายุ และบังคับใช้อัตราการจำกัดและการบันทึกการตรวจสอบสำหรับการเข้าถึงทั้งหมด เมื่อจำเป็น ข้อมูลรับรองจะถูกฉีดที่เลเยอร์เครือข่ายหรือกรอกโดยอัตโนมัติโดยเบราว์เซอร์เอเจนต์ แทนที่จะเข้าสู่แซนด์บ็อกซ์โดยตรง
ข้อมูลได้รับการปกป้องเมื่อไม่ได้ใช้งาน (at rest) SPACE รองรับ BYOK (Bring Your Own Key) เพื่อปกป้องข้อมูลที่จัดเก็บไว้ภายนอก คีย์การเข้ารหัสมาจากบริการจัดการคีย์ของลูกค้าและจะไม่เข้าสู่แซนด์บ็อกซ์ หากองค์กรเพิกถอนคีย์ ข้อมูลของพวกเขาจะไม่สามารถอ่านได้
ฟังก์ชันการทำงาน: การขับเคลื่อนเวิร์กโฟลว์ของเอเจนต์
เพื่อสนับสนุนเวิร์กโฟลว์ของเอเจนต์ แซนด์บ็อกซ์จำเป็นต้องมีการสนับสนุนวงจรชีวิตที่สมบูรณ์ พวกมันจะต้องถูกสร้างขึ้นอย่างรวดเร็วและในสเกลใหญ่ เนื่องจากเอเจนต์อาจสปินอัปหลายตัวพร้อมกันและไม่ควรต้องรอให้ตัวใดบูตขึ้นมา พวกมันจะต้องคงอยู่ได้นานอย่างไม่มีกำหนด เนื่องจากเซสชันหนึ่งอาจกินเวลาไม่กี่นาทีหรือทำงานเป็นเวลาหลายเดือน พวกมันจะต้องหยุดชั่วคราวได้อย่างสะอาดหมดจด บางครั้งเป็นเวลานาน เช่น เมื่อภารกิจถูกบล็อกรออินพุตจากมนุษย์ และพวกมันจะต้องรองรับการแยกสาขา (forking) การย้อนกลับ และการกู้คืนจากการขัดข้อง เพื่อให้เซสชันสามารถแยกแขนง เลิกทำขั้นตอนที่ผิดพลาด หรือกลับมาทำงานต่อหลังจากเกิดข้อผิดพลาดแทนที่จะต้องเริ่มต้นใหม่ทั้งหมด
SPACE รองรับคุณสมบัติทั้งหมดข้างต้น โดยจำลองวงจรชีวิตของแซนด์บ็อกซ์ทั้งหมดเป็นเครื่องมือสถานะ (state machine) ที่ชัดเจน ซึ่งเป็นสิ่งที่ทำให้การดำเนินการต่างๆ เช่น การสร้าง การหยุดชั่วคราว การดำเนินการต่อ การระงับ และการกู้คืน สามารถเป็นไปได้

สโ냅ช็อตคือกลไกเบื้องหลังความสามารถเหล่านี้ส่วนใหญ่ ตัวกำหนดตารางเวลา (scheduler) จะทำงานตามช่วงเวลาปกติและจับภาพสโ냅ช็อตสองประเภท: สโ냅ช็อตดิสก์ (สำเนาของระบบไฟล์ ณ จุดเวลาใดเวลาหนึ่ง) และสโ냅ช็อตแบบเต็ม (จุดตรวจสอบของ VM ที่หยุดชั่วคราวทั้งหมด) สโ냅ช็อตดิสก์จะถูกบันทึกบ่อยครั้ง ในขณะที่จุดตรวจสอบแบบเต็มจะพบน้อยกว่า ทุกอย่างยังคงอยู่บนโหนด และการเก็บรักษาจะเสื่อมลงตามระดับชั้น สโ냅ช็อตเหล่านี้สามารถใช้สำหรับการกู้คืนภายในเซสชัน ตัวอย่างเช่น สโ냅ช็อตดิสก์สามารถใช้เพื่อย้อนระบบไฟล์กลับเพื่อยกเลิกคำสั่งที่ทำลายข้อมูล และจุดตรวจสอบแบบเต็มช่วยให้แซนด์บ็อกซ์ที่ขัดข้องสามารถกลับมาทำงานต่อได้ที่จุดรันล่าสุดแทนที่จะเป็นดิสก์ที่เย็น
เมื่อแซนด์บ็อกซ์ถูกระงับ VM จะถูกหยุดชั่วคราว สโ냅ช็อตแบบเต็มจะถูกถ่าย และอาร์ทิแฟกต์จากสโ냅ช็อตแบบเต็มจะถูกอัปโหลดไปยังที่เก็บข้อมูลออบเจ็กต์ แถวในฐานข้อมูลจะติดตามสโ냅ช็อตและจะสามารถกู้คืนได้ก็ต่อเมื่ออาร์ทิแฟกต์ทุกตัวถูกอัปโหลดเสร็จสมบูรณ์แล้วเท่านั้น ดังนั้นสโ냅ช็อตที่อัปโหลดเพียงบางส่วนจึงไม่สามารถกลับมาทำงานต่อในสถานะที่เสียหายได้ การกู้คืนคือกระบวนการผกผันของการระงับ เนื่องจากสโ냅ช็อตอยู่ในที่เก็บข้อมูลออบเจ็กต์แทนที่จะอยู่บนโหนดเดิม โหนดใดๆ ก็สามารถนำแซนด์บ็อกซ์กลับมาได้ ตัวกำหนดตารางเวลาจะเลือกโหนด โหนดนั้นจะดาวน์โหลดอาร์ทิแฟกต์ ใช้เดลตาของระบบไฟล์ทับเทมเพลต และดำเนินการ VM ต่อจากสถานะที่ถูกจับภาพไว้
ประสิทธิภาพ: การปรับแต่งเวลาและพื้นที่
การใช้งานฟีเจอร์ข้างต้นในสุญญากาศนั้นยังไม่เพียงพอ แต่พวกมันยังต้องเป็นไปได้ภายใต้ข้อจำกัดด้านทรัพยากรที่คับแคบ หน่วยความจำและดิสก์บนโหนดมีจำกัด และผู้ใช้ต้องการให้เอเจนต์ทำงานให้เร็วที่สุด ดังนั้นการดำเนินการเกี่ยวกับวงจรชีวิตจึงต้องประหยัดทั้งในด้านเวลาและพื้นที่ เราไม่สามารถแบกรับต้นทุนในการคัดลอกอิมเมจเครื่องเต็มรูปแบบทุกครั้งที่มีการสร้าง หยุดชั่วคราว หรือแยกสาขาแซนด์บ็อกซ์ได้
ตัวเลือกการออกแบบที่สำคัญทำให้สิ่งนี้เป็นไปได้: ระบบไฟล์ SPACE ใช้ btrfs เป็นระบบไฟล์บนโหนดสำหรับการจัดเก็บแซนด์บ็อกซ์ Btrfs (ระบบไฟล์ B-tree) ผสมผสานระบบไฟล์แบบคัดลอกเมื่อเขียน (copy-on-write) เข้ากับการจัดการโวลุ่มตรรกะแบบบูรณาการ ซึ่งมีประโยชน์หลายประการ:
สำเนา Reflink ทำได้รวดเร็ว เนื่องจากคุณแชร์เอกเซนต์ (extents) เบื้องต้น ดังนั้นจึงจำเป็นต้องคัดลอกเฉพาะข้อมูลเมตาเท่านั้น
สโ냅ช็อตเป็นแบบอะตอมิกและรวดเร็ว เนื่องจากคุณเพียงแค่สร้างรูทใหม่
ต้องใช้พื้นที่จัดเก็บน้อยที่สุด เนื่องจากคุณจัดเก็บเฉพาะส่วนที่เปลี่ยนแปลงไปเท่านั้น
ส่งผลให้สามารถสร้างและกู้คืนแซนด์บ็อกซ์ได้อย่างรวดเร็ว แทนที่จะสร้างแซนด์บ็อกซ์จากศูนย์ทุกครั้ง เราเก็บพูลพอดที่อุ่น (warm pool) ซึ่งมีเทมเพลตทั่วไปที่พร้อมใช้งานบนดิสก์อยู่แล้ว และตอบสนองคำขอโดยการผูกมันเข้ากับพอดที่มีเทมเพลตตรงกัน การให้ระบบไฟล์รูทที่เขียนได้แก่แซนด์บ็อกซ์นั้นจึงเป็นการโคลนแบบคัดลอกเมื่อเขียน (copy-on-write) แทนที่จะเป็นการคัดลอกแบบเต็มรูปแบบ เมื่อไม่มีพอดอุ่นที่เหมาะสม เราจะสร้างเทมเพลตตามความต้องการ เราจะรวมคำขอพร้อมกันสำหรับอิมเมจเดียวกันให้เป็นการดาวน์โหลดเดี่ยว ดังนั้นการพรั่งพรูของคำขอที่เหมือนกันจึงไม่กลายเป็นการทำงานที่ซ้ำซ้อนกัน
ผลลัพธ์ที่ได้คือรันไทม์ของแซนด์บ็อกซ์ที่มีทรงพลัง น้ำหนักเบา และรวดเร็วปานสายฟ้า เมื่อเราเปิดตัว SPACE เราได้รันมันควบคู่ไปกับผู้ให้บริการแซนด์บ็อกซ์รายก่อนหน้าของเราบนทราฟฟิกการผลิตเดียวกัน ตลอดสัปดาห์เปิดตัว SPACE สร้างแซนด์บ็อกซ์ได้เร็วกว่าเดิมถึงสามถึงห้าเท่าตลอดการแจกแจง โดยเฉพาะอย่างยิ่ง ค่ามัธยฐานของความหน่วงในการสร้างลดลงจาก 185 มิลลิวินาทีเหลือ 60 มิลลิวินาที (ปรับปรุงขึ้น 3.1 เท่า) และความหน่วงในเปอร์เซ็นต์ไทล์ที่ 90 ลดลงจาก 447 มิลลิวินาทีเหลือ 89 มิลลิวินาที (ปรับปรุงขึ้น 5.0 เท่า) เราสังเกตเห็นการปรับปรุงในระดับความสำคัญที่คล้ายคลึงกันในตัวชี้วัดประสิทธิภาพและการใช้ทรัพยากรอื่นๆ

นอกจากนี้ยังช่วยให้การถ่ายสโ냅ช็อตดิสก์แบบหมุนเวียน (rolling disk snapshots) เป็นเรื่องง่าย เนื่องจากมีความรวดเร็ว ประหยัดพื้นที่ และไม่ต้องหยุดแซนด์บ็อกซ์ นอกจากนี้ การจัดเก็บเดลตาที่มีประสิทธิภาพยังช่วยลดพื้นที่ที่จำเป็นในการจัดเก็บสโ냅ช็อตเหล่านี้ด้วย
บทสรุป
เมื่อออกแบบระบบที่ซับซ้อน มักจะดึงดูดใจให้เลือกวัตถุประสงค์เพียงอย่างเดียวเพื่อเพิ่มประสิทธิภาพแบบแยกส่วน แต่นักพัฒนาของเอเจนต์ระดับแนวหน้าเรียกร้องความปลอดภัย ฟังก์ชันการทำงาน และประสิทธิภาพในสัดส่วนที่เท่ากัน ด้วย SPACE เราตั้งเป้าที่จะบรรลุการปรับปรุงแบบพาเรโต (Pareto improvement) ในทั้งสามเสาหลัก
ตัวเลือกการออกแบบแต่ละรายการสามารถตอบสนองเป้าหมายหลายประการได้พร้อมกัน ทำให้ความสมดุลที่ละเอียดอ่อนนี้เป็นไปได้ VM แบบต่อแซนด์บ็อกซ์ทำให้เวิร์กโหลดแต่ละรายการมีเคอร์เนลของตัวเอง เสริมสร้างความปลอดภัยผ่านการแยกส่วนที่แข็งแกร่ง ในขณะเดียวกันก็ให้ขอบเขตจุดตรวจสอบที่สะอาดซึ่งสโ냅ช็อตพึ่งพา Btrfs ช่วยให้การใช้งานสโ냅ช็อต การแยกสาขา และการดำเนินการอื่นๆ ที่จำเป็นต่อรันไทม์ของเอเจนต์มีประสิทธิภาพ space daemon ช่วยให้การโต้ตอบของเกสต์ทั้งหมดอยู่บนเส้นทางฝั่งโหนดที่มีการควบคุม ผนึกขอบเขตระหว่างเกสต์และโหนด ในขณะที่ยังคงรักษาอิสระในการเคลื่อนไหวของเอเจนต์ไว้ เกตเวย์เครือข่ายส่วนกลางทำหน้าที่ไกล่เกลี่ยการออกนอกเครือข่ายและการฉีดข้อมูลรับรองโดยไม่เปิดเผยความลับให้กับเกสต์เลย
ผลลัพธ์จากการตัดสินใจออกแบบเหล่านี้และอื่นๆ คือแพลตฟอร์มที่ช่วยให้สามารถประสานการทำงานของเอเจนต์ในโลกแห่งความเป็นจริงในสเกลใหญ่ SPACE มอบซับสเตรตที่เอเจนต์ที่มีอายุยาวนานและมีสถานะ (stateful) สามารถจัดการงานที่มีความซับซ้อนหรือระยะเวลาตามอำเภอใจได้อย่างปลอดภัย โดยไม่ต้องเสียสละประสิทธิภาพหรือความปลอดภัย
ปัจจุบัน SPACE ขับเคลื่อนเซสชัน Perplexity Computer หลายล้านเซสชันแล้ว เราตั้งใจให้ SPACE ทำหน้าที่เป็นเลเยอร์แบบ 통합 สำหรับการจัดเตรียมและการควบคุมแซนด์บ็อกซ์ในทุกการตั้งค่า ตั้งแต่วันที่ Linux microVMs ไปจนถึง Windows guests ไปจนถึงเครื่องภายในของผู้ใช้เอง เรากำลังทำงานอย่างหนักในการผลักดัน SPACE เข้าสู่การตั้งค่าใหม่เหล่านี้ เพื่อให้นักพัฒนาสามารถส่งมอบผลิตภัณฑ์ AI ที่ทำงานได้ทุกที่ที่ผู้ใช้ทำงาน
หากคุณกระตือรือร้นที่จะร่วมกำหนดเลเยอร์การประมวลผลที่ขับเคลื่อนเอเจนต์ระดับแนวหน้าของวันพรุ่งนี้ เราขอเชิญคุณ เข้าร่วมทีมของเรา