Cloudflare Computer: Môi trường Agent cho Cloudflare Workers
Cloudflare Computer trao cho Durable Object một filesystem thật — trạng thái lưu trong SQLite, ba backend khác nhau thực thi lên đó, từ container Linux đầy đủ đến module JavaScript chạy trong isolate. Nên dùng nếu bạn đã xây agent trên Cloudflare Workers và muốn workspace có sẵn thay vì tự dựng sandbox. Nên bỏ qua nếu cần thứ đưa lên production ngay hôm nay — đội phát triển nói thẳng là chưa sẵn sàng.
Tìm hiểu về Cloudflare Computer
Cloudflare Computer là một virtual filesystem sống bên trong một Cloudflare Durable Object, với SQLite giữ trạng thái gốc và một bề mặt pluggable duy nhất, workspace.runtime, để thực thi code lên trạng thái đó. Ba backend đã có sẵn — một FUSE mount chạy trong container, một shell just-bash chạy trong Dynamic Worker, và một runtime module JavaScript — nên agent đọc và ghi lên cùng một workspace bất kể backend nào đang xử lý.
Khả năng cốt lõi
- ✓Cùng một lệnh — workspace.runtime.exec(source, { backend }) — chạy được trên ba backend khác nhau, với backend ID truyền vào mỗi lần gọi quyết định source được hiểu là lệnh shell hay module JavaScript.
- ✓Backend container chiếu trạng thái SQLite của Durable Object vào một sandbox dưới dạng FUSE mount thật, đồng bộ ngược qua kênh RPC capnweb — nó cho agent một Linux userland đầy đủ: binary thật, network egress thật, chứ không phải bản rút gọn.
- ✓Backend isolate shell chạy just-bash bên trong một Dynamic Worker và nói chuyện thẳng với Workspace gốc qua Workers RPC — bỏ qua bản sao trạng thái thứ hai và vòng đồng bộ cần để giữ nó khớp.
- ✓Backend isolate JavaScript thực thi một ECMAScript module trong một Dynamic Worker mới, truyền input và kết quả có cấu trúc, với import tương đối giữ nguyên qua các lần chạy và một node:fs/promises chạy trên nền Workspace thay cho module filesystem thật.
- ✓Một Workspace có thể đăng ký nhiều backend cùng lúc dưới các ID cố định, và mỗi backend chỉ kết nối vào lần đầu tiên thật sự có ai đó gọi tới nó.
- ✓Một Workspace cũng có thể được tạo mà không gắn backend nào cả, chỉ để lại filesystem cho caller — không có bề mặt thực thi nào hết.
- ✓Bên trong backend isolate JavaScript, một module ws:git đáng tin cậy và một module ws:artifacts đáng tin cậy có sẵn cho thao tác source control và artifact mà không cần shell ra ngoài.
Các quy trình agent mẫu
- •Chạy lệnh shell và ghi file của agent qua ví dụ container — nó mount computerd bên trong sandbox và lộ ra một bề mặt HTTP write/read/exec đứng sau một Durable Object.
- •Đổi container sang một Dynamic Worker chạy just-bash (ví dụ worker-shell) khi bạn muốn cùng bề mặt HTTP đó mà không cần dựng container nào.
- •Cho agent ghi một file markdown rồi gọi ra một binary thật — ví dụ tutorial cho agent viết một recipe card rồi chạy pandoc lên nó bên trong container để ra một PDF.
- •Cấp cho một chat agent một thư mục làm việc bền vững: ví dụ think gắn @cloudflare/think vào một workspace để có thể truy cập từ terminal.
- •So sánh trực tiếp các backend với think-compare-runtimes, một web UI chạy cùng một tác vụ agent trên cả runtime container lẫn worker song song.
- •Cho agent dựng sẵn một Worker project bên trong workspace của chính nó rồi publish thành một repo clone-ready qua ví dụ artifacts.
Bắt đầu
README gốc không đưa cho bạn lệnh cài đặt copy-paste được ngay. Nó bảo bạn cài package @cloudflare/computer rồi đọc README riêng của package đó để lấy bước cài đặt thật, entrypoint map, và các ví dụ dùng thử bề mặt fs và runtime — tất cả nằm ở đó, không nằm trong file gốc. Nếu bạn muốn đóng góp thay vì chỉ dùng package, CONTRIBUTING.md là đường feedback công khai, còn collaborator được duyệt thì theo COLLABORATORS.md để biết cách setup, build, và test.
Chạy code cho agent
Mọi backend đều chạy qua đúng một lệnh: workspace.runtime.exec(source, { backend }). Backend ID chọn tại thời điểm gọi quyết định source được hiểu thế nào — một lệnh shell nếu là backend isolate-shell hoặc container, hoặc một ECMAScript module nếu là backend isolate-JavaScript. Backend chưa kết nối cho tới khi lệnh exec đầu tiên chạm vào nó, và một Workspace có thể đăng ký nhiều hơn một backend dưới các ID khác nhau, để agent chuyển qua lại giữa, chẳng hạn, một shell trong Worker chạy nhanh và một container đầy đủ ngay giữa tác vụ. Ngoài exec, README gốc không tài liệu hoá các method signature khác — muốn biết thì phải quay lại README của package @cloudflare/computer.
Điểm mạnh
- ✓Chỉ một lệnh thực thi, workspace.runtime.exec, hoạt động như nhau dù backend đứng sau nó là một container Linux đầy đủ hay một isolate JavaScript — bạn không phải viết lại code gọi khi đổi chiến lược thực thi.
- ✓Backend isolate-shell nói chuyện thẳng với Workspace gốc qua Workers RPC, cắt bỏ một kho dữ liệu thứ hai và công sức giữ hai bản khớp nhau.
- ✓Backend kết nối theo kiểu lazy, nên một Workspace đăng ký sẵn ba backend không phải trả chi phí khởi động cả ba nếu agent chỉ đụng tới một.
- ✓Bạn có thể dựng một Workspace không gắn backend nào cả và chỉ nhận filesystem — hữu ích nếu tất cả bạn cần chỉ là lưu file trên nền Durable Object mà không cần chạy code.
- ✓Đội phát triển nói thẳng về tình trạng preview thay vì tô vẽ, nên các hạn chế dễ lường trước hơn.
Tình trạng hiện tại và hạn chế
- △Đội phát triển gắn nhãn preview only cho dự án này: API chưa ổn định, thiết kế có thể đổi, và README nói thẳng là hiện chưa phù hợp để dùng cho production.
- △Bản đặc tả trong docs/ được mô tả là forward-looking — nó ghi lại ý định, không phải mô tả những gì code thật sự làm hôm nay, nên không thể coi nó là spec cho hành vi hiện tại.
- △Repo không nhận pull request tự phát; đóng góp chỉ giới hạn ở issue, discussion, và — riêng với collaborator được duyệt — một quy trình COLLABORATORS.md tách biệt.
- △README gốc bỏ qua hoàn toàn tài liệu cài đặt và sử dụng thật, chỉ trỏ bạn sang packages/computer/README.md — muốn đánh giá bề mặt API thật thì phải rời khỏi trang chủ của repo này.
- △Bản thân package packages/computer được đánh dấu là work in progress, còn packages/computer-computerd-linux-x64 phát hành một Docker image riêng tư thay vì một artifact npm công khai — vài mảnh trong stack chưa hoàn toàn public.
Các hướng thay thế cho workspace của agent
Câu hỏi thường gặp
Cloudflare Computer phát hành theo giấy phép MIT, nên bạn có thể dùng, sửa, và phân phối lại code với rất ít ràng buộc.
Cloudflare Computer chưa phù hợp để dùng cho production ở thời điểm này — đội phát triển gắn nhãn preview only, API chưa ổn định và thiết kế vẫn có thể thay đổi.
Cloudflare Computer có ba backend: container với FUSE mount thật và Linux userland đầy đủ, isolate shell chạy just-bash trong Dynamic Worker, và isolate JavaScript runtime cho ECMAScript module.
Cloudflare Computer giữ state gốc trong SQLite bên trong một Cloudflare Durable Object, và mọi backend đều đọc/ghi lên đúng kho dữ liệu đó thay vì giữ bản sao riêng.
Thư mục examples/ của Cloudflare Computer chứa các Worker project chạy được — container, worker-shell, worker-javascript, think, think-compare-runtimes, tutorial, artifacts, và assets — mỗi cái có README riêng.
Cloudflare Computer ghi lại benchmark filesystem trong docs/19_performance.md, gồm số liệu fs-bench và một so sánh với npm install của cloudflare/sandbox-sdk.
Vấn đề mà nó giải quyết
Một agent chỉ biết gọi API thì không làm được những việc một lập trình viên thật làm mà không cần nghĩ nhiều — ghi một file, chạy một trình biên dịch, nối một pipeline shell, mount một thư mục tạm. Tự dựng chuyện này trên Cloudflare Workers từ đầu thường có nghĩa là phải tự dựng container orchestration và một lớp đồng bộ riêng để giữ nó khớp với state mà Worker đã có. Cloudflare Computer gói state đó vào ngay trong Durable Object — SQLite là nguồn sự thật — và cho phép bạn trỏ ba execution backend khác nhau vào đó mà không cần tự viết lớp đồng bộ ấy.
Ai nên dùng — và ai nên bỏ qua
Thử Cloudflare Computer nếu bạn đã xây sản phẩm agent trên Cloudflare Workers và Durable Objects, và muốn một lớp workspace dùng chung thay vì tự dựng container orchestration cùng lớp đồng bộ — mô hình ba backend (container, isolate shell, isolate JavaScript) đã bao phủ phần lớn những gì một agent cần để đụng vào file và chạy code. Bỏ qua nếu bạn cần đưa thứ gì đó lên production ngay trong quý này, nếu bạn chưa dùng stack của Cloudflare, hoặc nếu bạn cần một đường đóng góp rộng hơn việc chỉ mở issue — dự án này không nhận pull request tự phát.
