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

    • What' s New In LiteFlow v2.15.3?
  • 历史版本

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

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

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

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

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

    • What' s New In LiteFlow v2.15.3?
  • 历史版本

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

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

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

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

    • 📦 引入依赖
    • ⚙️ 基本配置
    • 🧩 编写 Agent 组件
    • 📤 获取 Agent 结果
    • 🌊 流式输出
  • 🏪 模型配置
  • 会话与记忆

    • 💬 会话标识
    • 🧠 记忆持久化
    • 🔄 多轮对话
  • 工作空间与工具

    • 📂 Workspace 配置
    • 📄 文件工具
    • 🐚 Shell 工具
    • 🔧 自定义工具
  • 🎯 Skills 技能系统
  • 高级编排

    • 🔀 条件路由与并行调用
    • 🤝 多 Agent 协作
  • 运行机制与可观测

    • 🔁 迭代次数与 Summary
      • 什么是一次迭代
      • maxIterations 的作用
        • 全局配置
        • 单组件覆写
      • 达到上限:Summary 收尾
        • 在流式事件里观察 Summary
    • 📋 Re-Act 事件日志
    • 🪝 自定义 Hook
  • 📖 扩展点速查
  • ⚡ 配置速查
  • 🛡️ 安全建议
  • 🔍 故障排查
  • 🎬 演示项目
  • AI Agent编排
  • 运行机制与可观测
铂赛东
2026-05-23
目录

🔁 迭代次数与 Summary

# 什么是一次迭代

Re-Act Agent 的核心是一个"推理 → 行动 → 观察"的循环。每一轮循环就是一次迭代(iteration):

  1. 模型推理(reasoning),决定要不要调用工具
  2. 如果决定调用工具,就执行工具(acting)并拿到结果(observation)
  3. 把结果喂回模型,进入下一轮迭代

当模型在某一轮推理中不再请求调用工具、直接给出最终答复时,循环结束,本轮 process() 返回。

# maxIterations 的作用

为了避免模型陷入"反复调用工具却始终得不出结论"的死循环,框架给每个 Agent 设置了一个最大迭代次数。当循环达到这个上限仍未得出最终答复时,会强制收尾(见下文 Summary)。

迭代上限的取值规则是"组件覆写优先,否则用全局默认":

int iters = maxIterations() > 0 ? maxIterations() : 全局 max-iterations;
来源 配置方式 默认值
全局默认 liteflow.agent.defaults.max-iterations 50
单组件覆写 覆写 maxIterations() 返回正数 -1(表示不覆盖,沿用全局)

# 全局配置

liteflow.agent.defaults.max-iterations=50

# 单组件覆写

@Override
protected int maxIterations() {
    return 10; // 这个 Agent 最多迭代 10 轮
}

取值建议

  • 设得太小:复杂任务可能还没完成就被强制收尾,得到一个不完整的总结
  • 设得太大:模型一旦失控,会持续消耗 token 和工具调用,成本和时延都不可控

建议根据 Agent 的实际职责评估:纯问答类 Agent 几轮就够;需要多步查询、读写文件、调用多个工具的复杂 Agent,可以适当调高。

# 达到上限:Summary 收尾

当 Re-Act 循环达到 maxIterations 仍未得出最终答复时,底层 ReActAgent 会触发一次 Summary(总结):把目前为止的推理过程和工具结果归纳成一个收尾回复,作为本轮的最终结果。

也就是说,即使迭代到达上限,handleReply(reply) 仍然会被调用,只不过 reply 是一个总结性的回复,而不是模型"自然结束"得出的答案。

# 在流式事件里观察 Summary

如果通过 ExecuteOption.eventListener(...) 注册了监听器,Summary 过程会以独立的事件类型推送出来:

FlowEvent#getType() 含义
agent.summary 达到最大迭代次数后的总结过程或最终 summary
.eventListener(event -> {
    if ("agent.summary".equals(event.getType())) {
        // 说明这一轮是被迭代上限强制收尾的,可据此打点告警
    }
})

事件类型的完整列表见 流式输出;如果想在更底层拦截 Summary 的生成过程,可以使用 PRE_SUMMARY / POST_SUMMARY 等 Hook 事件,详见 自定义 Hook。

收到 agent.summary 往往是个信号

正常完成的 Agent 不应该频繁触发 Summary。如果线上经常出现 agent.summary,通常意味着:

  • maxIterations 设得偏低,任务做不完就被截断
  • 系统提示词或工具设计有问题,导致模型反复试探、收敛不了

建议把它当作一个需要关注的运行指标。

帮助我们改善此文档 (opens new window)
上次更新: 2026/06/02, 00:29:19
🤝 多 Agent 协作
📋 Re-Act 事件日志

← 🤝 多 Agent 协作 📋 Re-Act 事件日志→

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