已开启
[Feature]: agent_core 主循环运行预算与进度跟踪(轮次+时间双维度) #172
chenxiying创建于  20 天前
chenxiying
chenxiying成员
20 天前 创建

Paired: GitHub #311 ↔ GitCode #172

🚀 背景描述

要做什么:为 core 主循环新建运行预算机制,轮次与时间两个维度。两个维度同构(预算+临近收尾提示+到期终止+未配置零变化),合并为一个预算框架承接;时间维度需求来自 #190,经评审决定并入本特性。

当前现状(各分支均存在,非特定版本问题):

  1. 轮次维:固定 5 轮硬顶。主循环以固定 5 轮为硬上限(遗留配置默认值同为 5),达到上限无论任务是否有实质进展都直接报错返回;循环不支持任务级保底轮次声明,也不在执行中跟踪进度,任务稳步推进也不会获得额外轮次。固定硬顶是复杂任务失败的第一大来源。
  2. 时间维:没有墙钟总预算。一次主循环执行中,模型请求重试、流式响应读取与工具执行叠加,可使整次运行远超调用方预期;调用方只能在框架外设置任务级超时——既无法在截止前引导模型利用已有信息形成阶段性结论,也无法获知本次运行的剩余预算。

针对上述痛点引入:轮次维"保底轮次可配、有进展自动加时、停滞只提示、安全阀兜底";时间维"总预算可选、临近截止收尾、到期可识别终止"。

设计思路

按"痛点 → 机制"设计,两个维度共享同一预算框架(预算状态随单次执行隔离、提示同通道、终止同路径、事件同族):

痛点 对应机制 关键点
复杂任务被 5 轮砍死 保底轮次 新增"建议轮数"配置项承载保底轮次(未声明时默认 30);保底是下限不是上限,保底内主循环零干预。core 不内置复杂度估算,保底轮次只经配置面进入
有进展也被砍 检查点进度跟踪 超保底后按检查点评估进展;判定有新进展自动延长允许轮次,且检查点间隔随持续进展拉长(首个检查点 max(10, 保底),有进展时间隔 +10 轮、封顶 50 轮,均可配置);进展判定为本地启发式,不调模型
停滞白烧轮次 停滞提示 连续停滞注入"换策略/收尾"引导消息;只提示不硬砍,注入不改变任务状态,模型可继续执行;连续 3 个停滞检查点升级提示强度
失控死循环 安全阀 轮次维绝对上限 max(保底 ×2, 200);到达后注入"必须立即收尾"指令并多给一轮交卷机会,仍超限才终止;任何自动延长不得突破绝对上限
运行无总时限 总时间预算 新增配置项声明单次执行墙钟总预算;每次执行独立计算截止时间,预算状态不存于可跨会话共享的实例状态;中断后恢复视为新预算周期,重新计时
到期还在派发工作 到期不派发 + 时限收紧 每次迭代、模型调用、重试等待与工具派发前检查剩余预算,到期后不再派发新工作;单次模型请求与工具等待时限取既有时限与剩余预算的较小值,重试等待不重新获得完整预算
到期没有收尾机会 临近截止收尾提示 可配置临近阈值;触发时对本次执行注入一次(且仅一次)收尾提示,模型有机会利用已有信息形成结论;提示不保证生成终稿、不改变任务状态、不污染后续会话
到期语义不清 到期终止语义 终止原因可识别且与用户取消可区分;同步与流式调用语义一致;已产生的上下文与输出保持可读;在途工具尽力取消——不承诺强制停止不配合取消的工具,不撤销其外部副作用
存量行为兼容 兼容铁律 显式配置轮次上限的存量任务保持硬截断不变;两个维度各自独立启用,全部以新增配置项承载;未声明任何新配置的任务行为逐字节不变

划层与并存规则:

  • overlay rail(ReplanRail、ProactiveConvergenceRail 等)的终止权优先:rail 判定终止时任务必须终止,预算机制不得以保底未用尽、自动延长或剩余时间预算为由推翻,也不抑制 rail 的停滞干预。
  • autoharness 的会话级预算(时间/费用)是 CI 层 overlay,不管主循环单次执行,与本特性不重叠。
  • 两维并存:独立计数/计时,任一维先触发即生效;时间到期是硬边界——若安全阀已进入收尾序列(指令已注入、交卷轮待执行)时时间预算到期,到期终止优先,交卷轮不再派发。两个维度的提示消息来源必须可区分。

涉及到的对外API

新增 YAML 配置项,只增量演进,不改既有轮数配置项的名称、默认值与语义:建议轮数(保底)、硬上限、检查点节奏参数、总时间预算、临近截止阈值。

干预通道复用既有对话引导消息注入,不发明旁路通道。单次模型请求的时限收紧经单次调用超时参数(超时分层 #171)接线,本特性消费该通道。

预算与进度事件对外可见:轮次维(保底生效/检查点评估/延长/停滞提示/安全阀触发与终止)与时间维(总预算生效/临近提示/到期终止含原因)均以事件或轨迹字段产出,供轨迹与监控消费。

测试设计与测试计划

  • 轮次维:建议轮数声明与默认值兜底;保底内零干预;有进展自动延长与检查点间隔拉长;连续停滞提示注入且任务不被终止;安全阀收尾流程(指令注入、交卷轮、终止)顺序正确;存量显式上限任务硬截断不变;未声明新配置任务行为逐字节不变;rail 终止优先。
  • 时间维:总预算生效且逐次执行隔离;到期后不再派发新工作;单次调用与重试等待时限按剩余预算收紧;临近截止提示仅一次且不污染后续会话;到期终止原因可识别、与取消可区分、同步流式一致、产出可读、在途工具尽力取消;两维并存互不抑制;时间到期优先于交卷轮。
  • 计划:轮次维保底与兼容铁律先行 → 进度跟踪与停滞提示 → 安全阀 → 时间维预算与到期语义 → 两维并存回归。
likedislike
chenxiyingchenxiying成员
20 天前 添加了label:feature, sig/sig-agent-core-java
openJiuwen-bot成员
20 天前 评论:

欢迎来到 openJiuwen 社区

Hey @weixin_45837958 , 感谢你对社区的贡献.

机器人使用手册

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

联系指引

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

likedislike
chenxiyingchenxiying成员
20 天前 修改了issue 的描述
chenxiyingchenxiying成员
20 天前 issue类型由 Experience-Feedback 改变为 Feature
chenxiyingchenxiying成员
20 天前 将 weixin_45837958 设为负责人
chenxiyingchenxiying成员
20 天前 issue状态由 TODO 改变为 BACKLOG
chenxiyingchenxiying成员
20 天前 关联了里程碑:agent-core-java v0.1.17
chenxiyingchenxiying成员
19 天前 关联了里程碑:agnet-core-java-v0.1.14
chenxiyingchenxiying成员
19 天前 关联了里程碑:agent-core-java v0.1.17
chenxiyingchenxiying成员
17 天前 修改了issue 的描述
chenxiyingchenxiying成员
17 天前 修改了issue 的描述
Sshenwei成员
10 天前 issue优先级由 未指定 改变为 一般
xiaoming成员
5 天前 评论:

补充建议:本 issue 的“主循环弹性轮次预算”应吸收原 #190 的“单次运行墙钟总预算”需求,形成轮次与时间双预算。#190 不再作为独立 feature 继续推进。

建议在本 issue 的设计思路中增加以下约束:

  1. 为每次 ReActAgent invoke 建立独立的可选墙钟总预算和 deadline。预算状态不得存放在不同会话共享的 agent 实例状态中;未配置时间预算时保持现有行为,重复调用和并发会话互不串扰。
  2. 每轮以及模型调用、重试等待、流式响应读取和工具派发前重新计算 remaining。单次操作使用其已有阶段超时与 remaining 中的较小值;模型阶段超时语义与 #171 的连接、响应头、数据段空闲分层保持一致。重试、空流重试和非流式降级不得重新获得完整运行预算。
  3. 增加临近时间截止提示,与现有停滞提示分开计数并各自最多触发一次。时间提示用于给模型一次利用已有信息收尾的机会,不能永久污染后续会话。
  4. 时间预算耗尽后不再启动新迭代或工具调用,输出可识别的终止原因;同步和流式调用都要定义结果、上下文保存及工具尽力取消语义。无法响应取消的工具不得被承诺为可强制终止。
  5. 轮次绝对上限、时间 deadline、rail forceFinish 和模型/工具中断共同生效,任一更早满足的终止条件都应生效;自动延长轮次不得突破时间 deadline。

测试计划建议补充:固定墙钟预算下验证模型调用、重试等待、流式读取和工具执行均受 remaining 夹逼;验证临近截止提示只触发一次、到期后不再派发新工作;覆盖同步/流式、工具中断恢复、重复调用和并发会话;验证未配置时间预算时既有轮次行为逐字节兼容。

likedislike
chenxiyingchenxiying成员
5 天前 修改标题为 “[Feature]: agent_core 主循环运行预算与进度跟踪(轮次+时间双维度)”,原标题为“[Feature]: agent_core 主循环弹性轮次预算与进度跟踪”
chenxiyingchenxiying成员
5 天前 修改了issue 的描述
Oopenjiuwen-sync成员
5 天前 修改了issue 的描述