- Nhà phát triển nền tảng web Paul Kinlan đã khám phá tiềm năng của trình duyệt như một môi trường thực thi an toàn cho coding agent
- Ông chỉ ra rằng trình duyệt vốn đã có cấu trúc sandbox mạnh mẽ để chạy mã không đáng tin cậy
- Để kiểm chứng điều này, ông đã tạo ra bản demo tên Co-do, thử nghiệm toàn bộ việc truy cập tệp, giao tiếp mạng và thực thi mã ngay trong trình duyệt
- Co-do tận dụng File System Access API, header CSP và
<iframe sandbox>, cùng WebAssembly trong Web Workers
- Đây là một ví dụ cho thấy trình duyệt có thể phát triển thành môi trường thực thi AI agent mà không cần container cục bộ
Góc nhìn về trình duyệt như một sandbox
- Paul Kinlan của Google cho rằng để chạy coding agent cần có môi trường sandbox mạnh mẽ
- Ông nhấn mạnh rằng trong 30 năm qua, trình duyệt đã phát triển như một nền tảng để chạy an toàn mã độc hoặc mã không đáng tin cậy
- Đặc tính này là cơ sở để tận dụng trình duyệt như một môi trường thực thi agent
Ba yếu tố cốt lõi của sandbox dựa trên trình duyệt
- Kinlan nêu ra ba yếu tố cốt lõi của sandbox là truy cập hệ thống tệp, kiểm soát truy cập mạng và thực thi mã an toàn
- File System Access API cung cấp khả năng xử lý tệp cục bộ trong trình duyệt và hiện được biết là chỉ dành cho Chrome
- Có thể kiểm soát truy cập mạng thông qua header CSP (Content Security Policy) và thuộc tính
<iframe sandbox>
- Có thể thực thi mã trong môi trường cô lập bằng WebAssembly và Web Workers
Cấu trúc và chức năng của bản demo Co-do
- Một ứng dụng demo tên Co-do đã được tạo ra để kiểm chứng ý tưởng của Kinlan
- Người dùng chọn thư mục rồi thiết lập nhà cung cấp LLM và API key
- Co-do tương tác với LLM thông qua các lệnh gọi API được CSP cho phép, đồng thời cung cấp giao diện chat có thể làm việc với tệp
- Cấu trúc này tương tự Claude Cowork, nhưng chạy chỉ với trình duyệt mà không cần container cục bộ dung lượng lớn
Giới hạn của <iframe sandbox> và các công nghệ bảo mật
- Tình trạng thiếu tài liệu cho
<iframe sandbox> được chỉ ra là một vấn đề lớn
- Khác biệt trong cách triển khai giữa các trình duyệt là khá lớn và tài liệu liên quan còn thiếu
- Kinlan đề xuất cách áp dụng quy tắc mạng cho frame bên trong thông qua kỹ thuật double-iframe
Các phát hiện và thử nghiệm bổ sung
- Đã xác nhận rằng thuộc tính
<input type="file" webkitdirectory> hoạt động trên cả Firefox, Safari, Chrome
- Nhờ đó, trình duyệt có thể thực hiện quyền truy cập chỉ đọc cho toàn bộ thư mục
- Để kiểm tra điều này, một bản demo webkitdirectory đã được tạo và dự kiến sẽ tiếp tục được sử dụng trong các dự án sau
Kết luận
- Trình duyệt đã phát triển thành một nền tảng hoàn thiện cao cho cô lập bảo mật và thực thi mã
- Trường hợp Co-do là bằng chứng thử nghiệm cho thấy trình duyệt có thể được mở rộng thành môi trường thực thi cho AI coding agent
1 bình luận
Ý kiến trên Hacker News
Đây là bài viết tôi đã đăng trên blog liên kết của mình. Để hiểu đầy đủ ngữ cảnh, nhất định phải đọc bài gốc The Browser is the Sandbox
Tôi nghĩ lý do Google tạo ra NaCl chính là để dẫn tới việc chuẩn hóa sandbox của WebAssembly. DOM, JS và CSS cũng hoạt động như một sandbox hiển thị. Trình duyệt cần giới hạn chức năng để cung cấp trải nghiệm người dùng thống nhất.
Đây cũng là lý do IE và Edge đời cũ thất bại. Các sandbox bên ngoài như Flash, ActiveX, Java Applet, Silverlight đều đã biến mất, và với sự ổn định của asm.js cùng WebAssembly, web đã trở nên gọn gàng hơn rất nhiều. Nhân tiện, ActionScript của Flash cũng đã ảnh hưởng đến thiết kế của ECMAScript và TypeScript
Lần đầu nhìn thấy thuộc tính
webkitdirectorytôi cũng rất ngạc nhiên. Tôi đã làm web app nhiều năm mà lại bỏ lỡ cái này. Sandbox của trình duyệt là một mô hình bảo mật đã được kiểm chứng bởi hàng tỷ người nhấp vào các liên kết đáng ngờ.Đây là cách tiếp cận trưởng thành hơn nhiều so với việc khởi tạo lại container mỗi lần. Tuy vậy, trình duyệt có những hạn chế như không thể gọi system call, chạy nhị phân hay truy cập phần cứng. Với AI coding thì như vậy là đủ, nhưng với một số tác vụ vẫn có giới hạn
Thật thú vị khi systemd hay hệ thống quyền người dùng của Linux hầu như không được nhắc tới trong các cuộc thảo luận về sandbox. Thực ra chúng cũng khá mạnh và cung cấp cơ chế cô lập chi phí thấp
File System Access API là một bước ngoặt lớn của web. Trên co-do.xyz, bạn có thể chọn một thư mục để AI xử lý an toàn các file bên trong. Nhờ API này mà web app đã thực sự trở thành công cụ năng suất
Việc thực thi trên nền trình duyệt rất thú vị, nhưng phần lớn ứng dụng kinh doanh thực tế đã chuyển sang hướng cloud-first vì khả năng bảo trì, bảo mật và truy cập dữ liệu. Chạy cục bộ thì tốt cho năng suất cá nhân, nhưng với ứng dụng chủ lưu thì có giới hạn. Đây cũng là lý do các tính năng tự động hóa desktop như AppleScript, COM, DDE ngày xưa dần biến mất
Tôi muốn giới thiệu thêm hai thứ có thể làm được trong trình duyệt
Về lý thuyết, chỉ với một URL là đã có thể triển khai một hệ thống tác nhân khá hoàn chỉnh
Trước đây trên Chrome, có thể xin quyền đọc/ghi thư mục bằng File System Access API, nhưng khi làm mới tab thì quyền sẽ biến mất. Tôi tò mò không biết giờ đã được cải thiện chưa
Cách này chỉ sandbox hệ thống tệp. Nhưng mọi người còn muốn kết nối tới email, lịch, chat, mã nguồn, dữ liệu tài chính... Bảo mật hệ thống tệp mới chỉ là điểm khởi đầu, còn bảo mật cho toàn bộ hệ sinh thái dữ liệu vẫn là bài toán chưa giải xong
Tôi tò mò về giới hạn của cách tiếp cận này. Liệu có thể triển khai Gemini CLI trong trình duyệt như một phiên bản UX được cải thiện không? Nó cũng có thể tích hợp với công cụ cục bộ chứ?