Cloudflare 推出面向 AI 代理的 @cloudflare/computer

Cloudflare AI··作者 Aron Carroll

关键信息

该运行时建立在 Cloudflare 基于 isolate 的架构之上,公司称这种架构可以非常快速地启动和销毁、在空闲时休眠,并保存代理状态。Cloudflare 还表示,它可以按需挂载容器沙箱作为工具,把 Durable Objects 的水平扩展能力与按需的纵向算力结合起来。

资讯摘要

Cloudflare 表示,最强大的代理有一个共同点:它们都会被分配一台自己的“电脑”来使用。在 Cloudflare 看来,编码代理本来就是这样工作的,因为它们可以查看文件系统、使用 shell、运行工具、安装软件包、测试修改并持续迭代,直到完成任务。基于这一思路,Cloudflare 发布了 @cloudflare/computer 的早期预览版。这个包提供了一种代理运行时,平台而不是开发者来处理代码到底运行在 isolate、容器沙箱还是网页浏览器中的具体机制。Cloudflare 说,每个代理都会拥有一台“电脑”,而这个运行时的目标是兼顾效率与可扩展性。

公司认为,传统容器化不足以支撑代理系统未来的计算需求,尤其是当每个面向用户的代理都需要独立环境时更是如此。它指出,业界正在从“把整个代理放进容器里运行”转向“通过工具提供受沙箱保护的代码执行”,也就是把代理循环与工作环境分离开来。Cloudflare 认为,基于 isolate 的基础设施,包括 Workers 和 Durable Objects,才是更合适的扩展底座,因为 isolate 启动和停止都很快、空闲时可以休眠,而且还能保存自身状态。公司还表示,去年已经让 isolate 可以按需启动容器沙箱,而它自己的代理架构本来就是用 Durable Object 作为控制环,再在需要重计算时挂接容器。借助 @cloudflare/computer,Cloudflare 希望把这种模式简化成一个统一抽象,并以开源库的形式发布,和正在大规模构建代理的客户一起探索。

Cloudflare 推出面向 AI 代理的 @cloudflare/computer

资讯正文

最有能力的智能体有一个共同点:它们都会被分配一台自己的电脑来工作。

编程智能体就是这样运作的。你给它们一个文件系统、一个 shell、各种工具、软件包,以及运行代码的能力。它们会检查环境、做出修改、测试成果,然后继续前进。电脑为模型提供了一种熟悉的方式去作用于世界。在 Cloudflare,我们正努力提供合适的基础原语,用以构建最强大的智能体。

今天,我们推出 @cloudflare/computer 的早期预览版。@cloudflare/computer 包提供了一个智能体运行时,其中在 isolate、容器沙箱或 Web 浏览器中运行哪些代码以及这些代码如何运行的细节和机制,都由平台来处理。每个智能体都拥有一台电脑,运行时则针对效率和可扩展性进行优化。

我们认为,要满足智能体系统不断增长的计算需求,就需要寻找传统容器化之外的解决方案。

改变智能体的构建方式

在过去六个月里,我们看到这个故事出现了一种微妙的演变。年初时,在容器中启动一个容器并在其中运行智能体还是常态。近几个月来,我们看到智能体框架迅速转向通过工具提供沙箱化的代码执行。这将“手”(完成工作的沙箱)与“脑”(智能体循环)分离开来。

无论框架运行在哪里,给每个智能体都配一个容器都会带来挑战——横跨所有云、所有超大规模云厂商,全球根本没有足够的计算资源,让每家公司都为其用户的每个智能体提供各自专属的容器化计算环境。这不可能扩展到数亿,随后是数十亿并发智能体。这就是为什么业界对 CPU 计算的需求如此迫切,甚至到了近乎绝望、慌乱的程度,而不仅仅是 GPU 计算。

Cloudflare 很长时间以来一直在解决这个问题,打造一种更高效的计算原语:isolate。大约 10 年前,当我们推出 Cloudflare Workers 时,我们就做出了这一不合主流的押注。将近 6 年前推出 Durable Objects 时,我们又做了一次。我们之所以做出这样的押注,是因为 isolate 具有无限水平扩展能力。它们的启动和销毁速度极快。它们可以在智能体空闲时休眠,存储智能体自身的状态,甚至还能启动自己的 isolate 来运行不受信任的代码。isolate 是水平扩展的最佳方式,而水平扩展正是智能体所需要的。

去年,我们让 isolate 具备了启动自身容器沙箱的能力。从第一天起,Cloudflare 的架构就被设计为在 isolate 中运行智能体框架(位于 Durable Object 内),并按需调用一个挂载的容器作为工具。这使你只在必要时使用更重的计算原语,从而优化性能和成本。Durable Objects 可以无限水平扩展,而挂载的容器则让它能够垂直扩展以执行任何任务。我们自己就是这样构建智能体的,我们也看到客户正用这种方式构建出令人惊叹的东西。

但当我们审视构建智能体所需的多种底层计算原语(isolates 和 containers),以及我们的客户和开发者需要在 userspace 中自行将它们组合起来这一需求时,我们认为我们还能做得更好。我们认为,我们可以提供一种更简单的抽象。

这也是为什么我们要从这次实验开始,以开源库 @cloudflare/computer 的形式发布它,和那些正在推动大规模运行智能体边界的客户一起学习。

跨 isolates 和 containers 共享的文件系统

@cloudflare/computer 包从一个简单的前提出发:如果我们给智能体一个预先准备好的、以声明式方式定义的文件系统,里面包含完成当前任务所需的一切,再配上一组可在这些文件上运行的执行环境,而这些环境在速度、能力和成本方面各有优劣,会怎样?

事实证明,如今的智能体在选择适合当前任务的环境方面能力出奇地强。只需要处理文件、加工数据或管理 git 仓库的任务,可以在 isolate 中运行;需要 Linux、npm 或原生二进制文件的命令,可以在容器中运行。两者都针对同一组文件进行操作,而这些文件会与源文件系统保持同步。

@cloudflare/computer 包提供了一个持久化文件系统,可用于 git 仓库、存储桶或你选择的任何文件。它提供工具,让你可以通过 Code Mode 或 bash 命令读取、写入和编辑文件。所有操作都会经过门控、审计和监控,使你能够对智能体被允许执行的更改进行细粒度控制,同时保留清晰的纸面记录,显示智能体做了什么。

如何使用它

@cloudflare/computer 工作区的一个实例可以实例化在任何 Durable Object 上,以提供虚拟文件系统和执行运行时。

它可通过 npm 安装:

npm install @cloudflare/computer

其主要用例是为智能体提供该文件系统和工具。例如,下面展示了如何在一个由 @cloudflare/think 驱动、用于整理 bug 报告的智能体上实例化该工作区。

import { Think } from "@cloudflare/think";

import { Workspace, type DurableObjectStorageLike } from "@cloudflare/computer";

import { createWorkersAI } from "workers-ai-provider";

export class Agent extends Think {

override workspaceBash = false;

override workspace = new Workspace({

storage: this.ctx.storage,

useThink: true, // soon will not be needed

});

override getModel() {

return createWorkersAI({ binding: this.env.AI })("@cf/zai-org/glm-5.2");

}

override getSystemPrompt() {

return `

You are a bug triage agent.

Use the project in /workspace/repo to reproduce the bug, inspect the

code, make a focused fix when it is safe, and run verification. In your

final answer, include what you changed, which commands you ran, and

whether verification passed.`;

}

@cloudflare/computer 包提供了若干执行后端,你也可以自行编写。这里我们连接一个 Cloudflare Container。

import { Workspace, WorkspaceProxy } from "@cloudflare/computer";

import {

CloudflareContainerBackend,

withWorkspaceContainer,

} from "@cloudflare/computer/backends/container";

export { WorkspaceProxy };

export class Agent extends withWorkspaceContainer(Think) {

backends: [

new CloudflareContainerBackend({

container: () => this,

workspace: {

binding: "Agent",

id: this.ctx.id.toString(),

},

}),

/* 示例代码为便于阅读已截断…… */

}将文件、git 和 shell 工具与产品特定工具一并暴露,以便回复已报告的问题。

import { createAITools } from "@cloudflare/computer/tools";

import type { ToolSet } from "ai";

import { replyToIssue } from "./tools/github";

override getTools(): ToolSet {

return {

...createAITools({

workspace: this.workspace,

shell: {

defaultBackend: "container",

backends: {

container: {

description:

"带有完整 Linux 用户空间的 Cloudflare Container:" +

"npm、node、包管理器、测试运行器,以及真实的 " +

"二进制文件都在 $PATH 中。当任务需要的不只是 " +

"文件操作时使用它。",

replyToIssue,

};

}模型可以在 agent 循环中使用工具,但你也可以直接使用 workspace API,例如在提示 agent 之前准备环境。

async startTriage(report: { title: string; body: string; repoUrl: string }) {

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",

return this.submitMessages([

{

id: crypto.randomUUID(),

role: "user",

parts: [

type: "text",

text: [

`Triage this bug: ${report.title}`,

"错误报告位于 /workspace/BUG_REPORT.md。",

"代码仓库已检出到 /workspace/repo。",

].join("\n"),

]);

}查看 workspace 仓库,可获得更多关于如何使用不同后端和工具的示例,其中包括一个逐步教程,讲解如何从零构建一个 agent。

其工作原理

@cloudflare/computer 的核心组件是 workspace。它是一个由 SQLite 支持的虚拟文件系统,可以从各种来源填充内容,包括云存储和源代码管理。

workspace 支持可选的执行运行时,允许在文件系统上运行代码。所有运行时都支持相同的接口 exec(string, options),目前开箱即提供两种(但你也可以自行编写):

- 基于 isolate 的运行时环境,它使用 just-bash 将 shell 代码转换为在动态 worker 中运行的 JavaScript。此时,文件系统可通过 worker 绑定直接访问。

- 基于容器的运行时,它使用 Cloudflare Containers 提供完整的 Linux 环境。此时,文件系统通过用户空间文件系统(FUSE)挂载提供,这确保文件可被容器访问,且变更会同步回写。

Workspace 类提供了一个用于直接操作文件系统的 API 接口,同时还提供了与 node:fs 兼容的封装,因此可以方便地与第三方 JavaScript 库一起使用。

对于智能体使用,我们提供了一个与 AI SDK 兼容的工具包,其中包含最常用的工具:read、write、edit、ls 和 exec。exec 工具稍微特殊一些,因为它可以跨运行时工作,并接受一个 backend 参数。工具描述会引导智能体针对当前任务选择正确的运行时:要么是快速、廉价的 worker 后端,要么是功能完整的容器。在我们的测试中,前沿模型在做出正确决策方面表现非常出色,只有在确有需要时才会回退到使用容器。

接下来是什么

在 Cloudflare,我们已经看到智能体完全依赖 isolates 来构建、测试和部署使用现代工具链的 JavaScript 应用,为我们的每一位客户生成定制化文档,并使用网页浏览器执行复杂任务。

我们为 @cloudflare/computer 的目标,是为智能体提供一种运行时,使其不到 10% 的工作需要容器即可完成,而编码任务、音视频处理和文档创建都可以由 isolates 来处理。

今天就来试试早期预览版吧——我们迫不及待想听到你的想法。

来源与参考

  1. 原始链接
  2. Your agent needs a computer, not a container — introducing @cloudflare/computer

收录于 2026-08-04