computer:基于 Cloudflare Durable Object 的虚拟文件系统项目

Give your agent a computer 👾

分支15Tags18
当前项目代码仓暂无内容

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:gitws:artifacts 模块。

Workspace 可以在稳定 ID 下注册多个后端。workspace.runtime.exec(source, { backend }) 是唯一的执行入口点;所选后端决定 source 是 shell 命令还是 ECMAScript 模块。后端在首次使用时延迟连接。

Workspace 也可以在完全没有后端的情况下构建,仅向调用者提供文件系统本身。

Important

仅预览版 此软件包仅作为预览版提供,用于收集反馈。API 不稳定,设计可能会发生变化。

适用于实验、探索和原型开发。目前不适合用于生产环境。

docs/ 目录下的规范具有前瞻性——阅读它是为了了解其意图,而非描述当前代码。

使用方法

如果您想基于 Cloudflare Computer 进行构建,请安装 @cloudflare/computer 并遵循该软件包的 README——其中包含安装步骤、入口点映射以及 fsruntime 接口的实际示例。

要提供反馈,请参阅 CONTRIBUTING.md。获得批准的协作者应遵循 COLLABORATORS.md 中的设置、构建和测试说明。

示例

examples/ 目录包含可运行的公共接口使用示例。每个示例都是一个 Worker 工作区,并配有各自的 README。

  • examples/container — 在容器内运行 computerd,挂载工作区,并通过 capnweb 与 Durable Object 通信。提供 write / read / exec HTTP 接口。
  • 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,并应用匹配的 noneall 或自定义出口策略。
  • examples/mcp — 一个 Computer MCP 示例:一个由持久工作区、Worker shell 和完整 Linux 容器支持的 Code Mode code 工具。
  • 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—— 预构建 computerd linux-x64 二进制文件的私有 Docker 镜像上下文。发布工件是镜像,而非 npm 包。

性能

computerd 的 FUSE 挂载在元数据密集型工作上优于实际磁盘,但在大型顺序 I/O 方面稍逊一筹。有关完整的 fs-bench 数据、cloudflare/sandbox-sdk npm install 比较以及如何重现这些结果,请参见docs/19_performance.md

文档

贡献

我们通过 issue 和讨论接受错误报告、修复建议、功能请求和设计提案。我们不接受未经请求的拉取请求。有关公开贡献途径,请参见CONTRIBUTING.md

已获批准的协作者应遵循COLLABORATORS.md中的设置、格式化、测试、提交消息和拉取请求约定。

如果您作为代理在此仓库中工作,请从AGENTS.md以及.agents/skills/下的技能开始。

许可协议

MIT。详见 LICENSE

项目介绍

给你的智能体配备一台电脑 👾【此简介由AI生成】

定制我的领域
329.11 K507访问 GitHub