LiteFlow LiteFlow
首页
  • v2.16.3 (当前版本)
  • What's New

    • What' s New In LiteFlow v2.16.2?
    • What' s New In LiteFlow v2.16.1?
    • What' s New In LiteFlow v2.16.0?
  • 历史版本

    • v2.15.X
    • v2.13.X
    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 2.16.2 Agent 升级说明
    • 2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
AI Agent
AI Skill
IDEA 插件
  • 答疑解惑

    • 常见问题
    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念?
  • 项目与社区

    • 项目介绍
    • 项目成员
    • 更新记录
    • 参与开发
    • 加入群聊
    • 谁在使用
赞助
GitHub (opens new window)

广告采用随机轮播方式显示 ❤️成为赞助商
首页
  • v2.16.3 (当前版本)
  • What's New

    • What' s New In LiteFlow v2.16.2?
    • What' s New In LiteFlow v2.16.1?
    • What' s New In LiteFlow v2.16.0?
  • 历史版本

    • v2.15.X
    • v2.13.X
    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 2.16.2 Agent 升级说明
    • 2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
AI Agent
AI Skill
IDEA 插件
  • 答疑解惑

    • 常见问题
    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念?
  • 项目与社区

    • 项目介绍
    • 项目成员
    • 更新记录
    • 参与开发
    • 加入群聊
    • 谁在使用
赞助
GitHub (opens new window)
  • 🤖 LiteFlow Agent 简介
  • 快速开始

    • 📦 引入依赖
    • ⚙️ 基本配置
    • 🧩 编写 Agent 组件
    • 📤 获取 Agent 结果
    • 🌊 流式输出
  • 🎬 演示项目
  • 🏪 模型配置
  • 📐 结构化输出
  • Jev 智能选择组件

    • Jev 模型与模块介绍
    • 依赖与配置
    • 编写选择组件
    • 置信度与异常处理
    • 客服演示与测试
  • Jev 布尔判断组件

    • Noul 与布尔判断组件
    • 编写布尔组件
  • 会话与记忆

    • 💬 会话标识
    • 🧠 会话存储
    • 🔄 多轮对话
    • 🗂️ 聊天历史
    • 📝 长对话与长期记忆
  • 工作空间与工具

    • 📂 工作区与执行环境
    • 📄 文件工具与产物
    • 🐚 Shell 工具
    • 🐳 Docker 沙箱
    • 🔧 Java 业务工具
    • 🔌 MCP 工具
  • 🎯 Skills 技能系统
  • 高级编排

    • 🔀 条件路由与并行调用
      • 用业务条件选择 Agent
      • 用 Jev 根据语义选择分支
      • WHEN 与同一会话的协调
      • 保存分支结果
      • 在一个 Agent 内选择模型
    • 🤝 多 Agent 协作
    • 🙋 工具调用前人工确认
    • 🧭 子代理与计划
    • 🌐 远程 A2A 调用
  • 运行机制与可观测

    • 🔁 迭代次数与超时
    • 📋 执行日志与事件
    • 🪝 中间件扩展
  • 📖 扩展点速查
  • ⚡ 配置速查
  • 🛡️ 执行与访问边界
  • 🔍 故障排查
  • ⬆️ 升级到 2.16.2
  • AI Agent编排
  • 高级编排
铂赛东
2026-09-19
目录

🔀 条件路由与并行调用

# 用业务条件选择 Agent

Agent 是 LiteFlow 节点,可以与普通组件一起使用:

<chain name="routeChain">
    THEN(prepare, IF(isOrderQuestion, orderAgent, generalAgent), saveResult);
</chain>

其中 isOrderQuestion 是返回布尔值的条件组件,两个 Agent 按快速开始注册。这里由业务规则决定调用哪个 Agent。

# 用 Jev 根据语义选择分支

需要根据客户的自然语言诉求选择流程时,可引入 liteflow-agent-jev,让 supportRouter 继承 JevSwitchComponent:

<chain name="support">
    SWITCH(supportRouter).to(refund, exchange, consult).DEFAULT(manual);
</chain>

组件必须实现 state()、instructions() 和 choices():state() 提供本次客户的自然语言诉求及相关业务上下文,instructions() 定义如何判断这些输入,choices() 声明目标 ID 与各选项的适用边界。客户本次提出的问题放在 state() 中。

Jev 返回有效选项且置信度达到阈值时,LiteFlow 执行对应目标;低置信度或均不适用时执行 manual。目标既可以是普通业务组件,也可以是 Agent 或子链。

Jev 调用故障仍走异常处理,不会自动变成 DEFAULT 成功分支。接入步骤见编写 Jev 选择组件,结果与兜底策略见置信度与异常处理,可运行页面见客服演示与测试。

只需要一个是非判断时(例如“客户是否明确要求人工”),改用继承 JevBooleanComponent 的布尔组件配合 IF,按“是”的概率与阈值走进两个分支,写法见 Jev 布尔判断组件。

# WHEN 与同一会话的协调

WHEN 会调度多个分支,但 2.16.2 的 Harness Agent 会为共享工作区获取会话锁。同一个 conversationId 下,多个 Agent 不保证同时执行,即使它们的 agentKey 不同。

因此,将两个 Agent 放进 WHEN 不能直接理解为两个模型请求必然并行。需要共享会话文件、前后依赖时,优先用 THEN 表达顺序;需要处理独立任务时,使用不同会话发起独立流程调用。

默认 invocation-guard.mode=AUTO 随存储选择协调方式:JSON 只协调同一 JVM,Redis/MySQL 支持跨实例协调。不要为了让共享会话并行而在多实例环境强制使用 LOCAL。

# 保存分支结果

responseData 是 Slot 中的一份结果。多个分支写入同一个位置会互相覆盖,应在 handleReply(reply, context) 中写入各自的业务上下文字段。需要聚合结果时,再由后续组件读取这些字段。

# 在一个 Agent 内选择模型

如果只是按请求选模型,可通过 routingModels() 预先登记候选模型,再由 routeModel(defaultModel, context) 返回其中一个实例。声明模型与按次选择分开处理,详见扩展点速查。

帮助我们改善此文档 (opens new window)
上次更新: 2026/09/21, 16:34:59
🎯 Skills 技能系统
🤝 多 Agent 协作

← 🎯 Skills 技能系统 🤝 多 Agent 协作→

Theme by Vdoing | Copyright © 2020-2026 铂赛东 | MIT License
沪ICP备18012955号-2