- Một hộp cát nhẹ để thực thi mã cho tác nhân AI, cung cấp tốc độ khởi động nhanh hơn 100 lần và hiệu quả bộ nhớ cao hơn 10–100 lần so với container
- Dựa trên công nghệ isolate của động cơ JavaScript V8, khởi động trong vài mili giây và chỉ dùng vài megabyte, nên có thể vận hành theo cách tạo rồi hủy hộp cát mới cho mỗi yêu cầu
- Theo cách Code Mode, tác nhân trực tiếp viết và chạy mã TypeScript thay vì gọi công cụ, giúp giảm mức sử dụng token tới 81%
- Cung cấp kèm các thư viện bảo mật và tiện ích như lọc HTTP, tiêm thông tin xác thực, hệ thống tệp ảo để xây dựng hệ sinh thái phát triển tác nhân
- Một sự chuyển đổi hạ tầng giúp dịch vụ tác nhân ở quy mô người dùng đại chúng trở nên khả thi, vượt qua giới hạn về chi phí, độ trễ và khả năng mở rộng của hộp cát dựa trên container
Bối cảnh: vấn đề bảo mật khi thực thi mã của tác nhân
- Để tác nhân (hoặc máy chủ MCP) có thể chạy mã do AI tạo ra tức thời, mã đó phải hoạt động trong một môi trường an toàn
- Nếu chạy trực tiếp bằng
eval() trong ứng dụng, người dùng độc hại có thể chèn lỗ hổng thông qua prompt injection
- Cần một hộp cát được cô lập khỏi ứng dụng và thế giới bên ngoài, đồng thời chỉ cho phép những chức năng cụ thể mà mã cần truy cập
Giới hạn của phương pháp container truyền thống
- Hiện nay phần lớn ngành đang dùng container dựa trên Linux làm hộp cát
- Container mất hàng trăm mili giây để khởi động và tiêu tốn hàng trăm megabyte bộ nhớ khi chạy
- Để tránh độ trễ, cần giữ ở trạng thái warm, nhưng nếu tái sử dụng cùng một container cho nhiều tác vụ thì bảo mật sẽ suy giảm
- Ở quy mô người dùng đại chúng, nơi mọi người dùng cuối đều có tác nhân riêng và mỗi tác nhân đều viết mã, container là chưa đủ
Dynamic Worker Loader: hộp cát nhẹ
- API cho phép Cloudflare Worker chỉ định mã trong lúc chạy để tạo ngay một Worker mới bên trong hộp cát riêng của nó
- Từng được giới thiệu là tính năng thử nghiệm trong bài viết về Code Mode vào tháng 9 năm ngoái, hiện đã mở beta cho mọi người dùng Workers trả phí
- Khi tạo Worker, có thể chỉ định mã bằng
compatibilityDate, mainModule, modules, truyền RPC stub bằng env, và dùng globalOutbound để chặn hoặc chặn bắt truy cập Internet
Nhanh hơn 100 lần
- Dynamic Workers dựa trên V8 isolate, cùng cơ chế sandboxing mà nền tảng Cloudflare Workers đã dùng suốt 8 năm qua
- Isolate là một instance của động cơ thực thi JavaScript V8 giống như thứ được dùng trong Google Chrome
- Với vài mili giây để khởi động và vài megabyte bộ nhớ sử dụng, nó nhanh hơn khoảng 100 lần và tiết kiệm bộ nhớ hơn 10–100 lần so với container
- Có thể vận hành theo cách tạo một isolate mới cho mỗi yêu cầu của người dùng, chạy một đoạn mã rồi hủy nó
Khả năng mở rộng không giới hạn
- Nhiều nhà cung cấp hộp cát dựa trên container áp đặt giới hạn về số lượng hộp cát đồng thời toàn cầu và tốc độ tạo mới
- Dynamic Worker Loader là API của chính công nghệ đã vận hành nền tảng nên không có các giới hạn đó
- Có thể xử lý hàng triệu yêu cầu mỗi giây, đồng thời tải một hộp cát Dynamic Worker riêng cho từng yêu cầu để chạy song song
Độ trễ bằng không
- Dynamic Worker dùng một lần thường chạy trên cùng máy, cùng luồng với Worker đã tạo ra nó
- Không cần giao tiếp toàn cầu để tìm một hộp cát đã được làm ấm, mà chạy ngay tại nơi yêu cầu đến
- Được hỗ trợ ở hàng trăm vị trí toàn cầu của Cloudflare
Môi trường thực thi chỉ dành cho JavaScript
- So với container, ràng buộc duy nhất là tác nhân phải viết JavaScript
- Workers về mặt kỹ thuật cũng hỗ trợ Python và WebAssembly, nhưng với những đoạn mã nhỏ do tác nhân tạo tức thời thì JavaScript tải và chạy nhanh hơn nhiều
- LLM thành thạo mọi ngôn ngữ chính, và dữ liệu huấn luyện cho JavaScript là cực kỳ lớn
- Do đặc tính của web, JavaScript là ngôn ngữ được thiết kế cho sandboxing
API công cụ được định nghĩa bằng TypeScript
- MCP chỉ định nghĩa schema gọi công cụ dạng phẳng, còn OpenAPI biểu diễn REST API, nhưng cả bản thân schema lẫn mã gọi đều dài dòng
- Đối với API được lộ ra cho JavaScript, TypeScript là lựa chọn tối ưu duy nhất
- Interface TypeScript có thể mô tả API chính xác với ít token hơn nhiều so với cùng một đặc tả OpenAPI
- Workers Runtime tự động thiết lập cầu nối Cap'n Web RPC giữa hộp cát và mã phía host, cho phép tác nhân gọi API như thư viện cục bộ
Lọc HTTP và tiêm thông tin xác thực
- Với tùy chọn
globalOutbound, có thể đăng ký callback cho mọi yêu cầu HTTP để kiểm tra, viết lại, chèn khóa xác thực hoặc chặn yêu cầu
- Tiêm thông tin xác thực (token injection): khi tác nhân gửi yêu cầu HTTP tới dịch vụ cần xác thực, hệ thống thêm thông tin xác thực vào yêu cầu đi ra để bản thân tác nhân không biết bí mật đó
- Hữu ích khi API phổ biến đã có trong dữ liệu huấn luyện của tác nhân hoặc khi chạy thư viện dựa trên REST API bên trong hộp cát
- Tuy vậy, nếu không có yêu cầu tương thích thì giao diện RPC TypeScript tốt hơn HTTP: dùng ít token hơn, mã gọi gọn hơn và dễ thu hẹp bề mặt API một cách chính xác hơn
Kiến trúc bảo mật đã được kiểm chứng
- Hộp cát dựa trên isolate có bề mặt tấn công phức tạp hơn máy ảo phần cứng, và lỗi bảo mật của V8 xuất hiện thường xuyên hơn hypervisor thông thường
- Cloudflare có kinh nghiệm bảo vệ nền tảng dựa trên isolate trong khoảng 10 năm
- Triển khai bản vá bảo mật V8 lên production trong vòng vài giờ, nhanh hơn cả Chrome
- Áp dụng lớp hộp cát thứ cấp tùy biến và cơ chế cô lập tenant động dựa trên đánh giá rủi ro
- Mở rộng sandbox V8 bằng các tính năng phần cứng như MPK
- Hợp tác với TU Graz để phát triển các kỹ thuật phòng thủ mới như chống Spectre
- Vận hành hệ thống tự động quét và chặn các mẫu độc hại hoặc đưa vào sandbox bổ sung
Thư viện trợ giúp
Code Mode (@cloudflare/codemode)
- Thư viện giúp đơn giản hóa việc thực thi mã do mô hình tạo ra bằng Dynamic Workers đối với các công cụ AI
- Thành phần cốt lõi là
DynamicWorkerExecutor(), xử lý các lỗi định dạng thường gặp thông qua chuẩn hóa mã và có thể truy cập trực tiếp fetcher globalOutbound
codeMcpServer({ server, executor }) bao bọc MCP Server hiện có để thay bề mặt công cụ bằng một công cụ code() duy nhất
openApiMcpServer({ spec, executor, request }) nhận đặc tả OpenAPI và bộ thực thi để tự động dựng một MCP Server hoàn chỉnh với các công cụ search() và execute()
Bundling (@cloudflare/worker-bundler)
- Tạo ra các module đã được bundle sẵn mà Dynamic Workers mong đợi
- Chỉ cần cung cấp tệp nguồn và
package.json, công cụ sẽ giải quyết phụ thuộc npm, bundle bằng esbuild, rồi trả về bản đồ module mà Worker Loader yêu cầu
- Hỗ trợ ứng dụng full-stack thông qua
createApp, bundle cùng lúc server Worker, JavaScript phía client và tài sản tĩnh
- Bao gồm khả năng phục vụ asset tích hợp, xử lý content type, ETag và định tuyến SPA
Thao tác tệp (@cloudflare/shell)
- Cung cấp cho tác nhân một hệ thống tệp ảo bên trong Dynamic Worker
- Thực hiện read, write, search, replace, diff, glob, truy vấn/cập nhật JSON, lưu trữ archive... thông qua các phương thức có kiểu của đối tượng
state
- Dữ liệu được sao lưu vào Workspace bền vững (SQLite + R2) để giữ tệp giữa các lần chạy
- Các tác vụ quy mô lớn như
searchFiles, replaceInFiles, planEdits giúp giảm tối thiểu số lần RPC round-trip — gọi một lần thay vì lặp qua từng tệp
- Ghi theo lô mặc định là giao dịch: nếu chỉ một thao tác thất bại thì các lần ghi trước đó sẽ tự động rollback
- Cung cấp sẵn khai báo kiểu TypeScript được dựng trước và mẫu system prompt
Trường hợp sử dụng
Ứng dụng Code Mode
- Thay vì gọi công cụ tuần tự, tác nhân viết một hàm TypeScript duy nhất để chuỗi hóa nhiều lệnh gọi API, thực thi trong Dynamic Worker rồi chỉ trả về kết quả cuối cùng
- Vì chỉ đầu ra, chứ không phải các bước trung gian, đi vào context window nên cả độ trễ lẫn lượng token đều giảm
- Máy chủ Cloudflare MCP được xây dựng theo cách này: phơi bày toàn bộ Cloudflare API bằng chỉ 2 công cụ (search, execute) với dưới 1.000 token
Xây dựng tự động hóa tùy chỉnh
- Zite đang xây dựng một nền tảng ứng dụng nơi người dùng tương tác qua giao diện chat
- Ở hậu trường, LLM viết TypeScript để tạo ứng dụng CRUD, kết nối Stripe, Airtable, Google Calendar và chạy logic backend
- Mỗi quy trình tự động hóa chạy trong Dynamic Worker riêng, chỉ có quyền truy cập vào các dịch vụ và thư viện cụ thể cần thiết cho endpoint đó
- Antony Toron, CTO của Zite: đây là một lớp thực thi tức thời, cô lập và an toàn, có hiệu năng tốt nhất về tốc độ và hỗ trợ thư viện trong mọi nền tảng họ benchmark, hiện xử lý hàng triệu yêu cầu thực thi mỗi ngày
Chạy ứng dụng do AI tạo ra
- Có thể dùng để xây dựng nền tảng tạo ra các ứng dụng hoàn chỉnh bằng AI
- Mỗi ứng dụng được tạo theo nhu cầu, rồi lưu vào cold storage cho đến khi được gọi lại
- Thời gian khởi động nhanh giúp dễ xem trước các thay đổi trong quá trình phát triển tích cực
- Có thể chặn hoặc chặn bắt các yêu cầu mạng của mã được tạo để đảm bảo thực thi an toàn cho ứng dụng do AI tạo ra
Chính sách giá
- Các Worker được tải động được tính phí $0.002 theo số Worker duy nhất được tải mỗi ngày (chưa gồm phí thời gian CPU và số lần gọi của Workers thông thường)
- Trong trường hợp dùng AI-generated Code Mode, vì mọi Worker đều là dùng một lần, mức phí là $0.002 cho mỗi lần tải, thường có thể bỏ qua so với chi phí suy luận để tạo mã
- Miễn phí mức $0.002 trong thời gian beta
Chưa có bình luận nào.