将更多Agent框架引入Cloudflare,从Flue开始
Cloudflare开放Agents SDK基础能力,供任何Agent框架构建。首个框架Flue基于Pi harness,利用Durable Objects实现持久执行、动态代码执行和持久化文件系统,使Agent能够在生产环境中可靠运行。
2026年是Agent harness(控制模型与外界交互的软件,如Codex、Claude Code、OpenCode、Pi和Project Think)投入生产的一年。这些工具已经成熟到团队将Agent部署为真正的、承载负载的基础设施,而不仅仅是原型。
但构建能够经受生产环境考验的Agent是困难的。Cloudflare在开发第一方Agent harness Project Think的过程中积累了经验,并发现每个Agent在云端运行时都面临一系列分布式系统问题:Agent中断后如何自动、优雅地从断点恢复,而不丢失上下文或浪费令牌?如何安全地运行不受信任的代码?如何让Agent使用其训练所用的工具?
Harness无法独自解决这些问题。它们与状态、存储和计算紧密相关,因此依赖于Agent运行的平台。Cloudflare将其从Project Think硬化为生产环境的经验带入Cloudflare Agents SDK作为基础层,现在任何基于Agents SDK构建的harness都可以获得持久执行、动态代码执行、持久化文件系统和动态工作流等能力。
与此同时,在harness之上出现了一个新层——框架。像Flue这样的框架为harness提供了项目结构、约定、集成和开发者体验,使构建Agent更加高效。
为了解决扩展挑战,出现了一个三层堆栈用于构建生产级AI:
- 框架(Flue):项目结构、约定、集成、CLI和开发者体验。
- Harness(Pi、Project Think):代理循环,调用工具、读取结果、管理上下文并持续执行直到任务完成。
- 运行时/平台(Cloudflare Agents SDK):所有上层依赖的计算、状态和存储原语。
Agents SDK是底层,使持久执行等原语可供任何harness和框架使用。Flue是首个基于它构建的开源框架,由Astro团队开发。
Flue 1.0 Beta本周发布,基于Pi harness。其独特之处在于声明式方法:不编写Agent执行脚本,而是描述Agent知道什么。定义Agent所需的上下文——模型、技能、沙箱和指令——然后它自主解决给定任务。没有需要编写的编排循环。例如,一个分诊Agent可以在不到25行代码内拦截错误报告,在沙箱中重现并诊断问题。
Flue的开发者体验:Agent不孤立存在,它们存在于用户工作的地方,并与首选工具集成。Agent可以部署到Slack、GitHub、Linear或Discord,通过预配置的通道自动处理事件验证和分发。Agent可以无头运行,但@flue/react提供原生前端钩子,将Agent的状态、工具执行和实时消息流式传输到前端应用,无需自定义实时管道。Flue还通过命令如flue add channel slack轻松添加集成,生成Markdown蓝图,供编码Agent读取、修改并干净地集成到代码库中。
为生产而设计:将Agent从本地终端移到生产生态系统会引入传统分布式系统故障。主机崩溃、LLM提供商的API超时和意外重启会威胁到正在运行的Agent回合的短期记忆。Flue通过Durable Streams解决这个问题:执行历史中的每个事件都被添加到只追加日志中。通过将每个提示、工具响应和模型选择处理为不可更改的账本,Agent的状态永远不会丢失。如果进程死亡,另一个进程只需拾取日志并从精确步骤继续执行。
Flue是多云框架。在Node.js上,每个Agent作为长期运行进程运行,可部署到任何VM或容器、GitHub Actions或现有服务器。当针对Cloudflare时,每个Agent成为Durable Object,自动扩展至所需数量,具有隔离存储和计算。Flue Agent部署到Cloudflare后,通过Agents SDK的runFiber()、stash()和onFiberRecovered()方法获得持久执行。Flue还使用@cloudflare/codemode和@cloudflare/shell进行沙箱化代码执行。
Flue的Cloudflare目标之所以有效,是因为它清晰映射到Agents SDK中的核心原语。每个Agent harness都需要持久执行。Agent回合不是单个请求。模型流式传输令牌、调用工具、等待结果、可能请求人类批准或委派给子Agent。序列可能需要数秒或数分钟,进程随时可能中断。Fiber通过Durable Object内部的本地检查点机制解决这个问题。runFiber()在Agent回合工作开始前记录进度,并使用stash()检查点。当新Agent实例在中断后启动时,onFiberRecovered()传递最后一个检查点,使Agent知道回合被中断以及中断位置,并决定如何继续。
执行代码比用工具过载Agent更好。Agent harness通过工具给模型访问外部世界,但工具表面增长快,模型在选择正确工具时表现变差。更好的模式是给模型一个执行代码的工具。模型编写TypeScript函数调用所需API,harness运行它。问题在于代码在哪里运行。要安全运行LLM生成的代码,需要沙箱。但典型沙箱对于每次工具调用可能缓慢、昂贵且低效。Agents SDK提供@cloudflare/codemode,封装Dynamic Workers,在每个Worker隔离中执行LLM生成的代码,仅使用提供的绑定。Code Mode为每个代码片段创建新的Dynamic Worker,运行后丢弃。隔离启动时间低于10ms,每次加载成本0.002美元,比每次启动容器更快更便宜。Flue在Cloudflare目标上使用@cloudflare/codemode驱动代码工具。
大多数工作空间任务不需要完整容器。Agent harness通常需要文件系统来读取文件、写入输出、搜索代码和理解差异。编码Agent尤其依赖文件系统。但如果harness在无服务器环境中运行,如何获得跨执行持久化的文件系统?通常答案是容器,但对于Agent主要进行的文本操作来说成本高昂。@cloudflare/shell在Durable Object内部提供持久化虚拟文件系统,由SQLite支持。它提供类型化文件操作——读、写、编辑、搜索、grep、diff——Agent harness可作为工具使用。Flue Agent在Cloudflare目标上针对工作空间虚拟文件状态API编写JavaScript。通过在Durable Object内运行更多操作,Agent受益于隔离模型的高效执行,完全避免容器开销。对于需要完整操作系统(如npm install、git或编译器)的Agent,Cloudflare Containers提供支持。Cloudflare还在构建@cloudflare/workspace,使给定Durable Object的虚拟文件系统与容器的文件系统保持同步,实现从轻量级Worker到Linux环境的无缝过渡。
动态工作流:让Agent编写自己的工作流以一致地重复任务。当Agent需要执行多步骤管道时,harness无法独自提供持久多步执行。需要平台持久化每一步、重试失败并在中断后恢复。Claude Code最近推出了动态工作流,Claude在运行时编写JavaScript脚本,将工作分派给数十个子Agent,运行时持久执行。@cloudflare/dynamic-workflows提供类似能力,允许Agent动态定义工作流。
Cloudflare Agents SDK提供了构建生产级Agent所需的基础,Flue展示了如何将之转化为实际框架。随着更多框架和harness基于Agents SDK构建,Agent部署将变得更加可靠和高效。