已关闭
[Feature]: ReActAgent 支持单次运行总时间预算与临近截止收尾 #190
xiaoming创建于  4 天前关闭于  3 天前
xiaoming成员
4 天前 创建

Paired: GitHub #361 ↔ GitCode #190

背景描述
当前 upstream/develop 的 ReActAgent 可通过 maxIterations 限制迭代次数,但没有限制一次 invoke 的总运行时间。ModelClientConfig.timeout 和 ModelInvokeOptions.timeout 已提供模型请求的默认及逐次超时配置;模型请求重试、流式响应读取和工具执行仍可能使整次 ReAct 运行超过调用方预期。消费者只能在框架外设置任务级超时,难以在截止前生成阶段性结论,也无法获知本次运行的剩余预算。

本特性面向单次 ReAct 调用增加可选的墙钟总预算和临近截止收尾能力。未配置总预算时保持既有行为;不改变已有模型请求超时配置的含义。

设计思路

  1. 在 ReActAgentConfig 或单次调用参数中提供可选的总时间预算,并在每次 invoke 开始时独立计算截止时间。截止状态不得存放在可被不同会话共享的 agent 实例状态中;明确中断、恢复调用时预算是否重置。
  2. 在每次迭代以及模型、重试、流式读取和工具派发前检查剩余时间。单次模型请求与工具等待使用其既有时限和剩余预算中的较小值;重试等待、流式消费和降级调用也不得重新获得完整预算。到期后不再派发新工作。
  3. 提供可配置的临近截止阈值。触发时仅对本次运行向模型发出一次收尾提示,使模型有机会利用已有信息形成结论;提示不保证一定生成终稿,也不应永久污染后续会话。
  4. 到期时提供可识别的终止原因及调用方可见的错误/结果语义,并明确同步与流式调用的一致性。保存已产生的上下文和输出;对执行中工具采用尽力取消,并明确无法强制停止不配合取消的工具或撤销其外部副作用。
  5. 未配置总预算时不增加提示消息、不改变原有超时、重试、工具执行及返回行为。同一 agent 实例的后续调用仍可正常运行。

测试设计与测试计划

  1. 无总预算对照:验证同步和流式调用的消息、超时参数、重试及终止行为与现有实现一致。
  2. 预算与提醒:验证运行级预算按每次 invoke 隔离;临近截止提示最多一次,模型可自然完成;到期后不再开始新迭代或新工具调用。
  3. 模型调用:验证单次请求采用既有请求时限与剩余预算的较小值;覆盖请求重试等待、流式持续读取、空流重试及非流式降级,确认不会因重试重新获得完整预算。
  4. 工具执行:验证工具等待按剩余预算缩短;覆盖并行工具、工具超时及无法响应取消的工具,确认对外承诺与实际取消能力一致。
  5. 生命周期:验证截止终止原因、同步和流式输出、已有上下文可读性,以及工具中断/恢复、同一 agent 的重复调用和不同会话并发调用不会串扰。
likedislike
OopenJiuwen-bot成员
4 天前 添加了label:sig/sig-agent-core-java
openJiuwen-bot成员
4 天前 评论:

欢迎来到 openJiuwen 社区

Hey @xiaoming-2026 , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

联系指引

有疑问可以联系 SIG: sig-agent-core-java ,
维护者是: @shenwei21, @tianmingyong ,
审核者是: @foreach1991, @gcw_xJSJ32Ge, @jeffrey_qiao, @kangquansheng_makeIT, @xiongjie_makeit .

likedislike
Oopenjiuwen-sync成员
4 天前 修改了issue 的描述
xiaoming成员
3 天前 评论:

经评估,#190 的“单次 ReAct 运行墙钟总预算、剩余时间向下传播、临近截止收尾”需求已补充到 #172 的设计和测试建议中,作为“轮次预算 + 时间预算”的统一主循环预算能力推进。

#172 同时约束了与 #171 的模型阶段超时分层衔接,以及模型重试、流式读取、工具执行、rail forceFinish、同步/流式结果和并发会话隔离等边界。因此 #190 不再作为独立 feature issue 维护,后续请在 #172 中继续讨论和验收。本评论用于说明关闭原因。

likedislike
Xxiaoming成员
3 天前 关闭了 issue
Xxiaoming成员
3 天前 issue状态由 TODO 改变为 DONE