RepoDaily · 2026-08-06 · Infrastructure / Runtime

Cloudflare Computer:为每个 agent 提供 SQLite 持久化的虚拟文件系统与可插拔沙箱运行时

#6 Infrastructure / Runtime TypeScript +796 cloudflare/computer 打开仓库

@cloudflare/computer 是预览版 TypeScript 包,提供 Durable Object 内的虚拟文件系统、R2 只读挂载与三种执行后端,明确声明不适合生产环境。

项目类型Infrastructure / Runtime
最适合在 Cloudflare Agents 原型中需要可移植、持久化文件系统,并可选地启用 shell 或隔离 JS 执行的场景。
风险等级高 —— 预览版、API 不稳定、不接受主动提交的 PR。
评估时间1 到 2 天即可在 Worker 中接入单一后端并试用 AI SDK 工具。

核心问题: 你的 agent 是否需要运行在 Cloudflare 平台上的、agent 级别的持久文件与隔离执行,并且能否接受 API 随时变动?

85/100

RepoDaily 采用评分

RepoDaily 将该项目的采用分评为 85/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。

基于 RepoDaily 来源和采用说明的方向性评分,不是基准测试。风险: 高
96证据质量

包含 4 个来源、覆盖 3 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。

100可安装/可试用性

检测到 6 个工作流步骤、6 个下一步动作,以及 4 个命令/安装信号。

56维护可信度

趋势热度为 +796 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。

74生产准备度

采纳风险标记为 high,并包含 4 条安全说明与 4 条跳过条件。

100差异化

3 个机会视角、4 个替代方案,以及 3 个类型化模块支撑差异化判断。

82许可证清晰度

文章中包含许可证来源或许可证表述。

84Agent / AI 适配度

文章正文和元数据中检测到 6 个 AI/Agent 相关信号。

项目概览

Cloudflare Computer(`@cloudflare/computer`)是一个预览版 TypeScript 包,为 Durable Object 提供开箱即用、由 SQLite 支撑的虚拟文件系统,并支持可插拔的执行后端。README 明确指出这是一个用于反馈的预览版:API 不稳定、设计会变动、不适合生产环境。docs 目录中的规范是前瞻性的,用于说明意图,而非描述当前代码。

该包面向需要小型、可移植文件系统及配套工具的 agent。它提供与 Worker 绑定兼容的 fs API、基于 R2 的只读挂载、跨 DO 重启的持久性,以及通过 `workspace.runtime` 选择的三种运行时后端:Cloudflare Container shell、仅支持 just-bash 的 Dynamic Worker,以及隔离的 ECMAScript 模块 Dynamic Worker。

在文件系统之上,Computer 通过 `@cloudflare/computer/tools` 为 `@cloudflare/agents` 提供 AI SDK 工具,暴露 read、write、edit、ls、可选 exec 与可选 publish 操作。与容器内服务共享的线路类型位于同仓包 `@cloudflare/computer-rpc` 中,包含 `./server`、`./client`、`./driver` 子路径。

存储上限非常具体:大约 10GB,因为它与 DO 共享存储。容器侧文件系统保存在内存中,因此不适合大型目录树或 monorepo。容器 IO 通过 FUSE 进行,这意味着重 IO 负载(如大型 `node_modules` 安装、大体积 tarball 解压)相比原生文件系统会有可感知的性能损失。

解决什么问题

  • 过去基于 Durable Object 的 agent 缺乏标准的、与 Worker 绑定兼容的持久化虚拟文件系统。
  • 在 agent 中运行不可信或半可信代码,需要每个团队自建沙箱、R2 预取与执行生命周期。
  • 在隔离 JS 运行时中正确实现持久的相对导入、可配置库、以及持久化的 `node:fs/promises` 并非易事。
  • agent 级别的工作区需要跨 DO 重启的持久性,而临时内存方案在每次冷启动后都会丢失。

工作原理

  1. 在 Worker 或 Agent 项目中执行 `npm install @cloudflare/computer`。
  2. 构造 `Workspace`,可选择不带后端(仅文件系统用途),或通过 `workspace.runtime` 选择一种后端。
  3. 通过专用子路径选择三种执行后端之一:`@cloudflare/computer/backends/container`、`@cloudflare/computer/backends/worker-shell` 或 `@cloudflare/computer/backends/worker-javascript`。
  4. 若使用容器后端,需基于包含 `computerd` 守护进程与 FUSE 运行时的镜像;示例 Dockerfile 从 `ghcr.io/cloudflare/computer-computerd-linux-x64:0.1.0-alpha.1` 拷贝预编译二进制。
  5. 可选地,将 R2 数据以只读方式挂载到工作区目录树,并按需启用 `@cloudflare/computer/git`(懒加载 isomorphic-git,使用 Workers `node:zlib`)或 `@cloudflare/computer/artifacts`。
  6. 将 `@cloudflare/computer/tools` 暴露的 AI SDK 工具接入 `@cloudflare/agents`,使 agent 能在工作区内执行 read、write、edit、list、exec 或 publish。

入口与运行时接入面

Computer 以多个入口发布,而非单 bundle,因此未使用的后端会被 tree-shake 移除。根入口 `@cloudflare/computer` 暴露 Workspace 门面、`workspace.runtime`、桩类型、R2 挂载与代理类。只使用容器后端的消费方不会导入 worker 子路径,因此 just-bash 负载会从依赖图中剔除。

每个执行后端都有独立子路径。`@cloudflare/computer/backends/container` 提供 `CloudflareContainerBackend` 与 `withWorkspaceContainer`,并引入 `computerd` / `capnweb` 同步管线;`@cloudflare/computer/backends/worker-shell` 内置 just-bash 命令运行时;`@cloudflare/computer/backends/worker-javascript` 提供配置好的库、持久相对导入、持久 `node:fs/promises`,以及可信的 `ws:git` / `ws:artifacts` 绑定。

安装与容器镜像命令

  • 安装:`npm install @cloudflare/computer`。
  • `examples/container/Dockerfile` 引用的容器基础镜像 tag:`ghcr.io/cloudflare/computer-computerd-linux-x64:0.1.0-alpha.1`。
  • 示例 Dockerfile 在 `debian:stable-slim` 上安装 `fuse3`、`libfuse2t64`、`ca-certificates`,并从公共 GHCR 镜像拷出预编译的 `computerd` 二进制。
  • 容器内服务的线路类型发布在同仓包 `@cloudflare/computer-rpc` 中,包含 `./server`、`./client`、`./driver` 子路径。

Computer 在沙箱运行时中的定位

  • 与通用 CI 容器运行器不同,Computer 将文件系统生命周期绑定到 Durable Object,提供 SQLite 支撑的持久性与跨 DO 重启的可靠性。
  • E2B 与 Daytona 提供沙箱执行环境,但并未与 Cloudflare Workers / Agents 编程模型耦合。
  • Modal 与 Fly Machines 是更重的 VM 风格运行时;Computer 明确定位为 agent 级工作区,而非完整 monorepo 或重型 `node_modules` 安装。

谁适合关注

适合关注

  • 在单个 Durable Object 中开发需要跨轮次持久化文件的 `@cloudflare/agents` agent 原型。
  • 需要将 R2 只读参考数据与可写 agent 工作区结合的实验。
  • 需要隔离 ECMAScript 执行、持久相对导入与受管理执行记录的预研。

可以先跳过

  • 在预览阶段无法承受 API 破坏性变更的生产系统。
  • 工作区存储需求超过约 10GB 的场景。
  • 容器后端中重 IO 模式(大型 `node_modules` 安装、大体积 tarball 解压),FUSE 开销会成为可感知的瓶颈。
  • 需要通过主动 PR 来修复缺陷的项目 —— 本仓库只接受 issue 与 discussion。

风险与注意事项

预览版包,API 不稳定、明确声明不适合生产,且贡献模式禁止外部主动提交 PR。

  • README 明确 API 不稳定、设计可能变动;spec 是前瞻性的,不描述当前代码。
  • 容器侧文件系统保存在内存中,无法承载大型目录树。
  • 基于 FUSE 的容器 IO 对重负载有可感知的性能损失。
  • CONTRIBUTING.md 声明不接受主动提交的 PR,所有改动都通过 issue 或 discussion 进行。
  • GHCR 镜像固定在 alpha tag(`0.1.0-alpha.1`),表明成熟度仍处早期。
  • 安全问题不得通过公开 issue、discussion 或 PR 上报;贡献者需遵循 Cloudflare 的漏洞披露流程 https://www.cloudflare.com/.well-known/security.txt。
  • `worker-javascript` 后端提供隔离的 ECMAScript 模块执行,具备结构化输入/输出与受管理的执行记录。
  • `ws:git`、`ws:artifacts` 等可信绑定由运行时配置,而非临时暴露。
  • MIT 许可,Copyright (c) 2026 Cloudflare, Inc.,附带标准免责条款。

替代方案比较

方案适用场景代价
E2B
需要在 Cloudflare Workers 模型之外进行沙箱代码执行时。按用量计费的 SaaS。
Daytona
需要一个可自托管的开箱即用开发环境管理器时。开源免费。
Modal
需要以 Python 为主、面向通用用途的无服务器容器时。按用量计费的 SaaS。
Cloudflare Containers(直接使用)
想直接在 Cloudflare 运行容器,而不引入 Computer 的文件系统抽象时。按 Cloudflare 用量计费。

这个趋势说明了什么

基于 Workers 的 Agent 工作区 Demo

构建一个小型 Demo:`@cloudflare/agents` agent 通过 `@cloudflare/computer/tools` 在 DO 支撑的工作区中读写、编辑文件,并发布一个 artifact。

确认 agent 在 DO 重启后能恢复文件系统状态,并验证 `ls`、`edit`、`publish` 工具行为与文档一致。

面向检索型 Agent 的 R2 预取

将精选 R2 数据集以只读方式挂载到工作区目录树,agent 可基于参考数据工作,而无需将其复制进 SQLite 支撑的可写存储。

测量挂载延迟,并验证只读挂载在重启后保持一致。

后端选型基准对比

针对代表性 agent 任务,对比容器 shell、just-bash Dynamic Worker 与隔离 ESM Dynamic Worker 三种后端,为未来生产决策提供依据。

记录执行时长、重启后的持久性,以及容器后端下是否出现 `capnweb` 同步错误。

下一步建议

搭建单后端 Agent 原型

选择最贴近你用例的后端 —— 隔离 JS 选 `worker-javascript`,需要 shell 选 `container` —— 并将 AI SDK 工具接入 `@cloudflare/agents`。

  1. 在现有 Worker 或 Agent 项目中执行 `npm install @cloudflare/computer`。
  2. 选择一个后端入口:`@cloudflare/computer/backends/container`、`@cloudflare/computer/backends/worker-shell` 或 `@cloudflare/computer/backends/worker-javascript`。
  3. 构造 `Workspace`,将 `workspace.runtime` 设置为所选后端。
  4. 导入 `@cloudflare/computer/tools`,将 `read`、`write`、`edit`、`ls` 暴露给 agent。
  5. 若使用容器后端,基于 `examples/container/Dockerfile` 构建,确认 `computerd` 守护进程与 FUSE 运行时存在。
  6. 在 github.com/cloudflare/computer 以 issue 或 discussion 提交 API 反馈,因为该包仍是预览版。

RepoDaily 判断

Cloudflare Computer 是一个雄心勃勃、范围清晰的预览版,填补了一个真实空白 —— Durable Object 内的持久化 agent 级文件系统与可插拔执行 —— 但其不稳定的 API、内存式容器文件系统与禁止 PR 的贡献模式,使它今天更像是原型工具,而非生产依赖。

信息来源