Об этом проекте
Cloudflare Computer — это проект с открытым исходным кодом на стадии превью (лицензия MIT), который предоставляет программным агентам надёжный «компьютер»: виртуальную файловую систему, авторитетное состояние которой хранится в SQLite внутри Durable Object Cloudflare, плюс единый подключаемый интерфейс выполнения, доступный через workspace.runtime.
Сегодня доступны три бэкенда выполнения. Бэкенд Container проецирует состояние SQLite в песочный контейнер как реальное FUSE-монтирование: демон на стороне песочницы, называемый computerd, монтирует состояние как файловую систему и синхронизирует изменения обратно по каналу capnweb RPC, обеспечивая полноценный Linux-пользовательский интерфейс с реальными бинарниками и реальным сетевым доступом. Бэкенд Isolate shell выполняет just-bash внутри Dynamic Worker и обращается к авторитетному Workspace через Workers RPC, поэтому нет второго хранилища или цикла синхронизации. Бэкенд Isolate JavaScript выполняет модуль ECMAScript в новом Dynamic Worker с структурированными входными данными и результатами, надёжными относительными импортами, настроенными библиотеками, Workspace-поддерживаемыми node:fs/promises и доверенными модулями ws:git и ws:artifacts.
Workspace может регистрировать несколько бэкендов с устойчивыми идентификаторами. workspace.runtime.exec(source, { backend }) — единственная точка входа для выполнения, и выбранный бэкенд определяет, является ли source командой оболочки или ES-модулем. Бэкенды подключаются лениво при первом использовании, а Workspace также может быть создан вообще без бэкендов, предоставляя файловую систему самостоятельно.
Проект явно помечен как ПРЕДВАРИТЕЛЬНЫЙ: API нестабильны, дизайн может измениться, и он не подходит для производственного использования. Спецификация в docs/ носит перспективный характер и должна читаться как намерение, а не как описание текущего кода.
Репозиторий представляет собой небольшой монорепозиторий. Пакеты включают @cloudflare/dofs (Durable Object SQLite-файловая система, строительные блоки протокола синхронизации и провайдер @platformatic/vfs для Node), @cloudflare/computer-rpc (типы capnweb и общие серверные/клиентские помощники), @cloudflare/computerd (FUSE-монтирование плюс HTTP/WebSocket RPC-демон, работающий внутри песочного контейнера) и @cloudflare/computer (верхнеуровневый пакет, используемый Durable Objects). Приватный контекст Docker-образа содержит предварительно собранный бинарник computerd linux-x64, при этом образ, а не npm-пакет, служит артефактом выпуска.
Каталог examples содержит запускаемые Workers, демонстрирующие публичный интерфейс: пример контейнера с HTTP-эндпоинтами записи/чтения/выполнения; варианты worker-shell и worker-javascript, не требующие контейнера; пример egress, показывающий политики none, all и custom egress для разных бэкендов; пример MCP, предоставляющий инструмент Code Mode, поддерживаемый надёжным workspace, Worker-оболочкой и полным Linux-контейнером; пример rlm, где сгенерированный JavaScript читает длинный контекст из Workspace, вызывает ограниченные model workers и агрегирует их структурированные результаты кодом; примеры think и think-compare-runtimes, где чат-агент @cloudflare/think использует workspace как рабочую директорию, включая веб-интерфейс, выполняющий задачу того же агента в контейнерном и worker-рантаймах бок о бок; пошаговое учебное пособие, которое создаёт карточку рецепта в markdown и запускает pandoc в контейнере для создания PDF; пример artifacts, который генерирует проект Worker в workspace и публикует его в Cloudflare Artifacts как клонируемый репозиторий; и пример assets, который превращает промпт в изображение с помощью Workers AI и возвращает ссылку для шаринга.
Репозиторий публикует бенчмарки файловой системы в docs/19_performance.md, где проект указывает, что FUSE-монтирование computerd превосходит реальный диск при работе с метаданными и уступает ему при большом последовательном вводе-выводе, с инструкциями по воспроизведению и сравнениями.
Вклад ограничен отчётами об ошибках, предложениями исправлений, запросами функций и предложениями по дизайну через issues и discussions; неподанные по запросу pull requests не принимаются. Типы Env для примеров генерируются с помощью wrangler types, а не коммитятся в репозиторий.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.