Durable Object · SQLite · 可插拔执行层

Cloudflare
Computer.fs

一个运行在 Durable Object 内部的虚拟文件系统。以 SQLite 保存权威状态,通过 workspace.runtime 暴露可插拔的执行层 —— 容器、隔离 Shell、隔离 JavaScript,三种后端即插即用。

仅供预览

此包仅作为预览版提供以收集反馈。API 不稳定,设计可能发生变化。适用于实验、探索和原型,目前不适合生产环境使用。

docs/ 下的规范是前瞻性的 —— 请将其作为设计意图来阅读,而非对当前代码的描述。

01 · 概览

一台藏在 Durable Object 里的计算机

Cloudflare Computer 把权威状态收敛到 SQLite,把执行能力抽象为可插拔后端。一个 Workspace 可以在稳定 ID 下注册多个后端,也可以不配置任何后端 —— 此时调用方只能使用文件系统。

3种可插拔执行后端
1个执行入口 runtime.exec()
SQLiteDurable Object 权威状态存储
FUSE容器后端的真实文件系统挂载
02 · 执行后端

三种后端,一个入口

所选后端决定 source 是 shell 命令还是 ECMAScript 模块。后端在首次使用时惰性连接。

01 / CONTAINER

容器Container · FUSE 挂载

将 SQLite 状态投射到沙箱容器中,作为真实的 FUSE 挂载。沙箱内的守护进程 computerd 将状态挂载为文件系统,并通过 capnweb RPC 通道将变更同步回去。

完整 Linux 用户空间 真实二进制文件 真实网络 capnweb RPC
02 / ISOLATE SHELL

隔离 ShellDynamic Worker · just-bash

在 Dynamic Worker 中运行 just-bash。它通过 Workers RPC 直接访问权威 Workspace,因此不存在第二个存储或同步往返 —— 状态始终只有一份。

无第二份存储 无同步往返 Workers RPC just-bash
03 / ISOLATE JAVASCRIPT

隔离 JavaScriptDynamic Worker · ES Modules

在全新的 Dynamic Worker 中运行 ECMAScript 模块,支持结构化输入/输出、持久相对导入、已配置的库、基于 Workspace 的 node:fs/promises,以及受信任的 ws:gitws:artifacts 模块。

结构化 I/O 持久相对导入 node:fs/promises ws:git · ws:artifacts
03 · 运行模型

稳定 ID 下的多后端注册

一个 Workspace 可以在稳定 ID 下注册多个后端,调用侧无需关心执行发生在何处。

ƒ

唯一的执行入口

workspace.runtime.exec(source, { backend }) 是唯一的执行入口,执行位置由 backend 参数指定。

source 的含义由后端决定

容器与隔离 Shell 后端将 source 视为 shell 命令;隔离 JavaScript 后端则将其视为 ECMAScript 模块。

惰性连接

后端在首次使用时才建立连接,不为未使用的后端付出任何启动开销。

纯文件系统模式

Workspace 也可以不配置任何后端来构建,此时调用方只能使用文件系统 —— 适合只需要权威状态的场景。

workspace.js TypeScript
// 在稳定 ID 下注册多个后端
const workspace = await createWorkspace({
  backends: {
    container: containerBackend(),
    shell:     isolateShellBackend(),
    js:        isolateJsBackend(),
  },
});

// shell 命令 → 容器
await workspace.runtime.exec(
  "ls -la /workspace",
  { backend: "container" }
);

// ES 模块 → 隔离 JavaScript
await workspace.runtime.exec(
  "./tasks/build.mjs",
  { backend: "js" }
);
04 · 使用方式

安装与上手

如果你想基于 Cloudflare Computer 进行开发,安装 @cloudflare/computer 并参考该包的 README —— 其中包含安装步骤、入口映射,以及 fs 和 runtime 接口的完整示例。

terminalshell
# 安装顶层 Computer 包
$ npm install @cloudflare/computer

提交反馈

Bug 报告、修复提案、功能请求与设计提案,请通过 issues 与 discussions 提交。

CONTRIBUTING.md →

协作者指南

已获批准的协作者请遵循 COLLABORATORS.md 中的搭建、构建与测试说明。

COLLABORATORS.md →
05 · 示例

examples/ 目录

包含公共接口的可运行消费者。每个示例都是一个独立的 Worker 工作区,附带自己的 README。

07 · 性能

元数据密集?快过真实磁盘

computerd 的 FUSE 挂载在元数据密集型操作上优于真实磁盘,在大型顺序 I/O 上则略逊。

完整的 fs-bench 数据、与 cloudflare/sandbox-sdk 的 npm install 对比,以及复现方法,都记录在性能文档中。

docs/19_performance.md →
元数据密集型操作 · computerd FUSE优于真实磁盘
元数据密集型操作 · 真实磁盘基准
大型顺序 I/O · computerd FUSE略逊
大型顺序 I/O · 真实磁盘基准

※ 示意图,定性反映文档结论;精确数字请查阅 docs/19_performance.md

08 · 文档与贡献

深入阅读

设计规范

docs/ 目录下的设计规范具有前瞻性,请作为设计意图来阅读,而非对当前代码的描述。

其中 docs/19_performance.md 记录了文件系统基准测试的完整数据。

浏览 docs/ →

贡献方式

我们通过 issuesdiscussions 接受 bug 报告、修复提案、功能请求和设计提案。我们不接受未经邀请的 pull request。

如果你作为 AI 代理在此仓库中工作,请从 AGENTS.md 开始,并参阅 .agents/skills/ 下的技能文件。

公开贡献路径 →