Cloudflare 推出面向 AI Agent 的运行时 @cloudflare/computer
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)
当前内置了两类运行时:
-
基于 isolate 的运行环境
使用just-bash将 Shell 代码转换为 JavaScript,并在 dynamic worker 中运行。文件系统通过 worker bindings 直接可用。 -
容器运行时
使用 Cloudflare Containers 提供完整 Linux 环境。文件系统通过 FUSE 挂载到容器中,容器内的文件变更会同步回 workspace。
Workspace 类还提供直接操作文件系统的 API,以及兼容 node:fs 的封装,方便与第三方 JavaScript 库集成。
面向 Agent 的场景中,该项目提供兼容 AI SDK 的工具集,包括:
readwriteeditlsexec
其中 exec 工具可以跨运行时使用,并通过 backend 参数选择执行后端。工具描述会引导模型选择适合任务的运行环境:优先使用更快、更低成本的 worker 后端,只有在需要完整能力时才使用容器。
Cloudflare 表示,在其测试中,前沿模型通常能够较好地做出这种选择,并仅在必要时回退到容器。
后续目标
Cloudflare 表示,内部已经看到一些 Agent 使用 isolates 来完成 JavaScript 应用的构建、测试和部署,为客户生成定制化文档,以及借助 Web 浏览器执行复杂任务。
@cloudflare/computer 的目标是让 Agent 在大部分工作中不依赖容器:Cloudflare 希望容器只在少于 10% 的工作中被需要,而编码任务、音视频处理和文档创建等任务都能更多由 isolates 承担。
目前该项目仍处于早期预览阶段,定位更接近一次开放实验:通过开放库的方式,与正在构建大规模 Agent 系统的开发者一起验证这种运行时抽象是否可行。
