Tạo SPACE: Thời gian chạy an toàn và hiệu quả cho các tác nhân chạy dài

SPACE là nền tảng sandbox bảo mật và hiệu quả của Perplexity, cung cấp năng lượng cho các quy trình làm việc mang tính tác nhân chạy dài và thực thi mã cô lập, nhanh chóng.

Tác giảPerplexity Engineering

Khi các quy trình làm việc mang tính tác nhân (agentic) ngày càng dài hơn và tự trị hơn, các môi trường mà các tác nhân AI hoạt động cũng trở nên quan trọng không kém các mô hình điều khiển chúng. Các tác nhân cần thực hiện công việc thực tế, chẳng hạn như chạy mã, chỉnh sửa hệ thống tệp và thực thi các tác vụ nhiều bước trong nhiều giờ hoặc nhiều ngày. Người dùng muốn các tác nhân có quyền truy cập vào các công cụ và tệp cần thiết để thực hiện các tác vụ này, nhưng đồng thời cũng cần tin tưởng rằng hệ thống của họ sẽ được bảo mật ngay cả khi các tác nhân bị xâm phạm. Một sandbox chính là yếu tố làm cho tất cả những điều này có thể thực hiện được: một môi trường cô lập nơi một tác nhân có thể hoạt động tự do trong khi máy chủ, các đối tượng thuê khác và thông tin đăng nhập nhạy cảm vẫn được bảo vệ.

Các phương pháp sandbox dựa trên container truyền thống không được thiết kế cho các tác vụ này. Chúng thường giả định các công việc ngắn hạn, phi trạng thái (stateless) và có kernel làm điểm lỗi duy nhất. Ngược lại, các phiên hoạt động của tác nhân là dài hạn và có trạng thái (stateful): một tác nhân tích lũy hàng giờ ngữ cảnh, một hệ thống tệp đang làm việc và các tiến trình đang chạy không thể đơn giản bị vứt đi và tái tạo lại từ đầu. Hơn nữa, khối lượng công việc bên trong theo mặc định phải được coi là không đáng tin cậy, đòi hỏi các biện pháp bảo mật mạnh mẽ hơn. Các phiên hoạt động kéo dài của tác nhân cần một nền tảng có thể cô lập một khách (guest) độc hại, bảo lưu trạng thái của nó và vẫn có thể vận hành ở quy mô lớn.

Thách thức chính trong kỹ thuật sandbox xuất phát từ sự căng thẳng thường nảy sinh giữa tính bảo mật, tính năng và hiệu quả. Ví dụ:

Cấp quyền truy cập rộng hơn cho phép một tác nhân hoàn thành nhiều việc hơn nhưng lại phơi bày nhiều phần hơn của hệ thống trước một khối lượng công việc mà bạn không tin tưởng.

Chia sẻ nhiều hơn giữa các sandbox giúp việc tạo ra nhanh hơn nhưng làm mở rộng bề mặt tấn công.

Chụp ảnh nhanh (snapshot) thường xuyên hơn giúp cải thiện khả năng khôi phục và hỗ trợ các tính năng như khôi phục trạng thái (rollback) nhưng đòi hỏi thời gian và dung lượng lưu trữ.

Các sandbox mang tính tác nhân, như những sandbox cần thiết để thực thi mã, sử dụng Agent Skills, hoặc thực hiện các đường ống Search as Code trong các truy vấn Computer, đều cần cả ba yếu tố trên. Chúng tôi đã nỗ lực làm việc trong suốt vài tháng qua để thiết kế thế hệ cơ sở hạ tầng tác nhân tiếp theo cung cấp năng lượng cho các sản phẩm của mình. Hôm nay, chúng tôi giới thiệu SPACE (Sandboxed Platform for Agentic Code Execution): một nền tảng sandbox được xây dựng cho các quy trình làm việc mang tính tác nhân, đảm bảo tính bảo mật, đáng tin cậy và hiệu quả ở quy mô lớn. Tháng trước, chúng tôi đã bắt đầu triển khai SPACE làm lớp sandbox cung cấp năng lượng cho Perplexity Computer. Trong tuần qua, nền tảng này đã hỗ trợ an toàn cho hàng triệu lượt tạo sandbox và hàng chục triệu lượt kết nối lại, với thời gian khởi động nhanh hơn từ 3 đến 5 lần so với giải pháp trước đây của chúng tôi.

Bài viết này trình bày các quyết định về kiến trúc và thiết kế đằng sau SPACE. Tính đến hôm nay, 100% các phiên của Computer hiện đang chạy trên SPACE. Chúng tôi rất hào hứng khi triển khai nền tảng này trên nhiều bề mặt hơn nữa để mang lại thời gian chạy tác nhân tốt nhất trong phân khúc cho người dùng và nhà phát triển của mình.

Kiến trúc

Ở mức độ tổng quan, hệ thống được tổ chức thành ba lớp.

Mặt phẳng điều khiển (control plane) là bộ não của hệ thống, quyết định những gì nên tồn tại và ở đâu. Nó bao gồm cổng API (API gateway) và các mô-đun quản lý trạng thái ở cấp độ cụm (cluster).

Các dịch vụ cục bộ trên nút (node-local services) là cỗ máy cục bộ cần thiết để thực thi kế hoạch của mặt phẳng điều khiển. Chúng quản lý vòng đời của sandbox, lưu trữ, mạng và các hoạt động đặc quyền đằng sau chúng.

Sandbox chính là môi trường thực thi được cô lập. Nó được triển khai như một máy ảo đi kèm với không gian trình nền space-daemon: một tiến trình nền trong khách (in-guest) có nhiệm vụ môi giới quyền truy cập hệ thống tệp, tiến trình và mạng cho khối lượng công việc.

Kiến trúc của SPACE được chia thành ba lớp: mặt phẳng điều khiển phi trạng thái; các dịch vụ cục bộ trên nút quản lý vòng đời sandbox, lưu trữ và cổng an toàn; và bản thân sandbox.

Mặt phẳng điều khiển

Cổng API là điểm truy cập. Các yêu cầu đến được xác thực và cấp quyền, sau đó được dịch thành các bản ghi trạng thái mong muốn.

Mặt phẳng điều khiển được thiết kế phi trạng thái, với toàn bộ thông tin bền vững được chuyển ra cơ sở dữ liệu chia sẻ. Nó theo dõi thông tin cấp độ cụm về các sandbox, chẳng hạn như chúng được chỉ định cho nút nào, chúng đang chạy ở đâu và liệu chúng đã được sao lưu vào bộ lưu trữ bền vững hay chưa. Nó liên tục so sánh trạng thái mong muốn với trạng thái quan sát được và thúc đẩy cả hai tiến tới hội tụ. Các hoạt động mang tính bất biến (idempotent), vì vậy mặt phẳng điều khiển có thể tự động phục hồi sau bất kỳ sự cố sập nguồn, khởi động lại hoặc lỗi một phần nào đó.

Dịch vụ cục bộ trên nút

Các dịch vụ cục bộ trên nút thực hiện công việc thực tế là chuẩn bị các mẫu (template), khởi động các sandbox, kết nối mạng và chạy các dịch vụ thời gian chạy ở phía máy chủ. Mỗi nút chạy một tập hợp nhỏ các trình nền quản lý mọi sandbox được đặt trên đó, và nút này là nguồn chân lý (source of truth) cho trạng thái trực tiếp của các sandbox đó.

Trình quản lý sandbox biết sandbox nào đang chạy, tạm dừng, bị đình chỉ hoặc đã dừng, cùng với tài nguyên thực tế của chúng. Nó chạy dưới dạng không có đặc quyền và ủy quyền tất cả công việc có đặc quyền cho trình quản lý nút (node manager), tiến trình gốc duy nhất môi giới các nguyên thủy cơ bản. Lưu trữ được xử lý cục bộ và bền vững: các bản chụp nhanh (snapshot) của trạng thái sandbox hiện tại được lưu trên nút, và trình quản lý ổ đĩa di chuyển các bản chụp nhanh và mẫu đến và đi từ bộ lưu trữ đối tượng khi cần thiết để hỗ trợ các hoạt động xuyên nút. Các cổng an toàn bảo vệ những gì sandbox có thể tiếp cận: trình quản lý thông tin đăng nhập quản lý việc tiêm thông tin đăng nhập theo ủy quyền cho từng dịch vụ, và cổng mạng thực thi chính sách lưu lượng truy cập đi (egress) của từng sandbox.

Sandbox

Bản thân sandbox là một máy ảo (VM) có kernel khách riêng, chạy khối lượng công việc của người dùng phía sau ranh giới cô lập phần cứng. Do mỗi sandbox có kernel riêng, một khối lượng công việc bị xâm phạm không thể quay lại phụ thuộc vào kernel máy chủ được chia sẻ làm điểm lỗi duy nhất; ngay cả khi nó khai thác thành công kernel khách của mình, sự xâm phạm đó vẫn bị giới hạn trong ranh giới máy ảo của sandbox chứ không lan rộng sang các khối lượng công việc khác.

Một trình nền không gian space chạy bên trong mỗi máy ảo, đóng vai trò là một tác nhân nhẹ điều tiết mọi hành động hoặc sửa đổi mà nền tảng thực hiện bên trong máy khách. Nó xử lý quyền truy cập hệ thống tệp và quản lý tiến trình. Nó cũng báo cáo trạng thái sẵn sàng của máy khách và theo dõi hoạt động, để nền tảng biết khi nào sandbox chuyển sang trạng thái nhàn rỗi và có thể bị tạm dừng hoặc thu hồi. Quan trọng nhất, trình nền không gian space không giao tiếp trực tiếp với các ứng dụng khách mà thay vào đó giao tiếp với máy chủ qua một kênh riêng bên trong máy ảo. Điều này giữ cho mọi tương tác của máy khách nằm trên một đường dẫn được kiểm soát và dành riêng mạng của sandbox hoàn toàn cho lưu lượng truy cập đi của khối lượng công việc.

Ba trụ cột: Bảo mật, Tính năng và Hiệu quả

Tiếp theo, chúng ta đi sâu vào các thuộc tính quan trọng mà SPACE phải đạt được trên ba trụ cột: bảo mật, tính năng và hiệu quả. Như đã lưu ý trước đó, ba yếu tố này tác động trái chiều lẫn nhau. Tuy nhiên, chúng ta không thể thỏa hiệp với bất kỳ yếu tố nào nếu muốn hỗ trợ các tác nhân mạnh mẽ đáp ứng được khả năng mô hình của ngày hôm nay. Bảo mật giữ cho khối lượng công việc không đáng tin cậy, có khả năng độc hại không làm hại máy chủ, các đối tượng thuê khác hoặc bí mật của người dùng. Tính năng cung cấp cho các tác nhân vòng đời phong phú mà chúng cần. Hiệu quả làm cho tất cả những điều này trở nên khả thi trong điều kiện bộ nhớ, đĩa và năng lực tính toán hữu hạn.

Bảo mật: Bảo vệ Dữ liệu và Hệ thống

Các nền tảng sandbox cần có bảo mật mạnh mẽ để đảm bảo rằng mã bị lỗi hoặc thậm chí độc hại chạy bên trong sandbox không thể gây ra các tác động có hại ở nơi khác. Nếu không thực thi kiểm soát lưu lượng đi chặt chẽ và giữ các bí mật tránh xa sandbox, một bước đi sai lầm duy nhất của tác nhân có thể làm rò rỉ khóa của người dùng hoặc đánh cắp dữ liệu công việc.

SPACE thực thi bảo mật nhiều lớp bằng cách kết hợp tính cô lập ở mức máy ảo và máy chủ với các kênh liên lạc được kiểm soát chặt chẽ, quản lý thông tin đăng nhập và mã hóa.

SPACE áp dụng phương pháp tiếp cận nhiều lớp để đảm bảo an toàn cho các sandbox. Việc cô lập sandbox có hai thành phần, cô lập máy ảo và cô lập tiến trình hệ điều hành máy chủ. Cả hai đều phải bị phá vỡ để có thể truy cập xuyên sandbox. Giao tiếp với sandbox được kiểm soát chặt chẽ; các tiến trình chỉ có thể giao tiếp thông qua các kênh chuyên dụng. Cổng mạng ép buộc tất cả lưu lượng đi phải đi qua nó. Trình nền không gian space là kênh được phê duyệt duy nhất giữa sandbox (không đáng tin cậy) và nền tảng (đáng tin cậy).

Thông tin đăng nhập không bao giờ nằm ở nơi tác nhân có thể đánh cắp chúng. Kho lưu trữ thông tin đăng nhập nằm bên ngoài ranh giới sandbox và chịu trách nhiệm về vòng đời của thông tin đăng nhập. Nó lưu trữ và truy xuất các bí mật thông qua một phần phụ trợ vault có thể cắm được (pluggable), giải quyết thông tin đăng nhập bằng cách sử dụng phạm vi phân cấp, quản lý siêu dữ liệu như phương pháp tiêm và thời gian hết hạn, đồng thời thực thi giới hạn tốc độ và ghi nhật ký kiểm toán trên mọi quyền truy cập. Khi cần thiết, thông tin đăng nhập được tiêm ở tầng mạng hoặc tự động điền bởi một tác nhân trình duyệt, thay vì đi thẳng vào sandbox.

Dữ liệu được bảo vệ khi lưu trữ (at rest). SPACE hỗ trợ BYOK (Bring Your Own Key - Mang theo khóa của riêng bạn) để bảo vệ dữ liệu được lưu trữ bên ngoài. Các khóa mã hóa đến từ dịch vụ quản lý khóa của khách hàng và không bao giờ đi vào sandbox. Nếu doanh nghiệp thu hồi khóa, dữ liệu của họ sẽ trở nên không thể đọc được.

Tính năng: Thúc đẩy Quy trình làm việc mang tính Tác nhân

Để hỗ trợ các quy trình làm việc mang tính tác nhân, các sandbox cần hỗ trợ vòng đời phong phú. Chúng phải được tạo ra nhanh chóng và ở quy mô lớn, vì một tác nhân có thể khởi chạy nhiều sandbox cùng một lúc và không nên phải chờ đợi bất kỳ sandbox nào khởi động. Chúng phải duy trì trong một khoảng thời gian không xác định, vì một phiên có thể kéo dài vài phút hoặc chạy trong nhiều tháng. Chúng phải tạm dừng một cách sạch sẽ, đôi khi trong thời gian dài, chẳng hạn như khi một tác vụ bị chặn chờ đầu vào từ con người. Và chúng phải hỗ trợ phân nhánh (forking), khôi phục trạng thái và phục hồi sự cố, để một phiên có thể rẽ nhánh, hoàn tác một bước đi sai lầm hoặc tiếp tục sau khi xảy ra lỗi thay vì phải bắt đầu lại từ đầu.

SPACE hỗ trợ tất cả các điểm trên. Nó mô hình hóa toàn bộ vòng đời sandbox như một cỗ máy trạng thái rõ ràng, đây là điều làm cho các hoạt động như tạo, tạm dừng, tiếp tục, đình chỉ và khôi phục trở nên khả thi.

Tập hợp con cốt lõi này các trạng thái sandbox và chuyển đổi trạng thái cho phép hỗ trợ vòng đời phong phú.

Các bản chụp nhanh (snapshot) là cơ chế nằm bên dưới phần lớn các tính năng này. Một trình lập lịch chạy đều đặn theo các khoảng thời gian và chụp hai loại bản chụp nhanh: bản chụp nhanh đĩa (bản sao tại một thời điểm cụ thể của hệ thống tệp) và bản chụp nhanh toàn bộ (điểm kiểm tra của toàn bộ máy ảo đang tạm dừng). Bản chụp nhanh đĩa được chụp thường xuyên, trong khi các điểm kiểm tra toàn bộ ít thường xuyên hơn. Mọi thứ được giữ nguyên trên nút, và mức độ lưu giữ giảm dần theo tầng. Các bản chụp nhanh này có thể được sử dụng để khôi phục trong phiên; ví dụ, bản chụp nhanh đĩa có thể được dùng để đưa hệ thống tệp quay lại nhằm hoàn tác một lệnh phá hoại, và các điểm kiểm tra toàn bộ cho phép một sandbox bị sự cố tiếp tục chạy tại thời điểm gần đây thay vì đĩa trống.

Khi một sandbox bị đình chỉ, máy ảo được tạm dừng, một bản chụp nhanh toàn bộ được thực hiện và các tạo phẩm từ bản chụp nhanh toàn bộ đó được tải lên bộ lưu trữ đối tượng. Một hàng cơ sở dữ liệu theo dõi bản chụp nhanh và chỉ có thể khôi phục khi mọi tạo phẩm đã được tải lên thành công, do đó một bản chụp nhanh được tải lên một phần sẽ không bao giờ có thể được tiếp tục vào trạng thái bị hỏng. Khôi phục là thao tác ngược lại của đình chỉ. Do bản chụp nhanh nằm trong bộ lưu trữ đối tượng thay vì trên nút ban đầu, bất kỳ nút nào cũng có thể khôi phục sandbox. Trình lập lịch chọn một nút, nút đó tải xuống các tạo phẩm, áp dụng lại độ chênh lệch hệ thống tệp (filesystem delta) lên trên mẫu và tiếp tục chạy máy ảo từ trạng thái đã chụp.

Hiệu quả: Tối ưu hóa Thời gian và Không gian

Chỉ thực hiện các tính năng trên một cách cô lập là chưa đủ; chúng cũng cần khả thi trong các ràng buộc tài nguyên chặt chẽ. Bộ nhớ và đĩa trên một nút là hữu hạn, và người dùng muốn các tác nhân hoạt động nhanh nhất có thể, vì vậy các hoạt động vòng đời phải tiết kiệm cả về thời gian lẫn không gian. Chúng ta không thể đủ khả năng để sao chép toàn bộ một hình ảnh máy (machine image) mỗi khi một sandbox được tạo, tạm dừng hoặc phân nhánh.

Một lựa chọn thiết kế quan trọng làm cho điều này khả thi: hệ thống tệp. SPACE sử dụng btrfs làm hệ thống tệp trên nút để lưu trữ sandbox. Btrfs (hệ thống tệp B-tree) kết hợp hệ thống tệp copy-on-write với tính năng quản lý ổ đĩa logic tích hợp. Điều này mang lại một số lợi ích:

Các bản sao reflink diễn ra nhanh chóng, vì bạn chia sẻ các khoảng (extent) cơ bản, do đó chỉ cần sao chép siêu dữ liệu.

Các bản chụp nhanh diễn ra nguyên tử (atomic) và nhanh chóng, vì bạn chỉ tạo một gốc mới.

Cần rất ít dung lượng lưu trữ, vì bạn chỉ lưu trữ những gì đã thay đổi.

Kết quả là các sandbox có thể được tạo và khôi phục một cách nhanh chóng. Thay vì tạo một sandbox hoàn toàn mới mỗi lần, chúng tôi duy trì một nhóm các pod ấm (warm pool of pods) đã có sẵn các mẫu phổ biến trên đĩa, và đáp ứng yêu cầu bằng cách liên kết nó với một pod có mẫu đã khớp sẵn. Việc cấp cho sandbox đó hệ thống tệp gốc có thể ghi của riêng nó khi đó sẽ là một bản sao copy-on-write thay vì là một bản sao đầy đủ. Khi không có pod ấm nào phù hợp, chúng tôi sẽ tạo mẫu theo yêu cầu; chúng tôi gộp các yêu cầu đồng thời cho cùng một hình ảnh thành một lượt tải xuống duy nhất, do đó một loạt các yêu cầu giống hệt nhau sẽ không biến thành một loạt các công việc giống hệt nhau.

Kết quả là một thời gian chạy sandbox vừa mạnh mẽ, nhẹ nhàng lại vừa cực kỳ nhanh chóng. Khi chúng tôi triển khai SPACE, chúng tôi đã chạy nó song song với nhà cung cấp sandbox trước đây của mình trên cùng một lưu lượng truy cập sản xuất. Trong suốt tuần ra mắt, SPACE đã tạo ra các sandbox nhanh hơn từ ba đến năm lần trên toàn bộ phân phối. Cụ thể, độ trễ tạo trung vị (median create latency) giảm từ 185 mili giây xuống 60 mili giây (cải thiện 3,1 lần) và độ trễ ở phân vị thứ 90 giảm từ 447 mili giây xuống 89 mili giây (cải thiện 5,0 lần). Chúng tôi quan sát thấy những cải thiện tương tự theo cấp số nhân trên các chỉ số hiệu suất và sử dụng tài nguyên khác.

Trong một phép so sánh trực tiếp, độ trễ tạo cho các sandbox SPACE nhanh hơn tới 5 lần so với giải pháp sandbox trước đây của chúng tôi.

Nó cũng giúp việc chụp nhanh đĩa luân phiên trở nên dễ dàng, vì chúng nhanh, hiệu quả về không gian và không yêu cầu tạm dừng sandbox. Hơn nữa, việc lưu trữ delta hiệu quả làm giảm không gian cần thiết để lưu trữ các bản chụp nhanh này.

Kết luận

Khi thiết kế các hệ thống phức tạp, người ta rất dễ chọn một mục tiêu duy nhất để tối ưu hóa một cách cô lập. Nhưng các nhà phát triển của các tác nhân tiên tiến đòi hỏi tính bảo mật, tính năng và hiệu quả ở mức độ ngang nhau. Với SPACE, chúng tôi đặt mục tiêu đạt được sự cải thiện Pareto trên cả ba trụ cột.

Mỗi lựa chọn thiết kế riêng lẻ có thể phục vụ nhiều mục tiêu cùng một lúc, làm cho sự cân bằng tinh tế này trở nên khả thi. Các máy ảo dành riêng cho mỗi sandbox cung cấp cho mỗi khối lượng công việc kernel riêng của nó, tăng cường bảo mật thông qua việc cô lập mạnh mẽ đồng thời cung cấp ranh giới kiểm tra sạch sẽ mà các bản chụp nhanh dựa vào. Btrfs hỗ trợ việc thực hiện hiệu quả các thao tác chụp nhanh, phân nhánh và các thao tác khác cần thiết cho thời gian chạy mang tính tác nhân. Trình nền không gian space giữ cho mọi tương tác của máy khách trên một đường dẫn được kiểm soát ở phía máy chủ, niêm phong ranh giới giữa máy khách và máy chủ đồng thời bảo toàn sự tự do thao tác của các tác nhân. Cổng mạng trung tâm làm trung gian cho lưu lượng đi và việc tiêm thông tin đăng nhập mà không bao giờ để lộ bí mật cho máy khách.

Kết quả của các quyết định thiết kế này và các quyết định khác là một nền tảng cho phép điều phối tác nhân trong thế giới thực ở quy mô lớn. SPACE cung cấp nền tảng mà trên đó các tác nhân có trạng thái, chạy trong thời gian dài có thể xử lý an toàn công việc có độ phức tạp hoặc thời lượng tùy ý, mà không phải hy sinh hiệu suất hay bảo mật.

Hôm nay, SPACE đã cung cấp năng lượng cho hàng triệu phiên Perplexity Computer. Chúng tôi dự định để SPACE đóng vai trò là một lớp thống nhất để cấp phép và kiểm soát sandbox trong mọi cài đặt: từ microVM Linux đến máy khách Windows cho đến máy cục bộ của chính người dùng. Chúng tôi đang nỗ lực đẩy SPACE vào các cài đặt mới này, để các nhà phát triển có thể cung cấp các sản phẩm AI hoạt động ở mọi nơi người dùng làm việc.

Nếu bạn đang háo hức muốn định hình lớp tính toán thúc đẩy các tác nhân tiên tiến của ngày mai, chúng tôi mời bạn gia nhập đội ngũ của chúng tôi.