Give your agent a computer 👾
Cloudflare Computer
Cloudflare Computer 是一个运行在 Durable Object 内部的虚拟文件系统。Durable Object 通过 SQLite 保存权威状态,并通过 workspace.runtime 提供一个可插拔的执行接口。目前提供三种后端:
- 容器(Container):将 SQLite 状态通过 FUSE 挂载到沙箱容器中。沙箱侧的守护进程(
computerd)将状态挂载为文件系统,并通过 capnweb RPC 通道同步变更。完整的 Linux 用户空间、真实的二进制文件、真实的网络环境。 - 隔离壳(Isolate shell):在动态 Worker 中运行 just-bash。它通过 Workers RPC 访问权威的 Workspace,因此不存在第二个存储或同步往返。
- 隔离 JavaScript(Isolate JavaScript):在全新的动态 Worker 中运行 ECMAScript 模块,支持结构化输入/结果、持久化相对导入、配置库、基于 Workspace 的
node:fs/promises,以及受信任的ws:git和ws:artifacts模块。
Workspace 可以在稳定 ID 下注册多个后端。workspace.runtime.exec(source, { backend }) 是唯一的执行入口点;所选后端决定 source 是 shell 命令还是 ECMAScript 模块。后端在首次使用时延迟连接。
Workspace 也可以在完全没有后端的情况下构建,仅向调用者提供文件系统本身。
Important
仅预览版 此软件包仅作为预览版提供,用于收集反馈。API 不稳定,设计可能会发生变化。
适用于实验、探索和原型开发。目前不适合用于生产环境。
docs/ 目录下的规范具有前瞻性——阅读它是为了了解其意图,而非描述当前代码。
使用方法
如果您想基于 Cloudflare Computer 进行构建,请安装 @cloudflare/computer 并遵循该软件包的 README——其中包含安装步骤、入口点映射以及 fs 和 runtime 接口的实际示例。
要提供反馈,请参阅 CONTRIBUTING.md。获得批准的协作者应遵循 COLLABORATORS.md 中的设置、构建和测试说明。
示例
examples/ 目录包含可运行的公共接口使用示例。每个示例都是一个 Worker 工作区,并配有各自的 README。
examples/container— 在容器内运行computerd,挂载工作区,并通过 capnweb 与 Durable Object 通信。提供write/read/execHTTP 接口。examples/worker-shell— 与容器示例具有相同的 HTTP 接口,但该 shell 通过env.LOADER加载的动态 Worker 运行 just-bash。无需容器。examples/worker-javascript— 与worker-shell类似,但exec在动态 Worker 中计算 ECMAScript 模块,而非运行 shell 命令。examples/egress— 通过容器、Worker shell 和 Worker JavaScript 后端发送一个 URL,并应用匹配的none、all或自定义出口策略。examples/mcp— 一个 Computer MCP 示例:一个由持久工作区、Worker shell 和完整 Linux 容器支持的 Code Modecode工具。examples/think— 一个@cloudflare/think聊天代理,它将工作区用作其工作目录,可从终端访问。examples/think-compare-runtimes— 一个 Web UI,可在容器和 Worker 运行时上并排运行相同的代理任务。examples/tutorial— 一个分步构建示例:一个端点,一个代理在主机上编写 Markdown 食谱卡片,并在容器中运行pandoc将其转换为 PDF。examples/artifacts— 在工作区中生成一个 Worker 项目,并将其作为可克隆的仓库发布到 Cloudflare Artifacts。examples/assets— 使用 Workers AI 将提示词转换为图像,将其写入工作区,并通过@cloudflare/computer/assets返回一个可共享链接。
仓库结构
本仓库是一个小型单体仓库。每个包都有自己的 README,其中包含特定于包的状态和使用说明。
packages/dofs(@cloudflare/dofs)—— 基于 Durable Object SQLite 的虚拟文件系统、同步协议构建块,以及适用于 Node 的@platformatic/vfs提供程序。packages/rpc(@cloudflare/computer-rpc)—— capnweb 有线类型以及在 Durable Object 和computerd之间共享的服务器/客户端辅助工具。packages/computerd(@cloudflare/computerd)——computerd守护进程:一个 FUSE 挂载点,外加一个在沙箱容器内运行的 HTTP/WebSocket RPC 服务器。packages/computer(@cloudflare/computer)—— 供 Durable Objects 使用的顶级 Computer 包。工作进行中。packages/computer-computerd-linux-x64—— 预构建computerdlinux-x64 二进制文件的私有 Docker 镜像上下文。发布工件是镜像,而非 npm 包。
性能
computerd 的 FUSE 挂载在元数据密集型工作上优于实际磁盘,但在大型顺序 I/O 方面稍逊一筹。有关完整的 fs-bench 数据、cloudflare/sandbox-sdk npm install 比较以及如何重现这些结果,请参见docs/19_performance.md。
文档
docs/—— 设计规范。具有前瞻性;请将其视为预期目标。docs/19_performance.md—— 文件系统基准测试。
贡献
我们通过 issue 和讨论接受错误报告、修复建议、功能请求和设计提案。我们不接受未经请求的拉取请求。有关公开贡献途径,请参见CONTRIBUTING.md。
已获批准的协作者应遵循COLLABORATORS.md中的设置、格式化、测试、提交消息和拉取请求约定。
如果您作为代理在此仓库中工作,请从AGENTS.md以及.agents/skills/下的技能开始。
许可协议
MIT。详见 LICENSE。