camelAI 把 Agent 从虚拟机里改造成跑在 Cloudflare 边缘节点上
- 大部分团队跑 AI Agent 都用完整的 Linux 虚拟机,camelAI 一开始也是。算完账他们把这台机器整个拆了。
- 分三步拆:先搬走 Agent,再把文件搬进数据库,最后连命令行都删掉。用户那边什么都没变。
- 最激进的是删命令行这一步。不过代码里那个「删掉」,留了一个口子。
每个用户一台常驻机器还得挂一块高速磁盘,按他们规划的用户量算不过来
这是 camelAI 的 CTO Miguel Salinas 写的一篇架构重构复盘。他们把原本跑在独立虚拟机里的 AI Agent,完全重构成跑在 Cloudflare Durable Object 上的轻量架构,成本和延迟都大幅下降。改造分三次做完,代码 7 月 24 日全部开源,每一处机制都能对着仓库核。
不认识 camelAI?点开看一眼
camelAI 是一个 AI 编程助手,三个人的团队做的:Illiana Reed 管产品,Miguel Salinas 管技术,Isabella 管运营。
你在对话框里说要做什么,它写代码、装依赖、把项目跑起来,最后部署到一个能打开的网址;它还能接你的数据库和几十种外部服务,跑 Python notebook、做仪表盘。
官网的自我介绍是「一个住在自己电脑里的 AI 软件工程师」。那台「电脑」就是每个用户分到的一台 Linux 虚拟机,也正是这篇要拆掉的东西。
大部分团队跑 AI Agent 都用完整的 Linux 虚拟机或容器沙箱,camelAI 一开始也是。
问题出在成本结构上:给每个用户配一台常驻机器,还要挂上高速磁盘存文件。用户数一涨,扩容就是在扩真实的机器和真实的磁盘。按他们规划的用户量算,这条路走不通。
难点在于,AI Agent 天然假设自己跑在 Linux 上,被训练成一遇到问题就去调 bash。而他们最初用的是 Claude Code 那套 harness,它本身就必须要有完整虚拟机才能跑。harness 指的是包在模型外面那层程序,负责跑对话循环、管工具、管状态。
所以他们没去琢磨虚拟机怎么调度更省,而是按「根本不需要虚拟机」重新设计了一遍。
四个多月前,camelAI 的 CEO Illiana Reed 还发过一篇博客,第一句是「camelAI 的每个用户都有一台持久的电脑,一个真正的 Linux 环境」,并称这是产品的核心承诺。那篇讲他们试了 Modal、Cloudflare Containers、Fly.io 的 Sprites 都不合适,最后花一周自己搭了一套容器服务。这次 Miguel 写:那篇还挂着,但那套基础设施我们一台都不跑了。
那台虚拟机里装着三样东西:Agent 本体、项目文件、命令行。三次重构就是把它们一件件搬走,每搬走一件,就得回答它原来干的活现在归谁。
第一步搬走 Agent 本体:响应变快了,但机器还占着
Claude Code 的 harness 和虚拟机分不开,所以第一件事是自己写一个。
底座用的是 pi,Mario Zechner 的开源 Agent 工具包,MIT 许可,GitHub 上 8.1 万 star。pi 是一摞库,不是一个程序。最上面那层是命令行工具,假设脚下有操作系统;下面几层只给 Agent 的原材料,对话循环、状态管理,不关心自己跑在哪。camelAI 一行 pi 的代码都没改,只拿了下面两层。
camelAI 的 package.json 里只有 @earendil-works/pi-agent-core 和 @earendil-works/pi-ai(都是 0.80.6 版),没有 pi-coding-agent,就是那个假设有操作系统的命令行层。
新的 harness 跑在一个 Durable Object 里。这是 Cloudflare 的一种小型计算实例,自带一块专属存储,会在离用户最近的机房里醒来。camelAI 给每个聊天会话分一个。
