🚀What's New In LiteFlow v2.16.2?
# 这次重点更新了什么
2.16.0 让 AI Agent 成为可以参与 EL 编排的组件。2.16.2 进一步完善了 Agent 执行任务所需的能力:保存连续对话、读写工作区、运行脚本、加载 Skills、接入工具服务,以及在关键操作前等待人工确认。
同时新增 liteflow-agent-jev,通过 Jev 的语义判断,从候选组件或子链中选择下一步执行目标,适合客服分流、工单分类和按用户意图选择业务流程。
这次 Agent 模块统一使用 liteflow-agent-* 命名。对话与工具调用组件继承 HarnessAgentComponent,Jev 选择组件继承 JevSwitchComponent。完整使用文档已按 2.16.2 更新,第一次接入对话 Agent 可以从快速开始阅读。Agent 模块要求 JDK 17 及以上。
# 用 Jev 把自然语言接入选择编排
liteflow-agent-jev 接入 TypeSafe Jev 的 Choice 能力。业务组件提供本次输入、判断说明和候选 ID,Jev 返回选择结果,LiteFlow 再执行对应组件、Agent 或子链,沿用现有 SWITCH 语法:
SWITCH(supportRouter).to(refund, exchange, logistics).DEFAULT(manual);
例如,客户说“收到的杯子碎了,想换一个”,supportRouter 可以选择 exchange,再由换货组件或子链处理后续业务。低置信度或模型选择“均不适用”时,执行 manual 人工兜底分支。默认置信度阈值为 0.6,可通过配置或组件方法调整;鉴权失败、超时等调用故障仍交给流程异常处理,不会自动进入 DEFAULT。
选择组件通过 onDecision() 获取原始选项、置信度、候选概率和模型版本,便于记录和观察分流结果。置信度与候选概率是不同字段,分流阈值比较的是置信度。
只需要语义分流时,引入对应的 LiteFlow Starter 和 liteflow-agent-jev 即可。它只依赖 liteflow-core,使用独立的 liteflow.agent.jev.* 配置,无需额外引入 liteflow-agent-core、配置聊天模型、会话存储或 Docker。
通过 liteflow.agent.jev.provider 选择 typesafe(默认)或 openrouter,并配置对应平台的 API Key;未显式设置地址和模型时,使用所选入口的默认值。两种入口使用相同的组件与 EL 写法,完整对照见 Jev 依赖与配置。
接入步骤见 Jev 智能选择组件。配套的客服演示可在浏览器中输入客户消息,查看实际执行分支、置信度、候选概率与处理时间。
# 先用三项配置跑通对话
引入 LiteFlow Starter、liteflow-agent-core 和所需模型模块后,最小配置如下:
spring.application.name=agent-demo
liteflow.rule-source=agent/flow.el.xml
liteflow.agent.openai-compatible.deepseek.api-key=${DEEPSEEK_API_KEY}
组件负责选择模型、声明职责和取得本次输入。只做对话时关闭 Shell,即可使用默认 JSON 存储,不需要先准备数据库、命令目录或 Docker。
调用方式仍是 FlowExecutor.execute2Resp(...)。模型开启 .stream(true) 后,通过 ExecuteOption.eventListener(...) 接收 agent.text.delta,即可把增量回复接到应用的 SSE 或 WebSocket。完整示例见编写 Agent 组件和流式输出。
# 会话存储与执行环境分开选择
会话存储提供 JSON、Redis、MySQL 三种选择,保存续聊状态、聊天历史和工作区数据。后续请求传入同一个 conversationId,即可继续对话;部署后保持应用名、组件标识和存储一致,正常保存的会话可以在重启后恢复。
执行命令则选择本地环境或 Docker 沙箱,两者可以与三种存储自由组合:
| 场景 | 组合 |
|---|---|
| 本地开发,先跑通文件处理 | JSON+本地执行 |
| 多实例共享会话,已有 Redis | Redis+本地或 Docker |
| 用数据库管理状态,隔离脚本运行环境 | MySQL+Docker |
默认 Docker 容器断网,内存上限 512 MiB、CPU 配额为 1。可以每次调用后回收容器,也可以按会话复用并在空闲后回收。快照保存工作区文件,不保存运行中的进程或容器外部依赖。
JSON+Docker 需要持久保存快照目录;Redis/MySQL 则由存储后端保存快照。具体配置见会话存储和Docker 沙箱。
# 工具、Skills 与长任务
Java 工具可以直接调用现有业务服务,MCP 可以接入独立工具服务,Skills 则描述一类任务如何执行。Skills 支持文件系统或 classpath 资源,说明和附带资源会准备到会话工作区,文件目录中的技能可以在后续调用时重新发现。
长对话默认自动压缩。需要保存用户偏好等稳定信息时,还可按需开启长期记忆提取;展示用的聊天历史与模型上下文分开保存,压缩不会因此删掉历史消息。
需要下游组件消费明确字段时,可用 Java 类型或 JSON Schema 声明结构化输出。相关接入见 MCP 工具、Skills、长期记忆和结构化输出。
# 人工确认与多 Agent 协作
退款等操作可以设置 ASK 规则,由应用的 AgentConfirmationHandler 等待用户决定,再继续执行。默认不会自动请求确认,单纯监听确认事件也不会完成审批。
多个 Agent 仍可通过 EL 表达固定业务流程;希望主 Agent 自行分派任务时,可在 Docker 或自定义后端声明子代理;远端服务提供 A2A 协议时,可通过 liteflow-agent-a2a 接入流程。
同一会话中的 Agent 共享工作区,调用会受会话锁协调,放进 WHEN 不保证同时运行。流程需要保留各节点结果时,应分别写入业务上下文,避免覆盖 responseData。
接入方式见人工确认、多 Agent 协作、子代理与计划和远程 A2A 调用。
# 已有项目如何升级
本次 Agent 升级涉及依赖名、组件方法、存储属性和流式事件协议,已有项目需要同步修改,不能只提升版本号。旧会话和文件不会自动迁移到新存储。
建议先按2.16.2 升级说明完成依赖和 API 调整,再验证一次完整调用、多轮对话、重启恢复及所用工具。可运行的示例项目提供本地/Docker 与 JSON/Redis/MySQL 的六种 Web 聊天组合,包含流式聊天、历史记录和附件下载;另提供独立的 liteflow-agent-jev-switch 客服分流示例。



