MOKE AIGC EN
← 返回技术与资讯
AI HOT 产品发布/更新

Cloudflare 推出 @cloudflare/computer 预览版:为智能体提供虚拟文件系统与多执行环境

Cloudflare 发布 @cloudflare/computer 早期预览版,这是一个开源智能体运行时,为每个智能体提供虚拟文件系统,并支持在 isolate、容器沙箱或浏览器中执行代码。

能力最强的智能体有一个简单的共同点:它们都拥有属于自己的计算机来开展工作。

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

今天,我们推出 @cloudflare/computer 的早期预览版。@cloudflare/computer 软件包提供了一个智能体运行时,其中在隔离环境、容器沙箱或 Web 浏览器中运行哪些代码,其细节和机制均由平台处理。每个智能体都会获得一台计算机,运行时则针对效率和可扩展性进行优化。

我们相信,为了满足智能体系统对算力日益增长的需求,我们必须超越传统容器化方案,寻找新的解决方案。

改变智能体的构建方式

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

无论框架运行在哪里,给每个智能体都分配一个容器都面临挑战——纵览所有云厂商、所有超大规模云服务商,全球的计算能力远远不足以让每家公司为每个用户的智能体都提供各自独立的容器化计算环境。这种方式无法扩展到数亿、乃至数十亿个并发智能体。这正是整个行业对 CPU 算力(而不仅仅是 GPU 算力)产生迫切、甚至恐慌性需求的原因。

在 Cloudflare,我们长期以来一直在攻克这个问题,打造了一种更高效的计算原语:isolate(隔离实例)。大约十年前,当我们推出 Cloudflare Workers 时,我们就押注了这个非共识的赌注。将近六年前,当我们推出 Durable Objects 时,我们再次押注于此。我们之所以下这个赌注,是因为 isolate 具有无限的水平扩展能力。它们可以极快地启动和销毁。当智能体空闲时,它们可以休眠,存储智能体自身的状态,甚至可以启动自己的 isolate 来运行不受信任的代码。Isolate 是实现水平扩展的最佳方式,而水平扩展正是智能体所需要的。

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

但是,当我们看到构建智能体需要多种底层计算原语(isolate 和容器),并且我们的客户和开发者需要在用户空间中自行组合它们时,我们认为我们可以做得更好。我们认为我们可以提供一个更简单的抽象。

这就是为什么我们启动这个实验,将 @cloudflare/computer 作为开源库发布,以便与那些正在突破大规模运行智能体边界的客户共同学习。

跨 isolate 和容器的共享文件系统

@cloudflare/computer 包从一个简单的设想开始:如果我们给智能体一个预先准备好的、声明式定义的文件系统,其中包含处理当前任务所需的一切,并提供一系列执行环境来操作这些文件,每个环境在速度、能力和成本方面各有优劣,那会怎样?

事实证明,如今的智能体在为目标任务选择合适环境方面已经出人意料地擅长。只需要操作文件、处理数据或管理 git 仓库的任务,可以在隔离环境(isolate)中运行。需要 Linux、npm 或原生二进制文件的命令,则可以在容器中运行。两者都作用于同一套文件,并与源文件系统保持同步。

@cloudflare/computer 包提供了一个持久化文件系统,你可以将其与 git 仓库、存储桶或任何你选择的文件配合使用。它提供了相应的工具,让你可以通过 Code Mode 或 bash 命令来读取、写入和编辑文件。所有操作都经过门控、审计和观测,让你能够对智能体被允许执行的更改进行细粒度控制,同时还能获得一份清晰的审计记录,展示智能体实际执行了哪些操作。

如何使用

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

通过 npm 安装:

主要用例是为智能体提供该文件系统和工具。例如,下面展示了如何在由 @cloudflare/think 驱动、旨在对 bug 报告进行分类的智能体上实例化工作区。

@cloudflare/computer 包内置了多个执行后端,你也可以编写自己的后端。这里我们接入了一个 Cloudflare 容器。

将文件、git 和 shell 工具与特定于产品的工具一起暴露出来,用于回复已上报的问题。

模型可以在智能体循环中使用这些工具,但你也可以直接使用工作区 API,例如在向智能体发送提示词之前准备环境。

请查看工作区仓库,了解更多关于如何使用不同后端和工具的示例,其中还包括一个从零开始构建智能体的分步教程。

工作原理

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

工作区支持可选的执行运行时,允许代码针对文件系统运行。所有运行时都支持相同的接口 exec(string, options),目前内置提供了两种(但你也可以编写自己的运行时):

一种基于隔离环境的运行时,使用 just-bash 将 shell 代码翻译成 JavaScript,并在动态 worker 中运行。在这里,文件系统可直接通过 worker bindings 访问。

一种容器运行时,使用 Cloudflare Containers 提供完整的 Linux 环境。在这里,文件系统通过用户空间文件系统(FUSE)挂载提供,确保文件对容器可用,并且更改会同步回来。

Workspace 类提供了一个 API 接口,用于直接操作文件系统,同时也是一个与 node:fs 兼容的包装器,方便与第三方 JavaScript 库一起使用。

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

下一步计划

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

我们推出 @cloudflare/computer 的目标是,为智能体提供一个运行时,使其工作中需要容器的比例低于 10%,而编码任务、音视频处理以及文档创建都可以由隔离环境来处理。

今天就试试这个早期预览版吧——我们期待听到你的想法。