Cloudflare 推出面向 AI Agent 的运行时 @cloudflare/computer

Cloudflare AI Bl17 天前

Cloudflare 近日推出了 @cloudflare/computer 的早期预览版。这是一个面向 AI Agent 的运行时实验项目,目标是让每个 Agent 都拥有一个类似“自己的计算机”的工作环境,同时由平台在 isolates、容器沙箱和浏览器等执行环境之间进行调度。

为什么 Agent 不只需要容器

文章提出,一个能力较强的 Agent 往往需要完整的工作环境:文件系统、Shell、工具、软件包,以及运行代码的能力。编码类 Agent 已经普遍采用这种模式:它们检查环境、修改文件、运行测试,并持续迭代。

过去一段时间,常见做法是为 Agent 启动一个容器。但 Cloudflare 认为,如果每个用户的每个 Agent 都需要独立容器,随着并发 Agent 数量增长到数亿甚至数十亿级,这种模式在 CPU 计算资源上难以扩展。

因此,Cloudflare 希望通过更轻量的计算原语来承担大部分任务,只在确有需要时使用容器。

isolates 与容器的协同

Cloudflare 长期押注 isolates 作为可横向扩展的计算基础。其特点包括:

  • 启动和销毁速度快;
  • 可在 Agent 空闲时休眠;
  • 可保存 Agent 自身状态;
  • 可进一步启动 isolates 来运行不可信代码;
  • 更适合大规模横向扩展。

此前,Cloudflare 已让 isolates 具备按需启动容器沙箱的能力。其设想是:

  • Agent 的主循环运行在 isolate 中,例如 Durable Object;
  • 当任务需要更重的执行能力时,再调用附加容器作为工具;
  • 通过这种方式,在性能和成本之间做权衡。

@cloudflare/computer 试图把这种组合方式抽象成更简单的运行时,让开发者不必自行拼装 isolates 与容器。

核心思路:共享文件系统

@cloudflare/computer 的基本设想是:为 Agent 提供一个预先准备好的文件系统,并提供多种执行环境来操作同一批文件。

不同任务可以选择不同执行后端:

  • 只需要处理文件、数据或 Git 仓库的任务,可以在 isolate 中运行;
  • 需要 Linux、npm 或原生二进制程序的命令,可以在容器中运行;
  • 两种环境共享同一套文件,并保持同步。

该包提供一个持久化文件系统,可与 Git 仓库、存储桶或自定义文件结合使用。它还提供读写、编辑文件以及执行 Bash 命令的工具。

所有操作都可以被管控、审计和观测,以便开发者限制 Agent 可执行的修改范围,并保留操作记录。

使用方式概览

@cloudflare/computer 的 workspace 可以在 Durable Object 上实例化,从而提供虚拟文件系统和执行运行时。

典型用法是把这个文件系统和工具暴露给 Agent。例如,一个用于处理缺陷报告的 Agent 可以获得:

  • 文件工具;
  • Git 工具;
  • Shell 工具;
  • 与产品相关的专用工具,例如回复问题报告。

Agent 可以在推理循环中调用这些工具。开发者也可以直接使用 workspace API,例如在提示 Agent 之前预先准备环境。

工作机制

该 workspace 支持可选执行运行时,并通过统一接口执行命令:

exec(string, options)

当前内置了两类运行时:

  1. 基于 isolate 的运行环境
    使用 just-bash 将 Shell 代码转换为 JavaScript,并在 dynamic worker 中运行。文件系统通过 worker bindings 直接可用。

  2. 容器运行时
    使用 Cloudflare Containers 提供完整 Linux 环境。文件系统通过 FUSE 挂载到容器中,容器内的文件变更会同步回 workspace。

Workspace 类还提供直接操作文件系统的 API,以及兼容 node:fs 的封装,方便与第三方 JavaScript 库集成。

面向 Agent 的场景中,该项目提供兼容 AI SDK 的工具集,包括:

  • read
  • write
  • edit
  • ls
  • exec

其中 exec 工具可以跨运行时使用,并通过 backend 参数选择执行后端。工具描述会引导模型选择适合任务的运行环境:优先使用更快、更低成本的 worker 后端,只有在需要完整能力时才使用容器。

Cloudflare 表示,在其测试中,前沿模型通常能够较好地做出这种选择,并仅在必要时回退到容器。

后续目标

Cloudflare 表示,内部已经看到一些 Agent 使用 isolates 来完成 JavaScript 应用的构建、测试和部署,为客户生成定制化文档,以及借助 Web 浏览器执行复杂任务。

@cloudflare/computer 的目标是让 Agent 在大部分工作中不依赖容器:Cloudflare 希望容器只在少于 10% 的工作中被需要,而编码任务、音视频处理和文档创建等任务都能更多由 isolates 承担。

目前该项目仍处于早期预览阶段,定位更接近一次开放实验:通过开放库的方式,与正在构建大规模 Agent 系统的开发者一起验证这种运行时抽象是否可行。

评论

请登录后发表观点

暂无数据