Cloudflare 为 AI 代理提供云端虚拟 PC
AI 代理开发者经常遇到同样的问题。模型擅长生成代码,但需要实际工作的环境。他们需要磁盘来保存文件、控制台来运行测试、通过 npm 安装包或编译文档的能力。授予代理本地机器访问权限很危险。为每个短期任务启动单独的虚拟服务器既昂贵又缓慢。
Cloudflare 在一个名为 computer 的简洁项目中解决了这个问题。开发者创建了一个专门为自主代理和网络代理设计的虚拟执行环境。
内部架构
该架构建立在虚拟文件系统之上。本质上,它是一个嵌入在 Cloudflare Durable Object 中的 SQLite 数据库。这个解决方案保留了文件状态并保持数据与代码的紧密性。
为了使用这个文件系统,团队提出了三种不同的执行环境。
第一个环境运行完整的 Linux 容器。在容器内,守护进程 computerd 运行。它通过 FUSE 将数据库挂载为常规磁盘,并通过 capnweb RPC 协议发送更改。在这种模式下,代理拥有真实的用户 Linux、网络访问权限,以及运行任何二进制文件的能力。
第二个环境通过轻量级解释器 just-bash 直接在隔离的 Worker 中执行命令。不需要启动容器。命令执行快速,与文件系统的通信直接进行。
第三个环境运行 JavaScript 代码。每个命令在单独的 Dynamic Worker 中执行。脚本通过标准的 node:fs/promises 模块访问文件系统,以及用于处理 Git 和发布工件的现成工具。
功能特点与性能测试
测试虚拟磁盘时发现了一个有趣的细节。开发者进行了基准测试,比较 FUSE 挂载 computerd 与物理 NVMe 驱动器的性能。
结果表明,对于元数据操作,虚拟磁盘比真实驱动器更快。创建数千个小文件、读取目录和检查权限几乎是即时的,因为结构存储在 RAM 和 SQLite 中。然而,对于顺序读写千兆字节大小的文件,FUSE 不及物理磁盘。
对于 AI 代理任务,这种设置效果很好。代理更频繁地创建小脚本、编辑配置文件和读取源代码,而不是传输大量视频。
仓库中的使用示例
仓库中有现成的示例展示系统的工作方式。
在一个演示中,代理收到生成 PDF 文档的任务。首先,它在虚拟目录中创建一个 Markdown 文件。然后代理通过容器调用一个工具 pandoc,将文本转换为现成的 PDF。
另一个示例展示了与神经网络的集成。代理通过 Workers AI 生成图像,将结果文件写入虚拟磁盘,并向用户提供公开链接。
还有一个更高级的案例:代理部署 Cloudflare Worker 项目,在虚拟环境中构建它,并将其发布到工件注册表。
项目状态
Cloudflare 团队特别指出,仓库处于预览状态。代码适合实验、黑客马拉松和原型,但在上面运行关键服务还为时过早。架构和 API 可能随时更改。
目前暂不接受开放拉取请求。您可以通过 Issues 中的讨论参与开发。
适合人群
该项目对使用 TypeScript 编写复杂代理并选择基础设施来运行生成代码的人很有用。SQLite、FUSE 和 Cloudflare Workers 的组合提供了一个轻量级且隔离的环境,可在毫秒内启动。
相关项目