跳转到主要内容

预热沙箱池:当每个智能体任务都拥有专属机器时的基础设施经济学

阅读需 2 分钟Tian PanTian Pan

如果你在任何真实规模下运行编程智能体 (coding agents),你就拥有一支临时虚拟机舰队。你可能并没有主动申请这样做。但在你决定(且正确地决定)不信任的、由模型生成的代码绝不应该在应用程序的信任边界内执行的那一刻,这一切就发生了。每个任务都有自己的沙箱,每个沙箱都是一个微型虚拟机 (microVM) 或硬化容器。突然间,那个自以为在构建“智能体产品”的平台团队,实际上正在运营一些看起来非常像微型 AWS Lambda 的东西:池预热 (pool warming)、快照流水线、装箱调度器 (bin-packing schedulers),以及一个针对无人认领环境的清理进程 (reaper process)。

陷阱在于假设你的容器编排直觉可以无缝迁移。有些确实可以。但 Kubernetes 是为了调度长周期的、同质化的服务而设计的,而智能体沙箱恰恰相反:生命周期短、极度异构,且创建速度之快让部署滚动更新 (rollout) 看起来像是在悠闲散步。那些挣扎的团队往往将沙箱基础设施仅仅视为“步骤更多的容器”。有趣的工程挑战——以及几乎所有的成本——都集中在四个问题上:冷启动、文件系统状态、装箱密度和弃置。

为什么每个任务都拥有专属机器

“按任务隔离”模型之所以胜出,原因很简单:智能体是一个连接到执行循环的不受信任的代码生成器。OpenAI 的 Codex 在其专属云容器中运行每个任务,预装好代码库,任务完成后即销毁,且默认关闭网络访问。Anthropic 的云服务以及所有主流沙箱供应商——E2B、Daytona、Modal、Fly.io——都趋向于同一种形态:会话作用域、隔离、可丢弃。

共享环境会同时在两个方向上失败。安全性:模型生成的代码可能会执行 rm -rf、窃取凭据或破坏后续任务依赖的状态。正确性:两个智能体在共享环境中安装冲突的依赖版本,会产生无人能复现的故障。按任务隔离从结构上消除了这两类问题,这也是为什么现在没有严肃的开发者再对此表示异议。

但这将成本转移到了其他地方。一个每天处理 10,000 个智能体任务的服务,现在每天需要启动 10,000 台机器。这支舰队的单位经济效益——机器启动速度、每台机器闲置时的内存占用、装箱密度——都变成了产品层面的关注点。一个需要 30 秒才能完成配置的沙箱,是对每个任务征收的 30 秒“税收”,而那些为单个工具调用就启动沙箱的智能体循环,在每个会话中要支付几十次这种开销。

冷启动:资源池是对流量的赌注

原始数据解释了整个预热池行业的兴起。Firecracker microVM 的冷启动——包括最小内核、用户空间初始化、网络设置——中位数大约在 110–200ms 左右,p99 超过 300ms。这还没算上克隆代码库、安装依赖或启动语言服务器的时间。一个从零开始构建的、现实中的“冷”智能体环境需要数十秒。而从内存快照恢复相同的环境,虚拟机本身只需要个位数的毫秒;Lambda SnapStart 的生产环境数据在 p50 左右约为 3ms。供应商提供的端到端数据如 Daytona 从预热池创建沙箱不到 90ms,以及 Fly.io 对其智能体专用机器提供的约 300ms 检查点/恢复 (checkpoint/restore)。

这就是“完全冷启动”和“从快照恢复”之间三个数量级的差距,而预热池就是你购买“极速体验”的方式。你预先启动 N 个环境到某个检查点——操作系统就绪、运行时已安装、常用依赖存在——然后要么让它们保持运行(支付闲置内存费用),要么创建快照并停放它们(支付存储费用和恢复延迟代价)。

规模估算问题才是最有趣的地方,因为这是在对你无法控制的流量下注:

  • 规模太小:突发流量会掉进冷启动路径。冷启动延迟在并发下会产生叠加效应——一堆任务每个都在等待 30 秒,这就不再是延迟问题,而是宕机事故。
  • 规模太大:你将全天候为闲置内存付费。与 CPU 不同,内存无法优雅地超卖;一个预热但闲置的资源池几乎是纯粹的成本。
  • 太通用:预热起不到作用。一个预置的 Ubuntu 镜像能帮你省下 200ms 的内核启动时间,但省不掉主导实际启动时间的 40 秒 npm install

最后一点是很多团队容易忽略的。有价值的快照不是“一个已启动的虚拟机”,而是“一个已启动且已经安装了该仓库依赖树的虚拟机”。这意味着你的预热池不是一个池,而是一个以环境指纹为键的缓存,这带来了所有缓存管理难题:当 lockfile 更改时的失效机制、基于流行度的保留策略,以及大量永远不值得预热的长尾环境。挂起/恢复 (Suspend/resume) 计费模型——即停放的机器按存储而非计算计费,如 Fly 的挂起机器——之所以存在,正是为了让一个巨大的、大部分闲置的缓存变得经济适用。

文件系统状态:写时复制 (Copy-on-Write) 是核心所在

第二个成本中心是将工作树导入沙箱。朴素的方法是:针对每个任务都执行 git clone 加上依赖安装。对于大型单体仓库 (monorepo) 来说,这需要花费数分钟,而且这是数分钟的无效工作,因为每天 10,000 个任务生成的几乎是完全相同的文件系统。

会员专享

余下内容仅对会员开放。

会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。

  • 完整文章,包含未公开存档的部分
  • 可落地的工作框架,附带权衡与决策依据
  • 新文章抢先看,先于公开发布

随时取消 · 一次订阅,畅读全部

参考资料

保持联系,关注我获取更多内容

阅读需 9 分钟

智能体临时目录:无人盘点的无主文件系统 PII 暴露面

智能体工作线程在无人分类的磁盘上累积了临时文件系统状态——提取的 PDF、转录的音频、缓存的附件。解决方案在于为这一层级命名,而非追求架构上的复杂性。

insider
ai-agents
阅读需 9 分钟

你的 LLM 账单只占 Agent COGS 的一半 —— 另一半是无人监控的部分

推理仅占 Agent 真实成本的 40-60%。另一半则隐藏在向量数据库、检索嵌入、遥测、重试、评估和人工审核中 —— 而这些成本往往没有明确的归口团队。

insider
ai-agents
阅读需 12 分钟

当你的 CLI 开始说英语:可提示基础设施的最小权限原则

当你的 CLI 开始接受英语时,最小权限原则就失效了。每一个将意图转化为命令的封装层都变成了一个“混淆代理”。目前行之有效的模式包括:锚定已解析计划的意图绑定令牌、强制性模拟运行(dry-run)以及将提示词与动作图关联起来的审计追踪。

insider
security
阅读需 10 分钟

学习型系统的任意时间点恢复:那个没人做的备份

你的数据库有快照,代码有 git,但你的智能体大脑却分散在五个独立版本化的存储库中。为什么对于大多数智能体技术栈来说,“恢复到昨天下午 3 点”是一个无法定义的概念,以及存储工程中的一致性组(consistency-group)规范如何解决这一问题。

insider
ai-agents
阅读需 11 分钟

内部容量市场:在团队间分配稀缺的推理资源

当多个团队共享同一个推理池时,一个团队的评估扫描(Eval Sweep)可能会使另一个团队的生产环境对话系统陷入饥饿。借鉴大型机分时系统和 Borg 的优先级波段:本文将探讨优先级层级、抢占、费用回填,以及团队在何时应当获得专用容量。

insider
ai-agents