Skip to content

[Feature]: agent_core 主循环运行预算与进度跟踪(轮次+时间双维度) #311

Description

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 终止优先。
  • 时间维:总预算生效且逐次执行隔离;到期后不再派发新工作;单次调用与重试等待时限按剩余预算收紧;临近截止提示仅一次且不污染后续会话;到期终止原因可识别、与取消可区分、同步流式一致、产出可读、在途工具尽力取消;两维并存互不抑制;时间到期优先于交卷轮。
  • 计划:轮次维保底与兼容铁律先行 → 进度跟踪与停滞提示 → 安全阀 → 时间维预算与到期语义 → 两维并存回归。

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