CFComputer 导读

你的 Agent 需要一台电脑, 而不是一个容器

Cloudflare 发布 early preview 的 @cloudflare/computer。这篇导读会顺着官方博客的图与架构,把「电脑」到底指什么讲清楚——再对照社区怎么读这些图。

包名
@cloudflare/computer
状态
Early Preview
存储
DO + SQLite FS
运行时
Isolate + Container
Cloudflare Computer 官方封面:橙色背景上的 neon 电脑
官方封面不是在画机房里的物理机——neon 边框的「电脑」更像一块可编程的工作台:有屏幕(状态与会话)、有键盘感(输入/工具)、有底座(平台)。整篇文章的隐喻从这里开始:Agent 缺的不是又一个 container,而是一台能长期拥有文件、并能换手干活的电脑。

Cloudflare Computer 到底是什么?

一句话:它是一个面向 AI Agent 的运行时抽象(开源包 @cloudflare/computer),不是「再给你一台 VPS」。

Agent 写代码、改仓库、跑命令时,真正需要的是:一块 持久、可声明的文件系统,以及按任务轻重选择的执行环境。Cloudflare 的答案可以拆成三句:

  • 文件系统本体在 Durable Object 的 SQLite 里——先记住「实在 DO,不在容器盘」;
  • 轻活走 V8 isolate + just-bash(把 bash/常用命令用 TS 实现,在 Dynamic Worker 里跑);
  • 重活(npm、原生二进制、完整 Linux 工具链)才按需起 Cloudflare Container,用 FUSE 挂载同一份 FS,改完再同步回去。

博客标题写得很直白:「Your agent needs a computer, not a container」——容器是工具,不是每个 Agent 的默认形态。下面我们按官方图的叙事顺序,把这句话展开。

声明式 Workspace

Git / 云存储 / 自定义文件预填充,Agent 启动即有工作区

双 Backend exec()

isolate 默认;container 按需;模型按描述自选正确率很高

AI SDK Tools

read / write / edit / ls / exec,对接常见 agent harness

为什么「一人一容器」撑不住?

传统 agent 平台习惯:每个 session / 每个 agent 绑一个容器。问题不在 Docker 本身,而在规模与成本——全球 CPU 算力在涨,Agent 数量可能比人类用户多几个数量级。容器启动慢、占资源、难 hibernate;更要命的是,它把「思考循环」和「动手环境」绑死了。

官方博客用两张对照图说明这种绑定。先看「旧世界」——把下面这张图当成一张组织架构图读:

容器时代:每个 agent 绑一个 container
官方图:Container era — 每个 Agent 对应一个沙箱容器

注意左右结构:左边 Agent harness(大脑循环)通过 Tools 连到右边的整台 Container。中间没有共享文件系统层——文件、进程、安装的工具,都活在容器生命周期里。Agent 一多,你就在为每个「大脑」预留一台完整 Linux。

这张图想强调的失败模式是:hands(动手的地方)和 brains(决策循环)共用同一生命周期。容器一灭,工作现场容易碎;容器常驻,又贵又难扩。于是博客提出下一阶段——把二者拆开:

isolate 时代:brain 与 hands 分离
官方图:Isolate era — Brain 在 isolate;Hands 变成可调用的沙箱工具

对比上一张:中间仍是 Tools,但右边的 Container 缩成了「Sandbox tool」——它不再是 Agent 的宿主,而是可调用的手。左边 Brain 可以跑在 isolate / Durable Object 上:能 hibernate、能水平扩,空闲时不必占着一整台 Linux。

作者 Matt Carey 把同一思想压成一句传播语:Separate the agent hands (tools) from the brains (harness)。他发的示意更抽象,但和博客两张图是同一条主线:

Matt Carey:Separate brains from hands
@mattzcarey · 脑在左、手在右——工具与 harness 解耦后,才长得出新原语

读这张图时不要当成装饰:左边 Brain 是「想下一步干什么」;右边 Hands 是「去真实环境改文件/跑命令」。Cloudflare Computer 要做的,就是给这双手一套可切换的运行时,并让双手看到的文件始终是同一份。

拆开之后,Cloudflare 才能把自家最强的三块积木重新拼上:Isolates(快、可 hibernate)、Durable Objects + SQLite(状态与文件同址)、Containers on demand(只在真需要 Linux 用户态时出现)。

架构:脑在 DO,手有两条路

把脑手分离落到 Cloudflare 上,形状大概是:Agent harness 住在 Durable Object 里;它下面挂一个 Workspace(虚拟文件系统);再往下才是 isolate shell 与 container 两条执行路径。下面这张是导读用的结构图(非官方原图,方便一眼扫完):

Brain / Hands 混合架构

大脑在 Durable Object 里编排;双手按任务选 isolate 或 container

Agent Harness(Brain)Durable Object

代理循环、工具调用、权限与审计;可 hibernate,状态持久

Workspace · 虚拟文件系统SQLite-backed

源:Git / 云存储 / 自定义文件 · 读写、edit、ls · 变更双向同步

read / write / editgit clone & commitexec()审计轨迹
Isolate Shell默认 · 轻量

Dynamic Worker + just-bash:把 shell 译成 JS。适合 cat / grep / sed / jq、改文件、数据加工。

  • 毫秒级启动 · 可水平扩展
  • 通过 Worker binding 访问 FS
Container Runtime按需 · 全 Linux

Cloudflare Containers + FUSE 挂载同一文件系统。npm / node / 原生二进制 / 测试跑通。

  • FUSE 挂载 · 变更回写 DO
  • 目标:多数任务留在 isolate

前沿模型根据 tool description 选择 backend,测试中正确率很高

isolateexec()container

官方在传播侧也有一张「一张图说完」的版本。Thomas Gauvin(Cloudflare Dev Platform)转述的重点是:one durable computer, shared across isolates and containers——不是两台电脑,是一台电脑、两种干活姿势:

Thomas Gauvin:one durable computer
@thomasgauvin · 一台 durable computer,跨 isolate 与 container 共享

图上三个关键词值得对着读:Durable(文件与状态不随进程消失)、Shared(isolate 和 container 看见同一棵树)、Efficient backend(每个任务选更划算的后端)。如果你只记一张传播图,记这张就够。

Rita Kozlov(VP Developers & AI)在 Day 1 线程里也把 Computer 放在「先给 agent 声明式文件系统」这个更克制的表述上——不是立刻承诺全能 IDE,而是从「你需要看到、改到、存下文件」开始抽象:

Rita Kozlov 推文:介绍 @cloudflare/computer preview
@ritakozlov · experimental preview:从声明式 filesystem 起手

她强调的是「builds on what's unique to Cloudflare」:DO + containers + isolates 的组合拳,而不是另起一套 agent 云。读法:Computer 是平台原语的产品化包装,所以它能和 Workers 生态共用同一套部署与计费心智。

Workspace:一份 FS,两种 runtime

脑手分离之后,真正难的问题变成:双手轮换时,桌上的文件怎么还是同一份?官方博客用一张横构图回答——建议按「左 → 中 → 右」读:

共享文件系统横跨 isolate 与 container
官方图:同一 Workspace FS 横跨 Isolate Shell 与 Container

中间是持久化文件树(Workspace)。左边 Isolate shell 用 just-bash:shell 语义被翻译成 JS,在 Dynamic Worker 里跑,适合 cat/grep/sed/jq、改文件、轻量加工。右边 Container 通过 FUSE 把同一棵树挂进完整 Linux,适合 npm install、原生二进制、测试跑通。关键不在「有两个沙箱」,而在「两个沙箱读写的是中间那份」——变更要能同步回去。

再往下,博客把这棵树抽象成编程对象 Workspace。这张结构图解释的是「数据从哪来、谁消费它」:

Workspace 对象与 backends 结构图
官方图:sources → Virtual filesystem → 多个 runtime backends

自上而下三条线:① Sources——Git、云存储、自定义文件,用来「灌满」工作区;② Virtual filesystem——API 层(node:fs 兼容、读写 edit);③ Backends——Isolate shell、Isolate JS、Container 等,可以挂多个。对开发者的含义是:你声明工作区从哪来,声明能用哪些手,其余路由交给 runtime / 模型选择。

那 Agent 怎么决定用哪只手?博客用 exec 工具的路由图说明——这是「智能选后端」的产品化入口:

exec 工具选择 isolate 或 container
官方图:exec 按任务描述路由到 isolate 或 container

同一条 exec() 接口,两种去向。示例很直白:改文件、文本处理 → isolate;需要完整用户态的 npm install → container。官方称前沿模型按 tool description 选择时正确率很高(博客写到 >90%)。你要做的通常不是手写 if/else,而是把每个 backend 的能力写清楚,让模型选。

最后一张官方端到端图,把前面所有块串回 agent 循环。建议按箭头顺序读一遍:

端到端:Agent 通过 tools 使用 computer
官方图:Agent loop → AI tools → Computer runtime → 写回 FS

最左是 Agent 循环(观察-思考-行动);中间 tools 层暴露 read / write / edit / ls / exec;右侧 Computer runtime 再落到 isolate 或 container;结果回到中间的 FS,下一轮循环就能看见。审计与权限也卡在这条链路上——「能干什么」被门控,而不是裸奔在容器里。

把四张官方图收成 checklist

  • just-bash:isolate 里的 shell 是 TS 实现的命令子集,所以 cat/grep/sed/jq 不必为了「像 bash」就起容器(日文开发者 Aiji 专门点了这点)。
  • FUSE:容器侧挂载的是 DO 上的虚拟 FS,不是容器本地盘当真相源。
  • 负载目标:官方希望大多数工作留在 isolate,容器是长尾重活(文中目标量级是 <10% 任务需要容器)。
  • 安全:文件操作可门控、可审计——脑手分离后,「停得住的手」才有契约。

怎么用(Early Preview)

概念对齐之后,代码侧入口很薄:装包 → 在 Durable Object 上挂 Workspace → (可选)挂 Container backend → 用 createAITools() 接到 agent 循环。示意如下(细节以官方 repo 为准):

npm install @cloudflare/computer
import { Workspace } from "@cloudflare/computer";

// 在 Agent / Durable Object 类中
override workspace = new Workspace({
  storage: this.ctx.storage,
  useThink: true, // temporary flag
});

需要完整 Linux 时,把 container 当成 backend 挂上——对应前面图里「右边那只手」:

import { CloudflareContainerBackend } from "@cloudflare/computer/backends/container";

backends: [
  new CloudflareContainerBackend({
    container: () => this,
    workspace: {
      binding: "Agent",
      id: this.ctx.id.toString(),
    },
  }),
]

典型预置:bug triage 时先写报告、clone 仓库——这些都是在改中间那棵 Workspace 树,而不是在某个一次性容器里随手 mkdir:

async startTriage(report) {
  await this.workspace.fs.mkdir("/workspace", { recursive: true });
  await this.workspace.fs.writeFile(
    "/workspace/BUG_REPORT.md",
    `# ${report.title}\n\n${report.body}\n`,
  );
  await this.workspace.git.clone({
    url: report.repoUrl,
    dir: "/workspace/repo",
  });
}

完整教程与示例:github.com/cloudflare/computer,以及 examples/tutorial。

同一天一起发布的五件事

Ashley Peacock 的 Day 1 长帖把 Computer 放在 Agents Week 上下文里。Computer 是主角,但同日还有四项会改变「Agent 怎么连、怎么记账、怎么跨语言调」的能力面:

源头串讲可以看 Ashley 的帖,以及 Cloudflare 官方账号的发布——它们几乎是「公告正文 + 入口链接」,真正的图解与机制仍在博客里:

Ashley Peacock@_ashleypeacock· Aug 3

It's time for another Cloudflare Agents Week… Day 1 brings us: Cloudflare Computer · Workers & Containers get inbound TCP & gRPC · Billable Usage API · Python Workers RPC · Running Kimi & GLM at scale Agents need a filesystem… The new computer package provides access to both filesystems (isolate + container), stored in a SQLite-backed Durable Object.

16 24 28617,519 views
Cloudflare@Cloudflare· Aug 3

Agents need more than just a container to scale. We're introducing @cloudflare/computer, an agent runtime that dynamically orchestrates between fast, efficient isolates and full Linux containers to give every agent a computer of its own.

17 48 34727,297 views

社区怎么读这些图

公开讨论里,人们很少复读营销句,而是在纠正一个容易误解的箭头方向:不少人第一眼以为「容器里塞了文件系统」;仔细读完后发现,真相源在 DO,容器只是挂载者之一。

日文圈有一张信息图,把「共享 FS + 按需换 runtime」压成竖版海报。对照我们前面的官方横构图,它相当于把同一故事竖着讲了一遍:

日文社区信息图:共享 filesystem,isolate 与 container 切换
@kapikunAI · 重点不在更聪明的模型,而在选择 / 同步 / 审计被收进同一个 runtime

这张图的读法:上半部分讲「不要一人一容器」;中间强调共享文件系统;下半部分点出 isolate(快)与 container(全)的分工。它和官方 blog-img-5 是同一结论,只是传播语言更偏海报。

下面这些回复 / quote,可以当成「社区验收清单」——他们在验证自己是否读懂了架构,而不是单纯叫好:

  • Aiji:先以为 FS 在容器上,读完发现在 DO;just-bash 让 cat/grep 免容器。
  • Viking:用中文把 FUSE / just-bash / 动态切换 runtime 串成一段,说明「可切换」才是卖点。
  • charl.dev:推演到「每个 repo 将来可能是一台电脑」——Workspace 粒度可以落到仓库级。
  • Jonas:追问大文件是否 spill 到 R2、命令不存在时能否升级到真 shell、容器能否快速挂起恢复——这是下一层产品问题,也说明 Computer 打开了期待空间。
Viking@vikingmute· Aug 3

Cloudflare 刚出了 computer 库,理念非常有趣:一个在 Durable Object 里的虚拟文件系统,基于 SQLite 做持久化;Container 通过 FUSE 挂载;Isolate Shell 用 just-bash 在 Dynamic Worker 里跑。每个 Agent 有持久化工作空间,任务间动态切换 runtime。

2 5826 views
Aiji Uejima@aiji42_dev· Aug 3

@cloudflare/computer、コンテナにFS載せたのかと思ったら逆で、実体はDO側。しかもV8 isolateでbashが動く。just-bashがbashと主要コマンドをTSで実装したやつなので、cat/grep/sed/jqにコンテナが要らない。

3
さいと@saitolume· Aug 3

CloudflareでAgentがSandboxのコンテナを抜け出してComputerを使えるようになった。Sandboxだけでも最高だったのに、これは可能性広がるな

Cloudflare @Cloudflare

Agents need more than just a container to scale. We're introducing @cloudflare/computer…

1
charl.dev@charl_dot_dev· Aug 3

So each repo will in future be it's own computer. I like it

1
Jonas Templestein@jonas· Aug 3

So cool! Does this handle 1) Really large files (spillover to R2) 2) Organically upgrading from just-bash to a real shell when a command doesn't exist 3) Suspending a container and bringing it back with data intact That's pretty much my dream scenario

3
Gregor@bygregorr· Aug 3

Cloudflare Computer alone deserved its own day.

Agentic Adam@AdamAutomates· Aug 3

I come from a non-coding background but have been building on Cloudflare with AI for almost a year… Super excited to test out Cloudflare Computer

2

读完图之后,建议带走的五句

  • 不是在线 VPS:是 DO 上的持久工作空间 + 按需沙箱。
  • 脑手分离:harness 负责决策与权限;hands 负责执行。
  • 一份 FS,两种姿势:isolate 便宜快,container 全量 Linux。
  • just-bash 让「像 shell」不等于「必须容器」。
  • 模型选 backend 的前提,是你把每个 backend 的能力描述写清楚。

原始资料与延伸阅读

本页为导读:图解与引述来自公开博客与 X 讨论,版权归 Cloudflare / 原作者。产品仍为 early preview,落地以官方文档与仓库为准。

下一步

若你在做 coding agent / 仓库级自动化:先画清「脑在哪、手有几只、文件真相源在哪」三件事,再决定要不要上 Computer——它就是为这三件事准备的抽象。