Skip to content

[Feature]: ReActAgent 支持单次运行总时间预算与临近截止收尾 #361

Description

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 的重复调用和不同会话并发调用不会串扰。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions