每日开源 · 第 104 期 · 早间篇
**Cloudflare Computer:**给每个 AI Agent 一台专属电脑
不是给每个 Agent 一个容器,而是给一台电脑------SQLite 文件系统 + 智能调度隔离环境与容器
项目速览
**2,850+**GitHub Stars
+796今日新增
TypeScript主要语言
MIT开源协议
一句话定位
@cloudflare/computer 是 Cloudflare 在 Agents Week 2026 开源的首日重磅项目------一个 Agent 运行时,为每个 AI Agent 提供一台专属"电脑":一个 SQLite 虚拟文件系统 + 可插拔执行后端,让 Agent 在轻量隔离环境和完整 Linux 容器之间自动选择最优执行路径。
IsolateContainerFUSESQLitejust-bashcapnweb RPCDurable ObjectsWorkers AI
**GitHub:**https://github.com/cloudflare/computer
**核心论点:**Your agent needs a computer, not a container.(你的 Agent 需要一台电脑,而不是一个容器。)
**免责声明:**本工具依赖境外公开数据源(GitHub / Cloudflare),部分平台在中国大陆需合规网络环境。
它能解决什么问题?
如果你正在构建 AI Agent 产品,一定撞过这堵墙:
-
每个 Agent 会话都需要一个容器来跑代码------一个容器就是几百 MB 内存 + 数百毫秒冷启动。
-
当你的产品有几万、几十万甚至上百万用户各自跑 Agent 时,算力账单直接爆炸。
-
Cloudflare 的判断很直接:全世界的云和超大规模厂商的算力加在一起,都不够让每家公司为每个用户的 Agent 提供独立的容器化计算环境。
-
所以行业对 CPU 算力的恐慌,和对 GPU 一样真实。
问题的本质是:不是每个任务都需要完整 Linux 环境。文件读写、数据处理、Git 操作这些轻量活儿,根本不需要启动一个完整容器。但如果你的 Agent 框架已经把"大脑"(推理循环)和"手"(执行沙箱)绑在了一起,你就没有选择------每次都要付容器的钱。
Cloudflare 的解法:分离大脑与手
大脑 (Agent 推理循环)跑在 Isolate(隔离环境)里------Workers 和 Durable Objects 背后的技术,毫秒级启动、可休眠、可无限横向扩展。
手 (执行沙箱)变成 按需调用的工具------大部分任务在 Isolate 里完成,只有需要 npm、原生二进制文件或完整 Linux 用户空间时,才升级到容器。
目标:容器只承担不到 10% 的工作
核心亮点
1. Workspace:SQLite 驱动的持久化虚拟文件系统
整个运行时的核心是 Workspace------一个基于 SQLite 的虚拟文件系统,权威状态存储在 Durable Object 中。它可以:
-
从 Git 仓库、R2 存储桶或任意文件填充内容
-
跨 DO 重启持久化所有文件操作
-
通过 R2 挂载预填充只读数据
-
提供与 node:fs 兼容的 API,无缝对接第三方 JS 库
关键是:同一套文件,跨后端共享。你在 DO 里写一个文件,容器里立刻能看到,反过来也一样。不需要手动同步。
2. 三种执行后端,模型自己选
所有后端实现同一个接口 exec(string, options),首次使用时惰性连接。Agent 拿到的 AI SDK 工具集(read / write / edit / ls / exec)里,exec 有个 backend 参数------工具描述会引导模型为当前任务选择正确的运行时。
Isolate Shell 后端
用 just-bash 把 Shell 命令转成 JavaScript,在动态 Worker 中执行。文件系统通过 Worker 绑定直接访问,无第二存储、无同步往返。**毫秒级启动,可休眠不计费。**适合:文件操作、数据处理、Git 管理。
Container 后端
用 Cloudflare Containers 提供完整 Linux 环境。文件系统通过 FUSE 挂载 提供------容器里的 computerd 守护进程负责挂载状态并通过 capnweb RPC 同步变更。有真实的 $PATH、npm、node、测试工具。适合:需要原生二进制的重任务。
Isolate JavaScript 后端
在全新动态 Worker 中运行 ECMAScript 模块,支持结构化输入/输出、持久化相对导入、已配置的库、Workspace 支持的 node:fs/promises,以及可信的 ws:git 和 ws:artifacts 模块。
Cloudflare 的实测结论:前沿模型已经非常擅长优先选择廉价的 Isolate 路径,仅在必要时才回退到容器。
3. FUSE 性能:元数据密集型操作超越真实磁盘
很多人担心 FUSE 挂载会不会太慢。实测数据出乎意料------在 Cloudflare Containers standard-2 实例(1 vCPU / 6 GiB / 12 GB)上跑 fs-bench:
stat 1000 个文件 · computerd 1972ms vs 磁盘 2659ms快 0.91 倍
rm 1000 个文件 · computerd 828ms vs 磁盘 1282ms快 0.66 倍
mkdir 树 (10×10×10) · computerd 1598ms vs 磁盘 3035ms快 0.74 倍
find 树遍历 · computerd 1814ms vs 磁盘 4404ms快 0.72 倍
git init + commit 100 文件 · computerd 459ms vs 磁盘 635ms快 0.72 倍
npm init + 微型 install · computerd 599ms vs 磁盘 631ms快 0.95 倍
原理是 computerd 的内存 inode 存储在元数据密集型操作中击败真实磁盘------覆盖了 git status、模块解析、增量构建等日常开发工作的大头。
弱项是大型顺序 I/O(64 MiB 读写比磁盘慢 30-40 倍),因为每个 512 KiB 数据块都要做内容寻址哈希。但 Cloudflare 指出:这很少影响真实开发者工作流------所以 npm init 才能追平磁盘基准。
4. 全部门控、审计、可观测
所有文件操作和 Shell 命令都受 门控(gated) ------你可以精细控制 Agent 被允许执行哪些变更。每一步操作都有 审计日志,清晰追溯 Agent 做了什么修改。这不是"事后查看日志",是执行链路上每一步的结构化记录。
Agent 可以通过 SSE(Server-Sent Events)把 exec 的实时 stdout / stderr / exit 事件流式推送到浏览器,让用户看到 Agent 在做什么。
5. 五大核心包:精巧的 monorepo
整个仓库是一个小型 monorepo,每个包各司其职:
packages/dofs
@cloudflare/dofs
Durable Object SQLite 支持的虚拟文件系统、同步协议构建块,以及 Node 的 @platformatic/vfs 提供者。这是整个文件系统的地基。
packages/rpc
@cloudflare/computer-rpc
capnweb 线路类型和服务器/客户端辅助工具------DO 与 computerd 之间的通信协议。
packages/computerd
@cloudflare/computerd
FUSE 挂载 + HTTP/WebSocket RPC 服务器守护进程,运行在沙箱容器内。负责把 DO 里的 SQLite 状态投影为真实文件系统。
packages/computer
@cloudflare/computer
顶层 Computer 包,Durable Object 使用的门面。19 份设计文档覆盖 VFS 布局、同步协议、文件系统接口、运行时接口、挂载接口、生命周期等。
packages/computer-computerd-linux-x64
预构建二进制
为 linux-x64 预构建的 computerd 二进制,通过 GHCR 镜像分发,可直接 COPY 进容器镜像。
6. 与 Vercel eve 的哲学对比
同一周出现了两大"沙箱即产品"方案,哲学几乎相反:
出发点
**Cloudflare Computer:**从 Isolate 出发,容器是后备
Vercel eve
从容器出发,在容器内隔离 Agent
文件系统
Cloudflare:DO SQLite,跨后端共享eve:文件系统优先的 Agent 目录模型
规模叙事
Cloudflare:Isolate 优先,容器 <10% 目标eve:持久化会话 + 沙箱适配器接口
两者都在回答同一个问题:如何在不启动数百万 always-on VM 的前提下,给数百万会话一个"电脑"?
实战场景展示
场景一:Bug 分诊 Agent
收到一个 GitHub Issue,Agent 自动拉取仓库、复现 Bug、定位代码、做最小修复、跑验证测试、回复 Issue。全程不需要人介入。
用 @cloudflare/computer + @cloudflare/think 实现:Agent 在 Isolate 里读代码、写修复补丁;需要跑 npm test 时,自动切到容器后端;验证通过后回到 Isolate 回复 Issue。容器只在测试那一步启动了几秒。
场景二:多租户 SaaS Agent 平台
你做一个面向企业的 Agent 平台,每个企业用户都要跑自己的 Agent。传统方案是每个用户一个容器------10 万用户就是 10 万个 always-on 容器。
用 @cloudflare/computer:每个用户一个 Durable Object + Workspace。大部分时间 Agent 在 Isolate 里做文件操作、数据处理,成本极低。只有少数用户的 Agent 需要跑构建或安装包时才临时拉起容器,跑完即销毁。10 万用户可能同一时刻只需要几百个并发容器。
场景三:文档生成 + PDF 转换
Agent 在 Isolate 里用 Code Mode 写 Markdown 食谱卡,然后在容器里跑 pandoc 生成 PDF------这是官方 examples/tutorial 的完整教程场景。Agent 自动判断:写 Markdown 不需要容器,跑 pandoc 需要原生二进制,切到容器后端。两步操作同一套文件。
场景四:Worker 项目生成 + 发布
Agent 在 Workspace 里生成一个完整的 Worker 项目,然后通过 @cloudflare/computer/artifacts 发布到 Cloudflare Artifacts 作为可克隆仓库。这是官方 examples/artifacts 的场景------Agent 不只是写代码,还能把产出物变成可分发的 Git 仓库。
场景五:实时输出流式推送到浏览器
exec 返回的不只是缓冲结果,还有一个 ReadableStream 事件流。你可以把 stdout / stderr / exit 事件转换成 SSE 帧,实时推送给浏览器端的 EventSource。用户能看到 Agent 正在跑什么命令、输出了什么------不是等它跑完才看到结果。
上手指南
**前提条件:**你需要一个 Cloudflare 账号、Workers + Durable Objects + Containers(可选)。
第一步:安装包
bash
npm install @cloudflare/computer
包提供多个入口点,按需引入:
bash
# 顶层 Workspace 门面
@cloudflare/computer
# 容器后端(含 computerd / capnweb 同步管道)
@cloudflare/computer/backends/container
# Isolate Shell 后端(just-bash)
@cloudflare/computer/backends/worker-shell
# Isolate JS 后端(ECMAScript 模块)
@cloudflare/computer/backends/worker-javascript
# Git 操作(isomorphic-git 封装)
@cloudflare/computer/git
# AI SDK 工具(read/write/edit/ls/exec)
@cloudflare/computer/tools
第二步:在 Durable Object 上创建 Workspace
bash
import { Workspace } from "@cloudflare/computer";
import {
CloudflareContainerBackend,
withWorkspaceContainer,
} from "@cloudflare/computer/backends/container";
import { DurableObject } from "cloudflare:workers";
export class Agent extends withWorkspaceContainer(
class extends DurableObject<Env> {}
) {
readonly workspace = new Workspace({
storage: this.ctx.storage, // DO 存储 → VFS 在这里
backends: [
new CloudflareContainerBackend({
container: () => this,
workspace: {
binding: "Agent",
id: this.ctx.id.toString(),
},
}),
],
});
async initialize() {
await this.workspace.ready();
await this.workspace.fs.mkdir("/workspace", { recursive: true });
}
}
第三步:文件操作
bash
// 写字符串(默认 utf8)
await this.workspace.fs.writeFile(
"/workspace/notes/todo.md", "- [ ] ship it\n"
);
// 写二进制
await this.workspace.fs.writeFile(
"/workspace/data/blob.bin", new Uint8Array([1, 2, 3])
);
// 读文件
const todo = await this.workspace.fs.readFile(
"/workspace/notes/todo.md", "utf8"
);
// 创建并遍历目录
await this.workspace.fs.mkdir("/workspace/notes/daily", { recursive: true });
for (const entry of await this.workspace.fs.readdir("/workspace/notes")) {
console.log(entry.isDirectory ? `d ${entry.name}` : `f ${entry.name}`);
}
// 全树搜索
const hits = await this.workspace.fs.grep("TODO", "/workspace", {
ignoreCase: true,
});
第四步:在沙箱里跑 Shell 命令
bash
// 同一套文件系统在容器里也挂载了
// fs 写的文件,exec 里立刻能看到,反之亦然
const run = await this.workspace.runtime.exec(
"ls -la /workspace", { encoding: "utf8" }
);
const { stdout, exitCode } = await run.result();
console.log(stdout, exitCode);
第五步:暴露 AI SDK 工具给 Agent
bash
import { createAITools } from "@cloudflare/computer/tools";
import type { ToolSet } from "ai";
override getTools(): ToolSet {
return {
...createAITools({
workspace: this.workspace,
shell: {
defaultBackend: "container",
backends: {
container: {
description:
"Cloudflare Container with a full Linux userland: " +
"npm, node, package managers, test runners, and real " +
"binaries on $PATH. Use it when a task needs more than " +
"file manipulation.",
},
},
},
}),
// 你的自定义工具...
};
}
第六步:构建容器镜像
bash
# 官方推荐的 Dockerfile 模式
FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.1.0-alpha.1 AS computerd
FROM debian:stable-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
fuse3 libfuse2t64 ca-certificates && rm -rf /var/lib/apt/lists/*
COPY --from=computerd /usr/local/bin/computerd /usr/local/bin/computerd
ENV PORT=8080
ENV MOUNT_POINT=/workspace
ENV FUSE_MOUNT=auto
EXPOSE 8080
ENTRYPOINT ["/usr/local/bin/computerd"]
**提示:**如果只用 Isolate 后端(不需要容器),可以完全跳过 Docker 镜像构建。Isolate Shell 后端通过 just-bash 在动态 Worker 中运行,无需任何容器基础设施。
官方示例一栏:
-
examples/container --- 容器内运行 computerd,HTTP 接口
-
examples/worker-shell --- 无容器,just-bash 在 Worker 里跑
-
examples/think --- Think 聊天 Agent + Workspace
-
examples/think-compare-runtimes --- Web UI 并排对比容器 vs Worker
-
examples/tutorial --- 分步教程:Markdown → pandoc → PDF
-
examples/artifacts --- 生成 Worker 项目并发布为可克隆仓库
-
examples/assets --- 文字转图片 + 可分享链接
今日总结与互动
Cloudflare Computer 做的事情可以概括为一句话:把"大脑"和"手"分开,让 Isolate 承担 90% 的工作,容器只在真正需要时才出场。
这不是又一个沙箱产品,而是 Cloudflare 把自己近十年的 Isolate 技术押注------从 Workers 到 Durable Objects 到 Dynamic Workers------打包成一个可复用的 Agent 运行时。19 份设计文档、完整的 monorepo 结构、从 fs-bench 到 npm install 的完整性能基准,都说明这不是概念验证,是认真的工程。
当然,目前还是 早期预览版------API 不稳定、不适合生产环境、<10% 容器目标是期望值不是 SLA。但如果你在构建大规模 Agent 平台,这个项目的架构思路值得认真研究。
**今日问题:**你觉得"容器作为工具而非家园"的思路对吗?你的 Agent 工作流中,有多少比例真的需要完整 Linux 环境?欢迎在评论区聊聊。
--- 每天一个值得深读的开源项目 ---
本文素材来自 Cloudflare 官方博客(中英文版)、GitHub 官方 README 及 docs/ 设计文档、docs/19_performance.md 性能基准、explainx.ai 深度架构分析、Developers Digest 技术评论、getaibook.com 编排教程、Cloudflare 开发者文档 Changelog。