Agent 需要的是一台计算机,而不是一个容器——隆重推出 @cloudflare/computer

🐟 2026-08-04 16:06 1




[!quote]+


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


在 Cloudflare,我们长期以来一直在研究这个问题,并创建了一种更高效的计算原语:隔离区(isolates)。早在近十年前推出 Cloudflare Workers 时,我们就做出了这个非主流的尝试。近六年前推出 Durable Objects 时,我们再次做出了同样的尝试。我们之所以做出这个决定,是因为隔离区可以无限水平扩展。它们的启动和销毁速度都非常快。它们可以在 Agent 空闲时进入休眠状态,存储 Agent 自身的状态,甚至可以启动自己的隔离区来运行不受信任的代码。隔离区是实现水平扩展的最佳方式,而水平扩展正是 Agent 所需要的。



去年,我们赋予了隔离区启动自身容器沙箱的能力。从一开始,Cloudflare 的架构就旨在隔离区(在持久对象中)运行 Agent 程序框架,并按需调用附加容器作为工具。这样,您只需在需要时使用更复杂的计算资源,从而优化性能和成本。持久对象可以无限水平扩展,而附加容器则支持其垂直扩展,以执行任何任务。我们自己也是这样构建代理的,并且我们看到客户也用这种方式构建了令人惊叹的应用。



但是,考虑到构建代理(隔离区和容器)需要多种底层计算原语,以及我们的客户和开发者需要在用户空间自行组合这些原语,我们认为我们可以做得更好。我们认为我们可以提供更简洁的抽象。


这就是为什么我们启动这项实验,将 @cloudflare/computer 作为开源库发布,以便与正在不断突破大规模运行 Agent 极限的客户一起学习。


@cloudflare/computer 软件包的出发点很简单:如果我们给 Agent 一个预先准备好的文件系统,以声明的方式定义,其中包含完成当前任务所需的一切,以及一系列用于操作这些文件的执行环境,每个执行环境在速度、功能和成本方面都有自己的优缺点,那会怎么样?


@cloudflare/computer 软件包提供了一个持久的文件系统,可用于 Git 仓库、存储桶或您选择的任何文件。它提供了一系列工具,允许您使用代码模式或 Bash 命令来读取、写入和编辑文件。所有操作都受到门控、审计和监控,使您可以对 Agent 可以执行的更改进行精细控制,并清晰地记录 Agent 执行的操作。


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



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



  • 一个基于隔离的运行环境使用just bash将shell代码转换为JavaScript,运行于动态工作程序中。这里,文件系统可通过工作绑定直接访问。

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


该类提供了直接操作文件系统的API接口,以及兼容的包装器,使其可以轻松地与第三方JavaScript库一起使用。Workspacenode:fs



请访问工作空间仓库,了解更多如何使用不同后端和工具的示例,包括一步步从零构建代理的教程。


最新回复 (3)
  • 量子咸鱼K 08-04 16:10
    1

    这个 怕是比cf container要贵 那就失去使用的理由了

  • pan iron 08-04 16:14
    2

    想到今年3月,在公司内部使用AbstractFileSystem实现了一个类似的东西,对Agent的运行环境进行了抽象与同步,走通了MVP,结果都没人鸟哈哈

  • laris 08-12 01:06
    3

    开源么?我最近用第一性原理也做了个vfs,看起来思路和cf的有点像。我的思路是fuse后端挂几种不同类型的引擎,一种是git,代码,另一种是blob,类似git-lfs用来存储二进制文件和编译中间产物,后边编译系统也是外挂加载的。但是测试有个问题是不是所有container都支持fuse设备,所以还做了userspace的类似fuse的东西。我本来想把fs/rw也用RPC/API方式对接Agent,这样agent就直接调用API,不用真的访问文件系统了。shell还没完全想好怎么设计。Agent通过ACP,然后对接前端,想着把Zed给解耦了,然后直接通过ACP对接Agent,API对接vfs。。。。

* 帖子来源Linux.do
返回