🎬 演示项目
完成快速开始后,可以通过 LiteFlow Agent 示例项目体验一个完整的 Agent 应用。从浏览器发起问题,到模型选择 Skill、执行工具、返回答案,再到保存聊天记录和工作区文件,项目提供了可直接运行的前后端代码。
GitHub 地址:bryan31/liteflow-agent-example (opens new window)。项目使用 LiteFlow 2.16.2、JDK 17 和 Spring Boot 4,各模块均可独立构建和运行。
除了 Web 聊天应用,项目还提供 liteflow-agent-jev 决策演示(客服分流、是非判断与自由决策),用于交互测试自然语言选择与是非判断组件,查看置信度、概率与处理时间,详见下方“Jev 客服分流示例”。
# 运行效果
下面是 liteflow-agent-web-container-mysql 的实际运行截图。在聊天框中输入“上周哪个板块表现比较好”,等待 Agent 完成查询和回答后,点击右上角的“容器”状态入口并将鼠标停留在这里,即可查看当前会话的沙箱状态。

通过侧栏可以切换历史会话、查看可用技能;聊天区域展示用户问题、执行过程和最终回答;右上角的状态弹窗展示容器 ID、名称、镜像、任务和活动时间。截图中的行情内容仅用于展示这次问答的运行效果,具体结果会随查询时间和数据源变化。
# 这个项目展示了什么
- 流式对话与执行过程。 页面实时接收回答和工具调用事件,可以展开查看执行过程、工具输入与输出。
- Skills 驱动任务。 项目内置
byted-stock-monitor技能,Agent 可以读取技能说明并调用脚本查询行情。替换或增加 Skill 后,可以用于其他业务场景。 - 会话与工作区持久化。 保存聊天历史、Agent 上下文、工作区文件和附件,支持刷新页面、重启应用后继续使用。
- Docker 沙箱。
container模块将命令和文件操作放在容器中执行,页面提供容器状态查看入口。 - 文件交付。 用户要求生成文件时,Agent 可以调用
deliver_artifact,在回答中提供附件下载入口。 - LiteFlow 编排。 Agent 是流程中的一个组件,可以与普通 Java 组件一起完成业务处理。
- Jev 智能选择。 独立客服示例通过
JevSwitchComponent选择服务组件,展示SWITCH路由、置信度阈值与人工兜底。
示例的核心流程定义在 agent/flow.el.xml 中:
<chain name="skillStreamChain">
THEN(prepare, skillStreamAgent, recordReply);
</chain>
其中,prepare 读取并打印请求,skillStreamAgent 继承 HarnessAgentComponent,负责模型调用、技能使用和工具执行,recordReply 读取回答并写入流程输出。你可以从这条链开始,把前后两个普通组件替换成自己的参数准备、结果入库或业务通知逻辑。
# 选择一个组合
| 模块 | 命令运行位置 | 存储 | 端口 |
|---|---|---|---|
liteflow-agent-web-local-json | 本机 | JSON | 8905 |
liteflow-agent-web-local-redis | 本机 | Redis | 8904 |
liteflow-agent-web-local-mysql | 本机 | MySQL | 8903 |
liteflow-agent-web-container-json | Docker 沙箱 | JSON | 8902 |
liteflow-agent-web-container-redis | Docker 沙箱 | Redis | 8901 |
liteflow-agent-web-container-mysql | Docker 沙箱 | MySQL | 8900 |
liteflow-agent-jev | 不使用命令工具 | 无需持久化存储 | 8906 |
六个 web-* 示例覆盖流式对话、聊天历史、Skills、工作区文件和附件下载。container 表示 Agent 命令使用 Docker 沙箱;JSON/Redis/MySQL 则表示数据如何保存,两者独立选择。Jev 示例独立演示语义分流,不需要配置会话存储或 Docker。
# 获取项目与配置模型
先准备 JDK 17 和 Maven,再获取示例代码:
git clone https://github.com/bryan31/liteflow-agent-example.git
cd liteflow-agent-example
Web 聊天示例默认使用 DeepSeek,可通过环境变量配置模型凭证;Jev 示例使用下文的独立 JEV_API_KEY:
export DEEPSEEK_API_KEY='填写你的 DeepSeek API Key'
也可以在所选模块的 src/main/resources/application-local.yml 中配置模型,具体格式见对应模块的 README。该文件已被项目的 .gitignore 排除。
# 最少依赖的本地 JSON 示例
在示例仓库根目录执行:
mvn -pl liteflow-agent-web-local-json spring-boot:run
启动后访问 http://localhost:8905 (opens new window)。无需数据库或 Docker。示例已开启本地命令执行并配置工作目录;需要运行技能脚本时,确认应用环境中有对应解释器和依赖。
可以提问:“生成一份示例销售数据 CSV,包含商品、数量和金额,并交付文件。”模型调用 deliver_artifact 后,页面会展示下载入口。刷新页面、重启应用后,可以验证聊天历史与附件是否保留。
# 运行截图中的 MySQL 容器示例
这个组合需要 Docker、MySQL 和 liteflow-agent-sandbox:node22 沙箱镜像。先在 LiteFlow 源码仓库 (opens new window)根目录构建镜像:
./liteflow-agent/docker/sandbox/build.sh
完成前面的模型配置后,在示例仓库根目录启动 MySQL 和应用:
docker compose -f liteflow-agent-web-container-mysql/docker-compose.yml up -d --wait
mvn -pl liteflow-agent-web-container-mysql spring-boot:run
访问 http://localhost:8900 (opens new window),新建会话并输入“上周哪个板块表现比较好”。等待回答完成后,点击右上角的“容器”入口,便可查看状态弹窗。展开回答上方的执行过程,还能查看这次查询使用了哪些工具。
MySQL 连接配置位于该模块的 src/main/resources/application.yml,默认与 Docker Compose 一致。如果连接已有 MySQL,调整连接配置即可。
该示例使用 SESSION_IDLE 生命周期,同一会话连续对话会复用容器,空闲 10 分钟后回收。聊天记录和工作区快照保存在 MySQL 中,容器回收后可在后续调用中恢复工作区文件。镜像、快照与容器复用的详细说明见 Docker 沙箱。
完整配置与 API 说明见 MySQL 容器模块 README (opens new window)。
# Jev 客服分流示例
liteflow-agent-jev (opens new window) 展示如何使用 liteflow-agent-jev 模块理解客户诉求,再由 LiteFlow 执行对应组件。Jev 的模型定位与优势见 Jev 模型与模块介绍,完整运行步骤和离线测试见客服演示与测试。

页面左侧可以输入客户问题,或选择 14 条前端预设消息;右侧展示实际执行分支、原始置信度、各选项概率、执行路径和组件回复。支持退款、换货、物流、发票、投诉、咨询 6 类服务,无法匹配或置信度不足时进入人工协助。翻页还可切换到“是非判断”页:输入判断标准与判断内容,由 Jev 布尔判断组件驱动 IF 分支,展示“是”的概率、阈值与执行路径。
截图中,模型置信度 85% 与换货选项概率 87% 来自不同字段;当前阈值 60% 比较的是置信度。处理时间 328 ms 包含 Jev 网络调用和 LiteFlow 流程执行,端到端耗时 339 ms 还包含浏览器与示例服务之间的请求开销。截图是一条请求的运行结果,不代表准确率或延迟保证。
在示例仓库根目录执行:
export JEV_API_KEY='填写你的 TypeSafe API Key'
mvn -pl liteflow-agent-jev -am clean package -DskipTests
mvn -pl liteflow-agent-jev spring-boot:run
打开 http://localhost:8906/ (opens new window),选择预设问题后点击“开始分流”。也可以输入带否定、意图变化或多个诉求的消息,观察候选概率与最终分支。
默认 provider=typesafe,基础地址为 https://api.typesafe.ai/v1,模型为 jev-1.13.0。通过 OpenRouter 调用时,将 JEV_API_KEY 设为 OpenRouter 的凭据,并使用:
mvn -pl liteflow-agent-jev spring-boot:run -Dspring-boot.run.arguments=--liteflow.agent.jev.provider=openrouter
此时默认基础地址为 https://openrouter.ai/api/alpha,模型为 typesafe/jev-1.13,请求 /decisions。通过 liteflow.agent.jev.base-url、model、timeout 和 min-confidence 配置覆盖连接与分流参数;已显式填写的地址与模型需随 provider 一并检查,完整配置见 Jev 依赖与配置。该示例不需要 DeepSeek Key、数据库或 Docker,也不会执行实际退款或创建外部工单。
流程使用现有选择语法:
<chain name="support">
SWITCH(supportRouter).to(refund, exchange, logistics, invoice, complaint, consult).DEFAULT(manual);
</chain>
选项及判断说明直接定义在 SupportRouter.choices() 中;例子、展示名称和缩写维护在前端 scenarios.mjs。后端 /api/support/options 只返回选项和运行参数,模型凭据留在服务端。
这个模块用于交互演示和真实接口测试。框架自动化测试则统一放在 LiteFlow 源码仓库的 liteflow-testcase-el/liteflow-testcase-el-agent-jev 中,覆盖 HTTP 协议、路由、降级、异常和超时,不需要真实 API Key。
# 依赖尚未在 Maven 仓库中可用时
先在 LiteFlow 源码仓库安装对应模块:
mvn install -pl liteflow-agent/liteflow-agent-core,liteflow-agent/liteflow-agent-openai,liteflow-agent/liteflow-agent-jev,liteflow-agent/liteflow-agent-mysql,liteflow-agent/liteflow-agent-redis,liteflow-spring-boot4-starter -am -DskipTests
再回到示例仓库运行 mvn clean package。已有同版本旧 JAR 时,也需要重新安装本次源码构建的依赖。
# 从示例接入自己的业务
客服分流场景可从 SupportRouter 开始,调整候选 ID 与判断边界,并把对应服务组件替换为真实业务逻辑。预设问题在前端独立维护,无需为修改例子调整后端 Java 代码。
建议先保留现有聊天界面,替换 SkillStreamAgentCmp 中的模型、系统提示词和业务技能,再按需要调整 skillStreamChain。会话、工作区和存储配置可参考会话存储、工作区与 Skills 技能系统。
示例中的下载接口和附件存储适配代码可作为接入参考;单独引入 Agent 模块不会自动生成 Web 聊天界面或附件下载 API。当前 Web 示例使用配置中的默认用户,接入多用户业务时,应由服务端登录身份确定用户和会话归属。



