切换语言
切换主题

Cloudflare Dynamic Workers:AI Agent 沙箱比容器快 100 倍的秘密

你的 AI Agent 刚生成了一段数据分析代码,准备执行时——容器启动花了 3 秒,内存占用 200MB,用户请求已经超时。这不是个别问题,而是整个行业用容器跑 AI 代码的普遍痛点。

Cloudflare 在 2026 年 3 月推出的 Dynamic Workers,用 V8 Isolates 把这个启动时间砍到了几毫秒,内存占用压缩到几 MB。100 倍的性能提升。背后是完全不同的隔离哲学。

说白了,Dynamic Workers 不是简单的”更快容器”,而是让”每请求一个沙箱”从技术上可行变成经济上可行。本文会深入分析 V8 Isolates 与传统容器的本质差异,提供 Dynamic Workers 的实战代码示例,帮你做出技术选型决策。如果你正在为 AI Agent 选择沙箱方案,这篇文章能帮你算清楚这笔账。

100倍
启动速度提升
几毫秒 vs 3秒+
10-100倍
内存效率提升
几MB vs 百MB
$0.002
每 Worker/天
按 unique Worker 计费
$200
月成本估算
100万请求场景
数据来源: Cloudflare 定价 + VentureBeat 报道

为什么容器成了 AI Agent 的性能瓶颈

这活儿以前怎么干的?容器是主流方案。Kubernetes 调个 Pod,镜像拉下来,环境配好——流程成熟但笨重。AI Agent 场景有个特点:代码执行是瞬时的,可能跑个数据分析脚本就几秒钟,但容器启动要 3 秒以上,这不对劲。

据知乎 2026 年的 AI Agent Sandbox 研究报告,Docker 容器启动大概 500ms,但这只是”启动”——加上镜像拉取、网络配置、依赖初始化,实际可用时间往往超过 3 秒。内存呢?几十 MB起步,复杂环境能到 200MB 以上。

你可能会想:预热池不就行了?提前启动一批容器,等着用。嗯,这确实是主流做法。但问题来了:

一是成本。预热池要时刻保持一批容器在线,不管有没有请求。100 个预热容器,每个 200MB 内存,光内存成本就够呛。还要考虑容器复用的安全风险——上一个请求的数据可能残留在内存里。

二是复杂性。预热池要管理容器生命周期、健康检查、自动扩缩容。这套基础设施本身就够折腾了。我之前在项目里用过 Kubernetes 预热池,维护成本比业务代码还高。

三是场景不匹配。AI Agent 的代码执行往往是一次性的。用户上传 CSV,AI生成分析代码,执行完就销毁。每个请求需要独立的隔离环境,但预热池的容器复用恰恰打破了这种隔离。

想象一个场景:用户 A 的 AI Agent 执行了一段代码,处理了他的敏感数据。容器回到预热池,用户 B 的请求进来,拿到了同一个容器。即使有清理机制,残留数据的风险始终存在。这不是理论上的问题——2025 年就有过容器残留导致数据泄露的报告。

所以容器方案在 AI Agent 场景下的矛盾很清晰:启动慢、内存贵、预热池安全风险、维护复杂。这不是说容器不好,而是容器的设计哲学跟 AI Agent 的执行模式不匹配。

V8 Isolates 如何把启动时间压到毫秒级

V8 Isolates 是什么?Chrome 的 JavaScript 引擎,把 JS 代码编译成机器码执行。Isolate 是 V8 的隔离单元——一个独立的执行环境,有自己的内存堆、编译缓存、全局对象。

关键在于:Isolate 不调用宿主操作系统的内核。

容器是怎么工作的?启动一个进程,调用宿主内核的系统调用(syscall)。隔离靠的是内核层面的 namespace 和 cgroup。问题是,这个”隔离”是伪隔离——容器和宿主共享同一个内核。syscall 走的是同一个内核路径。

V8 Isolates 完全不同。JavaScript 代码在 Isolate 里执行,不产生 syscall。所有操作都在进程内完成——内存分配、垃圾回收、编译执行。这意味着隔离边界在进程内部,而不是内核层面。

腾讯新闻 2026 年的报道给出了具体数据:V8 Isolates 启动时间几毫秒,内存占用几 MB。跟容器相比,启动快 100 倍,内存效率高 10-100 倍。

来个完整的隔离技术对比表,方便你做技术选型:

隔离技术安全级别启动速度内存占用syscall 目标
Docker 容器⭐⭐~500ms几十 MB共享宿主内核
gVisor⭐⭐⭐⭐~100ms较高用户态内核拦截
Firecracker microVM⭐⭐⭐⭐⭐~150ms~1GB独立虚拟内核
V8 Isolates⭐⭐⭐几 ms几 MB根本不调用

这张表透露了一个关键信息:安全级别和启动速度是 trade-off。Firecracker 最安全(独立虚拟内核),但启动最慢、内存最贵。V8 Isolates 最快最省,但安全级别中等。

为什么 V8 Isolates 安全级别只有三颗星?因为隔离边界在进程内部。如果一个 Isolate 被攻破,理论上可以影响同一进程内的其他 Isolate。这比容器安全(容器共享内核,但至少有 namespace 隔离),但比 microVM 弱(microVM 有独立内核)。

但 Cloudflare 的 Dynamic Workers 加了多层安全机制,把这个”三颗星”的安全级别在实践中提升到了可接受的水平。后面会详细讲这五层防御。

话说回来,V8 Isolates 的核心优势不是”更安全”,而是”更便宜”。每个请求启动一个独立沙箱,用完销毁——这在容器世界是奢侈的,在 Isolate 世界是标准的。

Dynamic Workers API:load() 与 get() 的设计哲学

Dynamic Workers 提供两种 API 模式,设计哲学很清晰:一种用于瞬时执行,一种用于长生命周期。

load():一次性执行,用完即毁

load() 模式适合单次执行场景。AI 生成的代码进来,启动 Isolate,执行,销毁。整个过程毫秒级完成。

// load() 模式:一次性执行
import { DynamicWorkerLoader } from 'cloudflare:sandbox-sdk';

const loader = new DynamicWorkerLoader();

// 加载代码,绑定资源,设置限制
const dynamicWorker = await loader.load({
  code: aiGeneratedCode,  // AI 生成的代码字符串
  bindings: {
    db: env.DB,           // D1 数据库绑定
    kv: env.KV,           // KV 存储绑定
  },
  limits: {
    cpuMs: 100,           // CPU 时间限制:100毫秒
    memoryMB: 128,        // 内存限制:128MB
  }
});

// 执行代码,获取结果
const result = await dynamicWorker.execute();

// 执行完成后,Isolate 自动销毁
console.log(result);

关键参数说明:

  • code:要执行的代码字符串,可以是 AI 动态生成的
  • bindings:绑定外部资源,比如数据库、存储、API
  • limits:执行限制,防止资源滥用

load() 的适用场景:

  • 单次数据分析:用户上传 CSV,AI 生成分析代码,执行一次就销毁
  • 临时代码执行:AI 生成的转换脚本、验证逻辑
  • 用户请求级隔离:每个请求独立的沙箱,无残留风险

get():缓存预热,长生命周期场景

get() 模式适合需要预热状态的场景。Isolate 创建后保持在内存里,后续调用直接复用。

// get() 模式:缓存预热
const cachedWorker = await loader.get({
  id: 'persistent-analyzer',  // 固定标识,用于缓存定位
  code: analysisCode,         // 预加载的代码
  bindings: {
    vectorize: env.VECTORIZE, // 向量数据库绑定
  }
});

// 多次调用,保持预热状态
const result1 = await cachedWorker.execute({ input: data1 });
const result2 = await cachedWorker.execute({ input: data2 });
const result3 = await cachedWorker.execute({ input: data3 });

// 不需要手动销毁,Cloudflare 自动管理生命周期

get() 的适用场景:

  • 批量处理:同一分析逻辑处理多个数据集
  • 长期运行的 Agent:需要保持状态的分析任务
  • 预热提速:减少首次执行延迟

两种模式的本质区别:load() 是”租一个房间,住一晚就走”,get() 是”租一个房间,长期包房”。前者适合瞬时场景,后者适合持续场景。

Cloudflare 官方 Sandbox SDK 的 AI Code Executor 教程提供了更完整的示例,建议看完这篇再去实战。

Dynamic Workers 的五层安全防御

前面说过,V8 Isolates 的基础安全级别只有三颗星。但 Cloudflare 在 Dynamic Workers 上叠加了多层防御,把实际安全水平提升到了生产可用。

InfoQ 2026 年 4 月的分析报告详细拆解了这五层防御。

第一层:V8 安全补丁自动部署

V8 引擎本身有安全漏洞——这是不可避免的,任何复杂软件都有。Chrome 团队发现漏洞后发布补丁,Cloudflare 在几小时内推送到全球所有节点。

对比一下传统方案:容器环境的安全补丁依赖宿主系统,更新周期可能几周甚至几个月。V8 补丁的响应速度是”小时级”,而不是”周级”。

第二层:动态风险 Tenant Cordoning

如果某个 Dynamic Worker 表现出异常行为(比如内存暴涨、CPU 飙升),Cloudflare 会把它标记为”高风险”,转移到专门的隔离节点。

这叫 tenant cordoning——风险 tenant 被单独关押,不影响其他正常 Worker。

第三层:MPK 硬件保护

MPK(Memory Protection Keys)是 Intel 硬件层面的内存隔离机制。每个 Isolate 有独立的内存访问权限,硬件级别阻止越界访问。

这是物理层面的保护,比软件隔离更难攻破。

第四层:代码扫描

执行前先扫描。恶意模式识别——比如无限循环、内存炸弹、敏感 API 调用——会被自动拦截。

这层防御针对的是 AI 生成的恶意代码。Prompt 注入可能导致 AI 生成危险代码,代码扫描能在执行前阻止。

第五层:网络隔离

Dynamic Worker 默认完全拦截外网访问。需要访问外部 API 时,走 Cloudflare 的 egress proxy,凭证注入机制确保 Worker 只能访问授权的 API。

简单画个安全架构图:

AI 生成的代码
     |
     v
┌─────────────────────────────────────┐
│ Dynamic Worker (V8 Isolate)         │
│ ┌─────────────────────────────────┐ │
│ │ 第一层:代码扫描                 │ │
│ ├─────────────────────────────────┤ │
│ │ 第二层:V8 安全补丁             │ │
│ ├─────────────────────────────────┤ │
│ │ 第三层:tenant cordoning        │ │
│ ├─────────────────────────────────┤ │
│ │ 第四层:MPK 硬件保护            │ │
│ └─────────────────────────────────┘ │
│         |                           │
│         v                           │
│  Cap'n Web RPC 桥                   │
│         |                           │
│         v                           │
│  第五层:egress proxy 凭证注入      │
└─────────────────────────────────────┘

这套多层防御让 V8 Isolates 的”三颗星”安全级别在生产环境变得可靠。不是说绝对安全——没有任何系统绝对安全——而是达到了”可接受的风险水平”。

Dynamic Workers 定价:为什么能实现每请求一个沙箱

“每请求一个沙箱”听起来奢侈。但在 Dynamic Workers 的成本模型下,这是现实可行的。

先看 Cloudflare 的定价结构(Beta 期间免费,正式定价如下):

  • $0.002 per unique Worker loaded per day:每天每个独立 Worker 0.002 美元
  • 加上标准 CPU 时间费用:$0.02 per million CPU milliseconds
  • 加上 invocation 费用:$0.50 per million requests

VentureBeat 2026 年 4 月的报道给出了对比:E2B(Firecracker microVM 方案)每请求成本 $0.01+,而 Dynamic Workers 只要 $0.002。

来个具体的成本对比:

方案每请求成本月成本(100万请求)复杂性维护成本
容器预热池$0.02+$2000+高(需维护池)
E2B microVM$0.01+$1000+
Dynamic Workers$0.002$200

算笔账:假设每天 100 万请求,每个请求执行不同的代码(unique Worker)。

容器预热池方案

  • 预热 100 个容器,每个 200MB 内存:$500/月内存成本
  • 维护预热池基础设施:至少 $1500/月人力成本
  • 总成本:$2000+,还有安全风险

E2B 方案

  • 每请求 $0.01:100万请求 = $10000/月(不对,E2B 有批量优惠)
  • 实际月成本大概 $1000+,但启动延迟 150ms

Dynamic Workers 方案

  • unique Worker 费用:100万 * $0.002 = $2000/月(也不对,这是每天 unique)
  • 正确计算:假设每天 1000 个 unique Worker,$0.002 * 1000 * 30 = $60/月
  • 加上 invocation 和 CPU 时间,月成本 $200 左右

关键洞察:Dynamic Workers 的定价不是按”请求次数”,而是按”unique Worker”。如果你的 AI Agent 执行的代码是模板化的(比如固定的分析脚本),unique Worker 数量远小于请求次数,成本会更低。

这就是为什么”每请求一个沙箱”在经济上可行:

  • 启动快(毫秒级),不需要预热池
  • 内存省(几 MB),不需要大内存预留
  • 定价按 unique Worker,不是按请求

对比一下传统方案的痛点:

  • 预热池维护复杂,人力成本高
  • 容器复用有安全风险,需要额外清理机制
  • 3 秒延迟影响用户体验

Dynamic Workers 解决了这三个问题,成本还更低。这笔账算清楚了吗?

Dynamic Workers vs E2B vs gVisor:如何选择

说了这么多 Dynamic Workers 的优势,但它不是万能的。不同的场景适合不同的方案。

完整的对比维度:

维度Dynamic WorkersE2B (Firecracker)gVisorDocker
启动速度⭐⭐⭐⭐⭐ (几ms)⭐⭐⭐⭐ (~150ms)⭐⭐⭐⭐ (~100ms)⭐⭐⭐ (~500ms)
安全级别⭐⭐⭐ (中)⭐⭐⭐⭐⭐ (最高)⭐⭐⭐⭐ (高)⭐⭐ (低)
成本效率⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
语言支持JS/TS onlyAnyAnyAny
状态持久无(需配合 DO)
维护复杂度

什么时候选择 Dynamic Workers?

适合的场景

  • 你的 AI Agent 用 JavaScript 或 TypeScript
  • 高频瞬时执行,每个请求独立隔离
  • 成本敏感,不想维护预热池基础设施
  • 已有 Cloudflare 技术栈(Workers、KV、D1)

不适合的场景

  • AI Agent 需要执行 Python、Rust、Go 代码
  • 安全级别要求最高(比如处理金融数据)
  • 需要持久状态(需要额外配置 Durable Objects)

什么时候选择 E2B?

E2B 用 Firecracker microVM,安全级别最高,启动时间 150ms。

适合的场景

  • 需要执行 Python 代码(数据分析、机器学习)
  • 安全级别要求最高
  • 可以接受 150ms 启动延迟
  • 处理敏感数据(金融、医疗)

什么时候选择 gVisor?

gVisor 是 Google 开发的用户态内核,容器兼容性好。

适合的场景

  • 需要容器兼容性(现有 Docker 镜像)
  • 平衡安全和性能
  • 不想换技术栈,只想提升安全级别

什么时候继续用 Docker?

说实话,很多场景 Docker 就够了。

适合的场景

  • 不需要每个请求独立隔离
  • 长时间运行的服务(不是瞬时执行)
  • 已有成熟的容器基础设施
  • 语言不是 JS/TS

技术选型不是”谁最好”,而是”谁最适合”。Dynamic Workers 在特定场景(JS/TS AI Agent、高频瞬时执行、成本敏感)有明显优势,但不是万能替代。

Cloudflare Agent 生态:从沙箱到持久状态的完整方案

Dynamic Workers 不是孤立的产品,而是 Cloudflare Agent 生态的一部分。

2026 年 4 月 Cloudflare 发布了 Project Think——长期运行 Agent 的框架编排。配合 Dynamic Workers 和 Durable Objects,形成完整的 Agent 技术栈。

三层架构

Project Think (Think 基类 - Agent编排)
     |
     +-- Agent Memory (SQL 数据库 - 持久状态)
     |
     +-- Sub-agents (子Agent协调)
     |
     +-- Dynamic Workers (沙箱执行)
     |     |
     |     +-- Durable Objects Facets (每个沙箱的独立SQLite)
     |
     +-- Tools (API调用 - egress proxy凭证注入)

Durable Objects Facets

Durable Objects Facets 是 2026 年 4 月发布的新特性。每个 Dynamic Worker 可以有独立的 SQLite 数据库,状态持久,不随沙箱销毁而丢失。

这解决了 Dynamic Workers 的一个痛点:沙箱执行完就销毁,状态无法保持。Facets 让每个沙箱有自己的”笔记本”,执行完还能查之前的记录。

Project Think

Project Think 是 Agent 框架,提供 Think 基类。你可以继承 Think 基类,实现自己的 Agent 逻辑——包括子 Agent 协调、状态管理、工具调用。

官方博客给的示例:一个数据分析 Agent,用 Dynamic Workers 执行分析代码,用 Durable Objects Facets 存储历史结果,用 Project Think 协调多个子 Agent。

Agents SDK

Cloudflare 还提供了 Agents SDK,封装了 Dynamic Workers、Durable Objects、Project Think 的集成。用 SDK 可以快速搭建完整的 AI Agent。

// Agents SDK 示例
import { Agent } from 'cloudflare:agents-sdk';

class DataAnalysisAgent extends Agent {
  async analyze(data: string) {
    // Dynamic Workers 执行分析代码
    const worker = await this.sandbox.load({
      code: this.generateAnalysisCode(data),
      bindings: { db: this.memory }
    });

    const result = await worker.execute();

    // 结果存入 Facets
    await this.memory.save(result);

    return result;
  }
}

这套生态让 Dynamic Workers 从”单纯的沙箱”升级为”Agent 技术栈的一部分”。如果你的 AI Agent 需要状态持久、子 Agent 协调、工具调用,Cloudflare 的完整方案比拼凑多个服务更省心。

结论

Dynamic Workers 不是要取代所有沙箱方案——它只是在特定场景下提供了 100 倍性能提升的选项。

核心价值:让”每请求一个沙箱”从技术上可行变成经济上可行。

如果你的 AI Agent 用 JavaScript 或 TypeScript,需要为每个用户请求提供独立隔离环境,而且对成本敏感——Dynamic Workers 是目前最合适的方案。

下一步建议:

说到底,技术选型的核心是算清楚账:启动速度、内存成本、安全级别、维护复杂度。Dynamic Workers 在四个维度上都给出了答案,剩下的就是你判断自己的场景是否匹配。

常见问题

Dynamic Workers 能执行 Python 代码吗?
不能。Dynamic Workers 基于 V8 Isolates,只支持 JavaScript 和 TypeScript。如果需要执行 Python,建议用 E2B(Firecracker microVM)方案,支持任意语言。
V8 Isolates 的安全级别够用吗?
对大多数场景够用。Cloudflare 加了五层防御:V8 补丁自动推送、tenant cordoning、MPK 硬件保护、代码扫描、网络隔离。如果处理金融或医疗数据,建议用 E2B(安全级别最高)。
load() 和 get() 有什么区别?
load() 是一次性执行,适合单次数据分析、临时代码执行。执行完 Isolate 自动销毁。

get() 是缓存预热,适合批量处理、长期运行的 Agent。Isolate 保存在内存里,后续调用直接复用。
Dynamic Workers 定价怎么算?
按 unique Worker 计费,不是按请求次数。$0.002/unique Worker/天 + CPU 时间费 + invocation 费。如果你的代码是模板化的(比如固定的分析脚本),unique Worker 数量远小于请求次数,成本会更低。
如何实现状态持久?
用 Durable Objects Facets。每个 Dynamic Worker 可以有独立的 SQLite 数据库,状态持久,不随沙箱销毁而丢失。结合 Project Think 框架可以构建完整的 Agent 技术栈。
预热池和 Dynamic Workers 哪个更合适?
看场景。预热池适合长时间运行的服务,语言不限。

Dynamic Workers 适合高频瞬时执行(AI Agent 代码执行),JS/TS only,成本更低,每个请求独立隔离无安全风险。

15 分钟阅读 · 发布于: 2026年4月25日 · 修改于: 2026年4月25日

当前属于系列阅读 第 20 / 20 篇

Cloudflare 全家桶实战

如果你是从搜索进入这篇文章,建议顺手补上上一篇或继续下一篇,这样更容易把同一主题读完整。

查看系列总览

相关文章

BetterLink

想持续收到这个主题的更新?

你可以直接关注作者更新、订阅 RSS,或者继续沿着系列入口往下读,避免下次又回到搜索结果重新找。

关注公众号

评论

使用 GitHub 账号登录后即可评论