写这篇文章的时候,Apache Flink Agents 的 0.2.1 版本刚发布不到两个月,0.3 的路线图已经摆在了社区面前。不到一年的时间里,这个从 Apache Flink 母体中生长出来的新项目,正在试图回答一个很有意思的问题:AI Agent 能不能不只是在聊天窗口里回答问题,而是真正跑在流水线上,去处理那些永不停歇的数据流?
一、一个不太一样的 Agent 框架
2023 年到 2025 年,AI Agent 的概念火得一塌糊涂。LangChain、AutoGen、CrewAI、Dify,各种框架层出不穷。你随便打开一个技术社区,都能看到有人在做智能客服、自动写代码、多 Agent 协作写方案。这些工具确实厉害,但有一个共同点很容易被忽略:它们大多是"请求响应"模式。用户发一条消息,Agent 处理一下,返回结果。对话结束,任务完成。
可现实世界哪有那么多"发完就完"的事情?
电商平台的订单流水是 24 小时不停歇的,直播间的弹幕像瀑布一样往下滚,工厂里的传感器每秒钟都在吐出成百上千条数据,金融交易系统里的每一笔转账都在毫秒之间决定成败。这些数据不是等你去问的,它们自己就源源不断地涌过来。传统 Agent 框架面对这种场景,多少有点力不从心。你要先把数据攒起来,导出去,再调一下外部 API,等结果回来,黄花菜都凉了。
Flink Agents 的出现,就是冲着这个空白来的。
它是 Apache Flink 在 2025 年 10 月推出的全新子项目。官方给它下的定义很朴素:一个基于 Apache Flink 的事件驱动 AI Agent 框架。说白了,就是把 Flink 做了十几年的流处理能力,和当下最火的 Agent 概念揉在一起。让 Agent 不再只是坐等请求的"应答机",而是变成数据流上的"流水线工人",来一条处理一条,毫秒级响应,还能保证不丢、不重。
这个定位本身就挺有意思。它不是在已有的 Agent 红海里抢蛋糕,而是开辟了一块新战场。
二、为什么流处理需要 Agent?又为什么 Agent 需要流处理?
在深入技术细节之前,我们不妨先把这两个问题想清楚。
传统的流处理架构长什么样?拿一个典型的实时推荐系统来说,Flink 负责从 Kafka 里读用户行为数据,做聚合、打标签、写特征,然后把结果推到 Redis 或者 HBase。推荐模型用这些特征去做预测,最后把商品推给用户。这套流程跑了很多年,相当成熟,但 AI 的加入让事情变得复杂了。
假设你想在流处理里直接调用大模型做推理呢?比如说,用户刚点了一个商品,你想让 LLM 实时理解这个行为背后的意图,然后动态调整推荐策略。这时候问题来了。Flink 本身是个流处理引擎,它并不擅长直接和 LLM 打交道。你可能得把数据从 Flink 导出来,调 OpenAI 的 API,等结果回来,再想办法同步回去。链路长了,延迟高了,出错的可能性也大了。更麻烦的是状态管理:如果 Agent 在执行动作的时候挂了,重启之后这个动作要不要重试?重试了会不会导致重复操作?这在金融交易或者风控场景里可是致命的。
反过来看,传统 Agent 框架也有它的天花板。LangChain 做对话很溜,CrewAI 做多 Agent 协作也很有想法,但它们的设计假设本质上还是"来一个请求,处理一下"。当你需要同时处理几万条实时事件,还要保证每条事件的推理结果都准确无误地落盘,这些框架的扩展性和容错能力就显得捉襟见肘了。
所以 Flink Agents 的思路是:与其让流处理和 Agent 各自为战,不如把它们统一到一个框架里。流处理的能力交给 Flink,AI 推理的能力交给 Python 侧的 LLM,中间的状态管理和容错也由 Flink 来兜底。这不是简单的拼接,而是把 Agent 彻底重构为流处理引擎里的一等公民。
三、Agent 变成流算子,意味着什么?
Flink Agents 最核心的设计决策,就是把 Agent 建模为 Flink 流图里的一个算子(Operator)。
这个决策的含金量,可能比你第一眼看上去的要高得多。
在 Flink 的世界里,算子是基本计算单元。数据流从一个算子流向下一个算子,每个算子可以有自己的状态,Flink 的分布式调度器负责把它们分配到集群的各个节点上运行。如果某个节点挂了,Flink 会自动把算子迁移到别的节点,并从最近一次 checkpoint 恢复状态。这套机制已经在大规模生产环境里跑了十几年,相当可靠。
现在,Agent 也成了这样一个算子。它不再是一个独立的微服务,也不再是一个需要你自己管理生命周期的进程。它就是一个跑在 Flink 集群里的算子,和其他 map、filter、window 算子平起平坐。你写 Flink 作业的时候,可以直接把 Agent 塞进 DAG 里,数据流进 Agent,Agent 做完推理,结果再流向下游。
听起来好像只是换了个部署方式?实际上远不止。
因为 Agent 变成了算子,它自动继承了 Flink 的全套能力:水平扩展、精确一次语义(Exactly-Once)、分布式快照容错、事件时间处理、背压控制。这些东西如果你在传统 Agent 框架里自己实现,没个小半年根本搞不定。而在 Flink Agents 里,它们是开箱即用的。
具体来说,Flink Agents 采用了 Java 加 Python 的双栈架构。Java 这一侧负责所有和流处理相关的事情:事件路由、状态管理、checkpoint、任务调度。Python 这一侧则专注于 AI 相关的事情:调用 LLM、执行工具函数、处理推理逻辑。两者通过 Flink 的跨语言机制通信,开发者在写代码的时候可以按需选择语言。熟悉 Flink 的人用 Java 写流处理逻辑,熟悉 AI 的人用 Python 写 Agent 逻辑,井水不犯河水,又能无缝协作。

上图展示了 Flink 在事件驱动 AI 架构中的位置:原始事件经过复杂事件处理(CEP)过滤后,输入到 AI Agent 进行自主决策,最终输出到下游系统。Flink Agents 正是承载这一链路的核心引擎。
四、事件驱动编排:Agent 之间怎么"对话"?
多 Agent 协作是当下 Agent 领域的热门话题。但"协作"这两个字说起来容易,真要实现起来,通信和协调是两大难题。
Flink Agents 给出的方案是事件驱动编排。它不是让 Agent A 直接调用 Agent B 的 API,而是让所有 Agent 都通过事件流来通信。你在 Flink 作业里定义好事件类型,比如 ChatRequestEvent、ChatResponseEvent、ToolCallEvent,然后把这些事件串联成一条流。Agent 收到事件,处理,产生新的事件,再发回流里,下游的 Agent 接着处理。
这种设计有一个很大的好处:解耦。Agent A 不需要知道 Agent B 在哪里、怎么调用它。它只需要把事件发到流里,Flink 的调度器会负责把事件路由到正确的 Agent 实例。更妙的是,Flink 的 KeyBy 机制可以保证同一个实体(比如同一个用户、同一个订单)的事件始终被路由到同一个 Agent 实例。这意味着 Agent 可以维护有状态的上下文,而不需要额外的分布式会话存储。
举个例子。假设你在做一个实时客服系统,用户发了一条咨询消息。这条消息被包装成一个 InputEvent 进入 Flink 流,经过 KeyBy 被路由到负责这个用户的 Agent 实例。Agent 读取自己的短期记忆,发现这个用户三分钟前刚问过退货政策,于是结合上下文给出更精准的回复。回复被包装成 ChatResponseEvent 流向下游,同时触发一个 ToolCallEvent 去查询订单状态。整个过程都是事件驱动、异步进行的,没有阻塞调用,也没有复杂的同步逻辑。
这种通信模式跟 Kafka 生态天然契合。实际上,Confluent 的人已经在博客里详细讨论过如何用 Flink 加 Kafka 构建多 Agent 编排器。Kafka 作为持久化的共享内存,Flink 作为计算引擎,Agent 作为流算子,三者结合起来的想象空间非常大。
五、三层记忆:给 Agent 装上"大脑"

Agent 需要记忆,这是个常识。但记忆怎么设计,不同框架的做法差异很大。Flink Agents 在这块下了不少功夫,提出了一个三层记忆模型,分别对应人类认知里的感官记忆、短期记忆和长期记忆。
最底层是 Sensory Memory,感官记忆。它只存活于单次运行期间,处理完当前事件就消失。比如当前这条消息的内容、附带的元数据,都属于感官记忆。它不需要持久化,用完即走,开销最小。
往上一层是 Short-term Memory,短期记忆。它会跨多次运行保持,Agent 可以精确检索之前的状态。比如一个用户在对话里的上文、刚刚设置的偏好、正在进行的任务进度,都存在这里。短期记忆依托 Flink 的状态后端实现,可以是内存里的 HeapStateBackend,也可以是磁盘上的 RocksDBStateBackend,取决于你对性能和容量的权衡。
最顶层是 Long-term Memory,长期记忆。这是可搜索、可压缩的持久化记忆,通常对应向量数据库或者外部存储。用户的长期画像、积累的知识库、历史决策记录,都可以放在这里。长期记忆的读写成本更高,但能保存的信息量也最大。
三层记忆各司其职,Agent 在处理事件的时候可以按需访问不同层级的记忆。这种设计让 Agent 既有"当下"的感知力,又有"近期"的上下文理解力,还有"长期"的经验积累。更重要的是,所有记忆都建立在 Flink 的状态管理之上,天然具备分布式、容错、一致性的保障。
说到这你可能会问:这不就是 RAG 吗?某种程度上是的,但 Flink Agents 把 RAG 做进了流里。知识库的更新不再是定时任务或者批处理作业,而是一条持续的流。新文档一进来,就实时向量化、实时写入长期记忆,Agent 下一秒就能用到这些新知识。对于需要实时响应的场景,这种流式 RAG 的能力非常关键。
六、Exactly-Once:为什么这个特性很重要?
Flink Agents 官方在每次发版的时候都会强调 Exactly-Once,也就是精确一次语义。这个词技术人听得多了,可能有点麻木。但在 Agent 场景里重新看一下,你会发现它的分量确实不轻。
传统的大模型应用,调用 API 出错了怎么办?重试呗。反正只是生成一段文本,重试一次大不了多耗点 token。但如果 Agent 执行的是有副作用的动作呢?比如说,在金融风控场景里,Agent 判断一笔交易可疑,触发了一个"冻结账户"的动作。这个动作如果因为网络抖动被重试了一次,结果账户被冻结了两次,那就出大事了。
Flink 的 Exactly-Once 语义保证的是:在发生故障并恢复之后,每条记录对状态的影响只发生一次,不多也不少。Flink Agents 把这套机制延伸到了 Agent 的动作执行上。Agent 的每一个动作都被纳入 Flink 的分布式事务管理,checkpoint 的时候一起快照。如果作业重启,已经执行过的动作不会重复执行,未执行的动作会从 checkpoint 恢复后继续执行。
这个特性对于企业级应用来说几乎是刚需。电商库存扣减、金融资金划转、物联网设备控制,这些场景都承受不了重复执行或者遗漏执行的风险。传统 Agent 框架很少在这块做深,而 Flink Agents 直接站在了 Flink 十几年的工程积累之上,这是它很硬的护城河。
七、发展到现在,它究竟走到哪一步了?
聊了不少设计理念,我们来落地看看 Flink Agents 目前的真实状态。
2025 年 10 月 15 日,0.1.0 Preview 版本发布。这是 Flink Agents 的首次亮相,奠定了整个项目的基调:事件驱动、流处理原生、Java 和 Python 双语言支持。这个版本更像是一个宣言,告诉社区 Apache Flink 要正式进入 Agent 领域了。
2026 年 2 月 6 日,0.2.0 版本发布。这个版本的改进很实在。Java API 的功能大幅完善,Python 侧也可以更方便地访问 Java 侧的能力。多类型记忆系统在这个版本里落地,Sensory、Short-term、Long-term 三层记忆的区分更加清晰。Durable Execution 机制的引入让 Agent 的执行更加可靠。同时,这个版本开始支持 Flink 1.20 到 2.2,兼容性覆盖得比较广。
2026 年 3 月底,0.2.1 版本发布。这是一个小版本,主要是三个定向 bug 修复、安全漏洞补丁和一些稳定性改进。虽然改动不大,但说明项目已经在进入"打磨期",不再只是堆新功能,而是开始关注生产可用性。
按照官方路线图,0.3.0 计划在 2026 年 6 月 15 日发布。这个版本有几个值得期待的点。Agent Skills 机制,也就是可复用的 Agent 能力模块,可能会让开发者像搭积木一样组装 Agent。Mem0 memory 的集成会进一步增强长期记忆的能力。Python 3.12 的支持也在计划中,这对 Python 侧的开发者来说是个好消息。
从时间线来看,Flink Agents 的发展节奏相当紧凑。不到一年时间,从 0.1 走到 0.3,而且每个版本都有实质性的功能落地。Apache 顶级项目的背书,加上阿里巴巴作为 Flink 主要贡献方的持续投入,这个项目的后劲值得期待。
八、跟 LangChain、CrewAI 这些框架比,该怎么选?
这是个绕不开的问题。Flink Agents 不是市场上第一个 Agent 框架,也不会是最后一个。那它跟已经成熟的 LangChain、CrewAI、AutoGen 相比,到底该怎么选?
我的看法是:它们根本不在同一个赛道。
LangChain 的核心设计是链式调用(Chain)。你把各种组件串成一条链,输入进来,沿着链一步步处理,输出结果。这种模式非常适合构建对话应用、RAG 系统、单任务工作流。它的优势在于组件丰富、生态成熟、上手快。CrewAI 和 AutoGen 则更关注多 Agent 的协作编排,角色分配、任务委托、对话协商,这些能力做得很细致。
但它们有个共同的前提:请求驱动。用户或者系统主动发起一个请求,Agent 开始工作,任务完成就结束。这种模式在处理批量任务、对话交互、异步工作流的时候非常高效。
Flink Agents 做的事情完全不同。它不等你发请求,它守在数据流旁边,来一条处理一条。一条用户点击事件来了,Agent 瞬间完成意图识别和策略调整。一条传感器报警来了,Agent 立即判断风险等级并触发处置流程。一条交易记录来了,Agent 实时分析并给出风控决策。这些都是持续性的、低延迟的、大规模的处理需求。
所以选择的逻辑其实很清楚:如果你的场景是"用户来问了,我回答一下",LangChain 们足够好。如果你的场景是"数据源源不断地来,我必须实时处理且不能出错",Flink Agents 可能是更自然的选择。而且这两者并不是互斥的。很多系统可能会让 LangChain 处理用户交互层,Flink Agents 处理实时数据层,各取所长,相互配合。
九、什么场景特别适合用它?
聊了这么多架构和对比,我们来点实际的。你的业务里如果有以下这些信号,Flink Agents 值得认真考虑。
实时直播分析。直播间里每秒几百上千条弹幕、礼物、点赞,传统做法是先落日志,事后分析。但如果想让 AI 实时感知观众情绪、自动调整直播策略、甚至实时生成互动内容,就需要流式 Agent 的能力。Flink Agents 可以把这些实时事件流直接喂给 LLM,毫秒级产出分析结果。
电商动态推荐。用户行为是实时变化的。他刚点了一个商品,下一秒又在比价,再过几秒可能直接下单了。离线批处理的推荐模型很难捕捉这种即时意图。Flink Agents 可以在用户行为流上直接做推理,动态调整推荐权重,真正实现"千人千面"的实时版。
金融实时风控。交易流水是永不停歇的。欺诈模式也在不断演变。Flink Agents 的 Exactly-Once 语义在这里特别有价值:风控决策一旦触发(比如冻结账户、拦截转账),绝不会因为系统故障而重复执行或者遗漏。同时,新的欺诈模式可以通过流式更新实时注入 Agent 的知识库,不需要等下一次模型训练。

上图展示了一个典型的金融欺诈检测管道:原始交易事件经过 Flink CEP 的复杂模式匹配和异常检测后,输入到 AI Agent 做最终决策,实现从感知到行动的实时闭环。
物联网智能响应。工厂里的传感器、楼宇里的温控设备、电网里的监测节点,它们产生的数据流需要实时分析和响应。Agent 可以持续监控这些流,识别异常模式,自动下发控制指令。从"感知"到"行动"的闭环延迟可以控制在毫秒级别。
流式 RAG 知识库。知识库不是静态的。新的文档、新的政策、新的产品信息每天都在产生。Flink Agents 可以让这些更新以流的形式实时进入向量数据库,Agent 的推理始终基于最新知识,而不是三个月前的老黄历。
十、上手是什么体验?
说了这么多,写代码到底长什么样?我们来看一个官方示例的简化版:流式情感分析。
整个项目就三个文件。custom_types.py 里定义事件模型,比如输入的文本、输出的情感标签。sentiment_agent.py 里写 Agent 的推理逻辑,调用 LLM 判断文本是正面、负面还是中性。workflow_agent_example.py 里配置 Flink 执行环境,把事件流和 Agent 串起来。
数据流的路径很清晰:InputEvent 进来,被转成 ChatRequestEvent,Agent 处理之后产生 ChatResponseEvent,最后被转成 OutputEvent 输出。整个流程都在 Flink 的流图里完成,你不需要操心事件怎么路由、状态怎么保存、故障怎么恢复,Flink 全包了。
代码量不大,但背后支撑的是一整套分布式流处理基础设施。这种"写起来像单机,跑起来是分布式"的体验,正是 Flink 生态的一贯风格。
十一、它真的能在生产环境里用吗?
这是个很现实的问题。作为一个 0.x 阶段的项目,Flink Agents 距离大规模生产部署还有多远?
先说风险。API 还在快速演变,0.1 到 0.2 就有不少接口变化,0.3 估计还会继续调整。这意味着你写的代码可能下个版本就得改。社区生态也相对年轻,第三方集成、调试工具、最佳实践文档都不如 LangChain 丰富。如果你的团队之前没有 Flink 经验,学习曲线是客观存在的,流处理的概念(事件时间、水位线、状态后端)本身就需要时间消化。
但优势也很明显。它背靠 Apache 顶级项目,不会突然消失。Flink 本身在企业级流处理领域的地位非常稳固,Flink Agents 可以无缝接入已有的 Flink 基础设施。如果你的团队已经有 Flink 技术积累,那上手 Flink Agents 的边际成本其实很低。Exactly-Once、分布式容错、水平扩展这些能力,都是很多企业花几年时间才能在自研系统里勉强实现的,而在这里是内置的。
我的建议是:如果你的业务属于前面提到的实时流场景,而且团队有 Flink 基础,现在就可以开始试点。从一个非核心的实时分析任务入手,跑通端到端流程,积累一手经验。等 0.3 或者 1.0 版本发布之后再考虑扩大规模。如果你的业务没有强实时需求,或者团队完全没有流处理经验,那不妨先观望,把 Flink 本身学好再说。
十二、写在最后
Flink Agents 的出现,让我看到了一个很有意思的趋势:AI 正在从"应用层"往"基础设施层"下沉。
过去两年,大家的注意力都在大模型本身,以及怎么用这些模型做出炫酷的应用。这没问题,但基础设施的缺口一直在那里。当 AI 真正要接入企业核心业务流程的时候,稳定性、扩展性、实时性、容错能力,这些工程问题一个都不会少。Flink Agents 试图在流处理和 AI 之间搭一座桥,让 Agent 能够运行在企业级的数据基础设施之上,而不是飘在几个 API 调用之上。
这个项目现在还很年轻,0.2 的版本号说明它还在快速生长。但方向是对的。实时数据流和 AI 智能体的结合,不是锦上添花,而是很多场景的刚需。 Flink Agents 能不能成,取决于它能否在接下来的版本里真正跑通大规模生产案例,建立起自己的开发者生态。
对于技术决策者来说,它不需要成为你工具箱里的唯一选择,但应该成为你关注清单上的一项。当业务里开始出现"实时流数据 + AI 推理"的需求时,你会庆幸自己早就了解过这个选项。