การสร้าง SPACE: รันไทม์ที่ปลอดภัยและมีประสิทธิภาพสำหรับเอเจนต์ที่ทำงานยาวนาน

SPACE คือแพลตฟอร์มแซนด์บ็อกซ์ที่ปลอดภัยและมีประสิทธิภาพของ Perplexity ซึ่งขับเคลื่อนเวิร์กโฟลว์ของเอเจนต์ที่ทำงานยาวนานและการรันโค้ดแบบแยกส่วนที่รวดเร็ว

ผู้เขียนPerplexity Engineering

ในขณะที่เวิร์กโฟลว์ของเอเจนต์มีความยาวนานและเป็นอิสระมากขึ้น สภาพแวดล้อมที่เอเจนต์ AI ทำงานอยู่ก็มีความสำคัญไม่แพ้โมเดลที่ขับเคลื่อนมัน เอเจนต์จำเป็นต้องทำงานจริง เช่น การรันโค้ด การแก้ไขระบบไฟล์ และการดำเนินการงานหลายขั้นตอนเป็นเวลาหลายชั่วโมงหรือหลายวัน ผู้ใช้ต้องการให้เอเจนต์เข้าถึงเครื่องมือและไฟล์ที่จำเป็นในการทำงานเหล่านี้ แต่ในขณะเดียวกันก็ต้องมั่นใจด้วยว่าระบบของพวกเขาจะยังคงปลอดภัยแม้ว่าเอเจนต์จะถูกบุกรุก แซนด์บ็อกซ์คือสิ่งทำให้ทั้งหมดนี้เป็นไปได้: สภาพแวดล้อมแบบไอโซเลทที่เอเจนต์สามารถทำงานได้อย่างอิสระ ในขณะที่โฮสต์ ผู้เช่ารายอื่น และข้อมูลรับรองที่มีความละเอียดอ่อนยังคงได้รับการปกป้อง

แนวทางแซนด์บ็อกซ์แบบคอนเทนเนอร์แบบดั้งเดิมไม่ได้ถูกออกแบบมาสำหรับงานเหล่านี้ โดยทั่วไปแนวทางเหล่านี้จะสันนิษฐานว่าเป็นงานอายุสั้นและไร้สถานะ (stateless) และมีเคอร์เนลเป็นจุดเดียวที่อาจทำให้เกิดความล้มเหลว ในทางตรงกันข้าม เซสชันของเอเจนต์จะมีอายุยาวนานและมีสถานะ (stateful): เอเจนต์สะสมบริบทนานหลายชั่วโมง ระบบไฟล์สำหรับการทำงาน และกระบวนการรันที่ไม่อาจแค่โยนทิ้งแล้วสร้างขึ้นใหม่จากศูนย์ได้ ยิ่งไปกว่านั้น เวิร์กโหลดภายในควรไม่ได้รับความเชื่อถือโดยค่าเริ่มต้น ซึ่งจำเป็นต้องมีมาตรการรักษาความปลอดภัยที่แข็งแกร่งยิ่งขึ้น เซสชันเอเจนต์ที่ทำงานยาวนานต้องการซับสเตรตที่สามารถแยกเกสต์ที่ไม่เป็นมิตร รักษาสถานะของมันไว้ และยังคงสามารถใช้งานได้ในสเกลใหญ่

ความท้าทายหลักในการวิศวกรรมแซนด์บ็อกซ์มาจากความตึงเครียดที่มักเกิดขึ้นระหว่างความปลอดภัย ฟังก์ชันการทำงาน และประสิทธิภาพ ตัวอย่างเช่น:

  • การให้สิทธิ์การเข้าถึงที่กว้างขึ้นช่วยให้เอเจนต์ทำอะไรได้มากขึ้น แต่ก็เปิดเผยระบบในวงกว้างขึ้นให้กับเวิร์กโหลดที่คุณไม่ไว้วางใจ
  • การใช้ทรัพยากรร่วมกันระหว่างแซนด์บ็อกซ์มากขึ้นช่วยให้สร้างแซนด์บ็อกซ์ได้เร็วขึ้น แต่ก็ทำให้พื้นผิวการโจมตีกว้างขึ้นด้วย
  • การสร้างสแนปช็อตบ่อยขึ้นช่วยให้กู้คืนระบบได้ดีขึ้นและรองรับฟีเจอร์อย่างการย้อนกลับ (rollback) ได้ แต่ก็ต้องใช้เวลาและพื้นที่จัดเก็บข้อมูล

แซนด์บ็อกซ์ของเอเจนต์ เช่น แซนด์บ็อกซ์ที่จำเป็นสำหรับการรันโค้ด ใช้ 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 ซึ่งเป็นกระบวนการเบื้องหลังในเกสต์ที่ทำหน้าที่เป็นตัวกลางในการเข้าถึงระบบไฟล์ กระบวนการ และเครือข่ายสำหรับเวิร์กโหลด

สถาปัตยกรรมของ SPACE แบ่งออกเป็นสามเลเยอร์: ระนาบการควบคุมแบบไร้สถานะ (stateless control plane); บริการระดับโหนดที่จัดการวงจรชีวิตของแซนด์บ็อกซ์ พื้นที่เก็บข้อมูล และเกตความปลอดภัย และตัวแซนด์บ็อกซ์เอง

ระนาบการควบคุม

เกตเวย์ API คือจุดเริ่มต้น คำขอขาเข้าได้รับการตรวจสอบสิทธิ์และอนุญาต จากนั้นจึงแปลเป็นบันทึกของสถานะที่ต้องการ

ระนาบการควบคุมถูกออกแบบมาให้ไร้สถานะ (stateless) โดยข้อมูลที่คงทนทั้งหมดจะถูกถ่ายโอนไปยังฐานข้อมูลที่ใช้ร่วมกัน มันติดตามข้อมูลระดับคลัสเตอร์เกี่ยวกับแซนด์บ็อกซ์ เช่น โหนดที่พวกมันถูกกำหนดให้อยู่ ตำแหน่งที่พวกมันกำลังทำงาน และข้อมูลว่าพวกมันได้รับการสำรองข้อมูลไปยังที่เก็บข้อมูลที่คงทนแล้วหรือไม่ มันเปรียบเทียบสถานะที่ต้องการกับสถานะที่สังเกตเห็นอย่างต่อเนื่องและผลักดันให้ทั้งสองเข้าสู่การบรรจบกัน การดำเนินการมีความเป็นไอเด็มโพเทนต์ (idempotent) ดังนั้นระนาบการควบคุมจึงสามารถกู้คืนโดยอัตโนมัติหลังจากการขัดข้อง การรีสตาร์ท หรือความล้มเหลวบางส่วน

บริการระดับโหนด

บริการระดับโหนดทำงานจริงในการเตรียมเทมเพลต การเริ่มแซนด์บ็อกซ์ การเดินสายเครือข่าย และการรันบริการรันไทม์ฝั่งโหนด แต่ละโหนดจะรันชุดเดมอนขนาดเล็กที่จัดการแซนด์บ็อกซ์ทุกตัวที่วางอยู่บนโหนดนั้น และโหนดคือแหล่งข้อมูลที่น่าเชื่อถือสำหรับสถานะสดของแซนด์บ็อกซ์เหล่านั้น

ตัวจัดการแซนด์บ็อกซ์รู้ว่าแซนด์บ็อกซ์ใดกำลังทำงาน หยุดชั่วคราว ระงับ หรือหยุดอยู่ พร้อมทั้งทรัพยากรจริงของแต่ละรายการ มันทำงานแบบไม่มีสิทธิ์ระดับสูง และมอบหมายงานที่ต้องใช้สิทธิ์ทั้งหมดไปยังตัวจัดการโหนด ซึ่งเป็นโปรเซสรูทเดียวที่ทำหน้าที่เป็นตัวกลางให้กับ primitive พื้นฐานต่างๆ การจัดเก็บข้อมูลจัดการในเครื่องและคงทน: สแนปช็อตของสถานะแซนด์บ็อกซ์ปัจจุบันจะถูกบันทึกไว้บนโหนด และตัวจัดการวอลุ่มจะย้ายสแนปช็อตและเทมเพลตไปยังและจากออบเจ็กต์สตอเรจตามความจำเป็นเพื่อเปิดใช้งานการดำเนินการข้ามโหนด เกตความปลอดภัยคอยป้องกันว่าแซนด์บ็อกซ์จะเข้าถึงอะไรได้บ้าง: ตัวจัดการข้อมูลรับรองกำกับการแทรกข้อมูลรับรองภายใต้การอนุญาตเฉพาะบริการ และเกตเวย์เครือข่ายบังคับใช้นโยบายการออกขาออกของแซนด์บ็อกซ์แต่ละรายการ

แซนด์บ็อกซ์

ตัวแซนด์บ็อกซ์เองคือเครื่องเสมือน (VM) ที่มีเคอร์เนลเกสต์ของตัวเอง ทำหน้าที่รันเวิร์กโหลดของผู้ใช้หลังขอบเขตการแยกฮาร์ดแวร์ เนื่องจากแซนด์บ็อกซ์แต่ละตัวมีเคอร์เนลของตัวเอง เวิร์กโหลดที่ถูกบุกรุกจึงไม่สามารถพึ่งพาเคอร์เนลโสต์ที่ใช้ร่วมกันเป็นจุดเดียวที่อาจทำให้เกิดความล้มเหลวได้ แม้ว่าจะใช้ประโยชน์จากเคอร์เนลเกสต์สำเร็จ การบุกรุกนั้นก็จะจำกัดอยู่แค่ขอบเขต VM ของแซนด์บ็อกซ์ แทนที่จะแพร่กระจายไปยังเวิร์กโหลดอื่นๆ

space daemon ทำงานภายในเครื่องเสมือนแต่ละเครื่อง ทำหน้าที่เป็นเอเจนต์น้ำหนักเบาที่ควบคุมทุกการกระทำหรือการแก้ไขที่แพลตฟอร์มดำเนินการภายในเกสต์ มันจัดการการเข้าถึงระบบไฟล์และการจัดการกระบวนการ นอกจากนี้ยังรายงานความพร้อมของเกสต์และติดตามกิจกรรม เพื่อให้แพลตฟอร์มทราบว่าเมื่อใดที่แซนด์บ็อกซ์เข้าสู่สถานะว่างและสามารถหยุดชั่วคราวหรือเรียกคืนได้ ที่สำคัญ space daemon ไม่ได้สื่อสารกับไคลเอนต์โดยตรง แต่จะสื่อสารกับโฮสต์ผ่านช่องทางส่วนตัวภายใน VM แทน วิธีนี้ช่วยให้การโต้ตอบของเกสต์ทั้งหมดอยู่บนเส้นทางที่มีการควบคุม และสงวนเครือข่ายของแซนด์บ็อกซ์ไว้สำหรับทราฟฟิกขาออกของเวิร์กโหลดเท่านั้น

สามเสาหลัก: ความปลอดภัย ฟังก์ชันการทำงาน และประสิทธิภาพ

ถัดไป เราจะเจาะลึกถึงคุณสมบัติหลักที่ SPACE ต้องส่งมอบให้ครอบคลุมสามเสาหลัก ได้แก่ ความปลอดภัย ฟังก์ชันการทำงาน และประสิทธิภาพ ดังที่ได้กล่าวไว้ก่อนหน้านี้ ทั้งสามสิ่งนี้มีความขัดแย้งกันเอง ถึงกระนั้น เราก็ไม่สามารถประนีประนอมกับข้อใดข้อหนึ่งได้หากเราต้องการสนับสนุนเอเจนต์ทรงพลังที่ก้าวทันขีดความสามารถของโมเดลในปัจจุบัน ความปลอดภัยช่วยป้องกันไม่ให้เวิร์กโหลดที่ไม่น่าเชื่อถือและอาจเป็นอันตรายสร้างความเสียหายต่อโฮสต์ ผู้เช่ารายอื่น หรือความลับของผู้ใช้ ฟังก์ชันการทำงานช่วยให้เอเจนต์มีวงจรชีวิตที่สมบูรณ์ตามที่ต้องการ ประสิทธิภาพทำให้ทั้งหมดนี้คุ้มค่าภายใต้หน่วยความจำ ดิสก์ และการประมวลผลที่มีอยู่อย่างจำกัด

ความปลอดภัย: การปกป้องข้อมูลและระบบ

แพลตฟอร์มแซนด์บ็อกซ์จำเป็นต้องมีความปลอดภัยที่แข็งแกร่งเพื่อให้แน่ใจว่าโค้ดที่ผิดพลาดหรือแม้แต่โค้ดประสงค์ร้ายที่ทำงานภายในแซนด์บ็อกซ์จะไม่ก่อให้เกิดผลกระทบที่เป็นอันตรายในส่วนอื่นๆ หากไม่มีการบังคับใช้การควบคุมการออกนอกเครือข่ายที่รัดกุมและการเก็บความลับให้อยู่ภายนอกแซนด์บ็อกซ์ การเดินหมากผิดเพียงครั้งเดียวของเอเจนต์อาจทำให้คีย์ของผู้ใช้รั่วไหลหรือขโมยข้อมูลงานออกไปได้

SPACE บังคับใช้ความปลอดภัยแบบเป็นชั้นโดยการรวมการแยกในระดับ VM และโฮสต์ เข้ากับช่องทางการสื่อสาร การจัดการข้อมูลรับรอง และการเข้ารหัสที่มีการควบคุมอย่างเข้มงวด

SPACE ใช้แนวทางแบบเป็นชั้นในการรับรองความปลอดภัยสำหรับแซนด์บ็อกซ์ การแยกแซนด์บ็อกซ์มีสองส่วน ได้แก่ การแยก VM และการแยกกระบวนการของระบบปฏิบัติการโหนด ทั้งสองอย่างนี้ต้องถูกเจาะทะลุจึงจะสามารถเข้าถึงข้ามแซนด์บ็อกซ์ได้ การสื่อสารกับแซนด์บ็อกซ์ถูกควบคุมอย่างเข้มงวด กระบวนการต่างๆ สามารถสื่อสารผ่านช่องทางเฉพาะเท่านั้น เกตเวย์เครือข่ายบังคับให้การออกนอกเครือข่ายทั้งหมดต้องผ่านตัวมันเอง space daemon เป็นช่องทางเดียวที่ได้รับอนุญาตระหว่างแซนด์บ็อกซ์ (ที่ไม่น่าเชื่อถือ) และแพลตฟอร์ม (ที่น่าเชื่อถือ)

ข้อมูลรับรองจะไม่ถูกเก็บบันทึกไว้ในจุดที่เอเจนต์สามารถขโมยได้ ที่เก็บข้อมูลรับรองจะตั้งอยู่นอกขอบเขตของแซนด์บ็อกซ์และมีหน้าที่รับผิดชอบต่อวงจรชีวิตของข้อมูลรับรอง มันจัดเก็บและดึงข้อมูลลับผ่านแบ็กเอนด์ห้องนิรภัยที่ถอดเปลี่ยนได้ (pluggable vault) ค้นหาข้อมูลรับรองโดยใช้ขอบเขตแบบลำดับชั้น จัดการข้อมูลเมตา เช่น วิธีการฉีดและวันหมดอายุ และบังคับใช้อัตราการจำกัดและการบันทึกการตรวจสอบสำหรับการเข้าถึงทั้งหมด เมื่อจำเป็น ข้อมูลรับรองจะถูกฉีดที่เลเยอร์เครือข่ายหรือกรอกโดยอัตโนมัติโดยเบราว์เซอร์เอเจนต์ แทนที่จะเข้าสู่แซนด์บ็อกซ์โดยตรง

ข้อมูลได้รับการปกป้องเมื่อไม่ได้ใช้งาน (at rest) SPACE รองรับ BYOK (Bring Your Own Key) เพื่อปกป้องข้อมูลที่จัดเก็บไว้ภายนอก คีย์การเข้ารหัสมาจากบริการจัดการคีย์ของลูกค้าและจะไม่เข้าสู่แซนด์บ็อกซ์ หากองค์กรเพิกถอนคีย์ ข้อมูลของพวกเขาจะไม่สามารถอ่านได้

ฟังก์ชันการทำงาน: การขับเคลื่อนเวิร์กโฟลว์ของเอเจนต์

เพื่อสนับสนุนเวิร์กโฟลว์ของเอเจนต์ แซนด์บ็อกซ์จำเป็นต้องมีการสนับสนุนวงจรชีวิตที่สมบูรณ์ พวกมันจะต้องถูกสร้างขึ้นอย่างรวดเร็วและในสเกลใหญ่ เนื่องจากเอเจนต์อาจสปินอัปหลายตัวพร้อมกันและไม่ควรต้องรอให้ตัวใดบูตขึ้นมา พวกมันจะต้องคงอยู่ได้นานอย่างไม่มีกำหนด เนื่องจากเซสชันหนึ่งอาจกินเวลาไม่กี่นาทีหรือทำงานเป็นเวลาหลายเดือน พวกมันจะต้องหยุดชั่วคราวได้อย่างสะอาดหมดจด บางครั้งเป็นเวลานาน เช่น เมื่อภารกิจถูกบล็อกรออินพุตจากมนุษย์ และพวกมันจะต้องรองรับการแยกสาขา (forking) การย้อนกลับ และการกู้คืนจากการขัดข้อง เพื่อให้เซสชันสามารถแยกแขนง เลิกทำขั้นตอนที่ผิดพลาด หรือกลับมาทำงานต่อหลังจากเกิดข้อผิดพลาดแทนที่จะต้องเริ่มต้นใหม่ทั้งหมด

SPACE รองรับคุณสมบัติทั้งหมดข้างต้น โดยจำลองวงจรชีวิตของแซนด์บ็อกซ์ทั้งหมดเป็นเครื่องสถานะ (state machine) ที่ชัดเจน ซึ่งเป็นสิ่งที่ทำให้การดำเนินการต่างๆ เช่น การสร้าง การหยุดชั่วคราว การดำเนินการต่อ การระงับ และการกู้คืน สามารถเป็นไปได้

ชุดย่อยหลักของสถานะแซนด์บ็อกซ์และการเปลี่ยนผ่านสถานะช่วยให้เกิดการสนับสนุนวงจรชีวิตที่สมบูรณ์

สแนปช็อตคือกลไกพื้นฐานที่รองรับความสามารถเหล่านี้ส่วนใหญ่ ตัวตั้งเวลาเดินงานตามช่วงเวลาปกติและจับสแนปช็อตสองประเภท: สแนปช็อตดิสก์ (สำเนาของระบบไฟล์ ณ จุดเวลาใดเวลาหนึ่ง) และสแนปช็อตแบบเต็ม (จุดบันทึกสถานะของ 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 เท่า) เราสังเกตเห็นการปรับปรุงในระดับใกล้เคียงกันในแง่ของลำดับขนาดในตัวชี้วัดประสิทธิภาพและการใช้ทรัพยากรอื่นๆ

ในการเปรียบเทียบโดยตรง ความหน่วงในการสร้างสำหรับแซนด์บ็อกซ์ SPACE เร็วกว่าโซลูชันแซนด์บ็อกซ์ก่อนหน้าของเราสูงสุดถึง 5 เท่า

มันยังทำให้การถ่ายสแนปช็อตดิสก์แบบต่อเนื่องทำได้ง่าย เพราะมีความเร็ว ใช้พื้นที่อย่างมีประสิทธิภาพ และไม่จำเป็นต้องพักแซนด์บ็อกซ์ และการจัดเก็บเดลต้าที่มีประสิทธิภาพยังช่วยลดพื้นที่ที่ต้องใช้ในการจัดเก็บสแนปช็อตเหล่านี้

บทสรุป

เมื่อออกแบบระบบที่ซับซ้อน มักจะดึงดูดใจให้เลือกวัตถุประสงค์เพียงอย่างเดียวเพื่อเพิ่มประสิทธิภาพแบบแยกส่วน แต่นักพัฒนาของเอเจนต์ระดับแนวหน้าเรียกร้องความปลอดภัย ฟังก์ชันการทำงาน และประสิทธิภาพในสัดส่วนที่เท่ากัน ด้วย SPACE เราตั้งเป้าที่จะบรรลุการปรับปรุงแบบพาเรโต (Pareto improvement) ในทั้งสามเสาหลัก

การตัดสินใจด้านการออกแบบแต่ละอย่างสามารถรองรับหลายเป้าหมายได้พร้อมกัน ทำให้สมดุลที่ละเอียดอ่อนนี้เป็นไปได้ VM แยกต่อแซนด์บ็อกซ์มอบเคอร์เนลของตัวเองให้กับแต่ละเวิร์กโหลด เสริมความปลอดภัยผ่านการแยกที่แข็งแกร่ง ขณะเดียวกันก็ให้ขอบเขตจุดบันทึกสถานะที่ชัดเจนซึ่งสแนปช็อตต้องอาศัย Btrfs ช่วยให้การใช้งานการถ่ายสแนปช็อต การฟอร์ก และการดำเนินการอื่นๆ ที่จำเป็นต่อรันไทม์แบบเอเจนติกเป็นไปอย่างมีประสิทธิภาพ เดมอน space จะคงการโต้ตอบทั้งหมดของ guest ไว้บนเส้นทางฝั่งโฮสต์ที่ควบคุมได้ ปิดผนึกขอบเขต guest-host ในขณะที่ยังคงความอิสระในการเคลื่อนที่ของเอเจนต์ไว้ เกตเวย์เครือข่ายส่วนกลางเป็นตัวกลางในการออกขาออกและการแทรกข้อมูลรับรอง โดยไม่เคยเปิดเผยความลับให้แก่ guest

ผลลัพธ์จากการตัดสินใจออกแบบเหล่านี้และอื่นๆ คือแพลตฟอร์มที่ช่วยให้สามารถประสานการทำงานของเอเจนต์ในโลกแห่งความเป็นจริงในสเกลใหญ่ SPACE มอบซับสเตรตที่เอเจนต์ที่มีอายุยาวนานและมีสถานะ (stateful) สามารถจัดการงานที่มีความซับซ้อนระดับใดก็ได้หรือใช้เวลานานเท่าใดก็ได้อย่างปลอดภัย โดยไม่ต้องเสียสละประสิทธิภาพหรือความปลอดภัย

ปัจจุบัน SPACE ขับเคลื่อนเซสชัน Perplexity Computer หลายล้านเซสชันแล้ว เราตั้งใจให้ SPACE ทำหน้าที่เป็นเลเยอร์แบบรวมเป็นหนึ่งเดียว สำหรับการจัดเตรียมและการควบคุมแซนด์บ็อกซ์ในทุกสภาพแวดล้อม ตั้งแต่ Linux microVMs ไปจนถึง Windows guests ไปจนถึงเครื่องท้องถิ่นของผู้ใช้เอง เรากำลังทำงานอย่างหนักในการผลักดัน SPACE เข้าสู่สภาพแวดล้อมใหม่เหล่านี้ เพื่อให้นักพัฒนาสามารถส่งมอบผลิตภัณฑ์ AI ที่ทำงานได้ทุกที่ที่ผู้ใช้ทำงาน

หากคุณกระตือรือร้นที่จะร่วมกำหนดเลเยอร์การประมวลผลที่ขับเคลื่อนเอเจนต์ระดับแนวหน้าของวันพรุ่งนี้ เราขอเชิญคุณ เข้าร่วมทีมของเรา

การอ้างอิง

BibTeX
@online{perplexity2026MakingSpaceSecureAndEfficientRuntimesForLongRunningAgents,
  author = {{Perplexity} and Kumar Pallav and Nick Dujay and Zibi Braniecki and Dmitry Pervukhin and Gigi Sayfan and Mostafa Abdelraouf and Nikhil Birmiwal and Rohin Bhasin and Shrikant Pandhare and Nikitha Lokareddy and Phi Hoang and Claire Beamer and Jeremy Yang and Jerry Ma},
  title = {{Making SPACE: Secure and efficient runtimes for long-running agents}},
  date = {2026-07-15},
  url = {https://www.perplexity.ai/hub/blog/making-space-secure-and-efficient-runtimes-for-long-running-agents}
}