Cloudflare 将 Agents SDK 扩展为智能体运行时底座
Cloudflare 将 Agents SDK 定位为智能体运行时底座
Cloudflare 表示,智能体正在从原型阶段进入生产环境。控制模型访问外部世界的软件层,例如 Codex、Claude Code、OpenCode、Pi 和 Project Think 等“智能体控制层”(harness),正在被用于更真实、更关键的基础设施场景。
但让智能体稳定运行在生产环境并不容易。Cloudflare 在构建 Project Think 以及与客户合作运行智能体的过程中,总结出一组常见的分布式系统问题:
- 智能体被中断后,如何在不丢失上下文、不浪费 token 的情况下恢复?
- 如何安全运行不可信代码?
- 智能体如何使用其被设计和训练来调用的工具?
Cloudflare 认为,这些问题并不能仅靠智能体控制层本身解决,因为它们与状态、存储和计算密切相关,取决于智能体运行的平台。因此,Cloudflare 正在把 Project Think 生产化过程中积累的能力下沉到 Agents SDK,作为更底层的运行时能力。
目前 Cloudflare 正在开放的 Agents SDK 能力包括:
- 持久化执行
- 动态代码执行
- 持久化文件系统
- 动态工作流
这些能力面向所有基于 Agents SDK 构建的智能体控制层和框架开放。
生产级智能体的三层结构
Cloudflare 将当前生产级 AI 智能体栈描述为三层结构:
-
框架层:Flue
提供项目结构、约定、集成、CLI 和开发体验。 -
控制层:Pi、Project Think 等
负责智能体循环,包括调用工具、读取结果、管理上下文,并持续推进任务直到完成。 -
运行时 / 平台层:Cloudflare Agents SDK
提供计算、状态和存储等底层原语。
Agents SDK 被定位为最底层:它把持久化执行等能力提供给任意智能体控制层和上层框架。Flue 是首个基于该 SDK 构建的开源框架。
Flue:描述智能体知道什么,而不是编排它做什么
Flue 在本周发布了 1.0 Beta。它基于 Pi 控制层构建,OpenClaw 也使用同一控制层。
Flue 的特点是采用声明式方式构建智能体:开发者不需要编写智能体应该如何执行任务的脚本,而是描述智能体需要知道什么,包括:
- 使用的模型
- 具备的技能
- 沙箱环境
- 指令和上下文
之后,智能体会根据给定任务自主求解。Cloudflare 文中举例称,一个用于处理 bug 报告的 triage agent 可以拦截问题报告、在沙箱中复现,并诊断问题,代码量不到 25 行。
Flue 的开发体验
Flue 强调智能体不应孤立运行,而应进入用户已有的工作流和工具体系中。其主要开发体验包括:
1. 可接入多种协作平台
Flue 提供预配置的 Channels,可将智能体接入 Slack、GitHub、Linear 或 Discord。这些 Channel 会自动处理事件验证和分发等样板逻辑。
2. 支持无界面运行,也支持前端集成
Flue 智能体可以完全无界面运行,用于后台任务。同时,@flue/react 提供前端 hooks,可将智能体状态、工具执行过程和实时消息流式传输到前端应用中,减少开发者自行构建实时通信逻辑的工作量。
3. 面向生态集成
Flue 支持通过类似 flue add channel slack 的命令添加或升级集成,并生成 Markdown 蓝图,供编码智能体读取、修改并集成到代码库中。
面向生产环境的持久化能力
当智能体从本地终端进入生产环境后,会面对传统分布式系统中的故障:
- 主机崩溃
- 大模型服务 API 超时
- 进程意外重启
这些情况都可能导致一次智能体执行中的短期记忆丢失。
Flue 使用 Durable Streams 处理这一问题。它会把执行历史中的每个事件写入只追加日志中,包括提示词、工具响应和模型选择。这样,智能体状态不再只存在于易失内存中。如果进程中断,另一个进程可以读取日志,并从中断处继续执行。
Flue 可部署在多种环境中,也可运行在 Cloudflare 上
Flue 是一个多云框架。在 Node.js 环境中,每个智能体可以作为长生命周期进程运行,可部署到虚拟机、容器、GitHub Actions,或嵌入已有服务器。
当目标平台是 Cloudflare 时,每个 Flue 智能体会成为一个 Durable Object。Cloudflare 表示,这种方式可以让每个智能体拥有隔离的存储和计算能力,并自动扩展到所需数量,开发者不必自行配置服务器、管理 sticky sessions 或处理资源干扰问题。
Flue 部署到 Cloudflare 后,会使用 Agents SDK 的以下方法获得持久化执行能力:
runFiber()stash()onFiberRecovered()
同时,Flue 还使用 @cloudflare/codemode 和 @cloudflare/shell,在持久化工作区中执行沙箱代码。
智能体控制层需要什么样的平台能力?
Cloudflare 表示,Flue 能较好适配 Cloudflare 目标平台,是因为它可以映射到 Agents SDK 的核心原语。文章重点提到几类能力。
1. 每个智能体控制层都需要持久化执行
一次智能体执行并不是单个请求。模型可能会流式输出 token、调用工具、等待结果、请求人工批准,甚至委托子智能体完成任务。这个过程可能持续数秒或数分钟,期间任何时候都可能被中断。
如果状态只保存在内存中,进程崩溃后,流式连接、待处理工具调用、执行进度都会丢失。即便对话历史被写入磁盘,用户仍可能看到永远不结束的加载状态。
Agents SDK 中的 Fibers 通过 Durable Object 内部的原生 checkpoint 机制解决这一问题:
runFiber()在任务开始前记录执行进度;stash()在执行过程中保存 checkpoint;onFiberRecovered()在新实例恢复后交付最后一个 checkpoint。
这样,智能体可以知道某个执行过程曾被中断、执行到了哪一步,并决定如何继续。
2. 执行代码可能比堆叠大量工具更有效
智能体通常通过工具访问外部世界。但工具列表会快速膨胀,随着工具定义占满上下文窗口,模型选择正确工具的能力可能下降。
Cloudflare 提出的一种模式是:给模型一个执行代码的工具。模型编写 TypeScript 函数,调用所需 API,然后由控制层运行这段代码。
关键问题是代码在哪里运行。为了安全执行大模型生成的代码,需要沙箱环境。Cloudflare 的 Agents SDK 提供 @cloudflare/codemode,其基于 Dynamic Workers,让生成的代码在独立 Worker isolate 中运行,并且只能访问开发者提供的绑定。
文章称,Code Mode 会为每段代码创建新的 Dynamic Worker,执行后丢弃。Cloudflare 给出的数据是,isolate 启动时间低于 10ms,每次加载成本为 0.002 美元。其目标是相比每次工具调用都启动容器,在短代码执行场景下更快、更便宜。
Flue 在 Cloudflare 目标平台上使用 @cloudflare/codemode 支撑代码工具。智能体可以针对工作区编写 JavaScript,并通过 Code Mode 运行。
观察
这次更新的核心并不是单一框架发布,而是 Cloudflare 试图把 Agents SDK 进一步抽象为智能体运行时底座:上层框架负责开发体验,控制层负责智能体循环,平台层负责状态、存储、计算、恢复和安全执行。
对开发者来说,值得关注的是两个方向:
- 智能体应用进入生产后,持久化执行和故障恢复会成为基础能力,而不是附加能力;
- 与其不断增加工具数量,安全的动态代码执行可能会成为智能体调用外部能力的重要模式之一。
