Paired: GitHub #311 ↔ GitCode #172
🚀 背景描述
要做什么:为 core 主循环新建运行预算机制,轮次与时间两个维度。两个维度同构(预算+临近收尾提示+到期终止+未配置零变化),合并为一个预算框架承接;时间维度需求来自 #190,经评审决定并入本特性。
当前现状(各分支均存在,非特定版本问题):
- 轮次维:固定 5 轮硬顶。主循环以固定 5 轮为硬上限(遗留配置默认值同为 5),达到上限无论任务是否有实质进展都直接报错返回;循环不支持任务级保底轮次声明,也不在执行中跟踪进度,任务稳步推进也不会获得额外轮次。固定硬顶是复杂任务失败的第一大来源。
- 时间维:没有墙钟总预算。一次主循环执行中,模型请求重试、流式响应读取与工具执行叠加,可使整次运行远超调用方预期;调用方只能在框架外设置任务级超时——既无法在截止前引导模型利用已有信息形成阶段性结论,也无法获知本次运行的剩余预算。
针对上述痛点引入:轮次维"保底轮次可配、有进展自动加时、停滞只提示、安全阀兜底";时间维"总预算可选、临近截止收尾、到期可识别终止"。
设计思路
按"痛点 → 机制"设计,两个维度共享同一预算框架(预算状态随单次执行隔离、提示同通道、终止同路径、事件同族):
| 痛点 |
对应机制 |
关键点 |
| 复杂任务被 5 轮砍死 |
保底轮次 |
新增"建议轮数"配置项承载保底轮次(未声明时默认 30);保底是下限不是上限,保底内主循环零干预。core 不内置复杂度估算,保底轮次只经配置面进入 |
| 有进展也被砍 |
检查点进度跟踪 |
超保底后按检查点评估进展;判定有新进展自动延长允许轮次,且检查点间隔随持续进展拉长(首个检查点 max(10, 保底),有进展时间隔 +10 轮、封顶 50 轮,均可配置);进展判定为本地启发式,不调模型 |
| 停滞白烧轮次 |
停滞提示 |
连续停滞注入"换策略/收尾"引导消息;只提示不硬砍,注入不改变任务状态,模型可继续执行;连续 3 个停滞检查点升级提示强度 |
| 失控死循环 |
安全阀 |
轮次维绝对上限 max(保底 ×2, 200);到达后注入"必须立即收尾"指令并多给一轮交卷机会,仍超限才终止;任何自动延长不得突破绝对上限 |
| 运行无总时限 |
总时间预算 |
新增配置项声明单次执行墙钟总预算;每次执行独立计算截止时间,预算状态不存于可跨会话共享的实例状态;中断后恢复视为新预算周期,重新计时 |
| 到期还在派发工作 |
到期不派发 + 时限收紧 |
每次迭代、模型调用、重试等待与工具派发前检查剩余预算,到期后不再派发新工作;单次模型请求与工具等待时限取既有时限与剩余预算的较小值,重试等待不重新获得完整预算 |
| 到期没有收尾机会 |
临近截止收尾提示 |
可配置临近阈值;触发时对本次执行注入一次(且仅一次)收尾提示,模型有机会利用已有信息形成结论;提示不保证生成终稿、不改变任务状态、不污染后续会话 |
| 到期语义不清 |
到期终止语义 |
终止原因可识别且与用户取消可区分;同步与流式调用语义一致;已产生的上下文与输出保持可读;在途工具尽力取消——不承诺强制停止不配合取消的工具,不撤销其外部副作用 |
| 存量行为兼容 |
兼容铁律 |
显式配置轮次上限的存量任务保持硬截断不变;两个维度各自独立启用,全部以新增配置项承载;未声明任何新配置的任务行为逐字节不变 |
划层与并存规则:
- overlay rail(ReplanRail、ProactiveConvergenceRail 等)的终止权优先:rail 判定终止时任务必须终止,预算机制不得以保底未用尽、自动延长或剩余时间预算为由推翻,也不抑制 rail 的停滞干预。
- autoharness 的会话级预算(时间/费用)是 CI 层 overlay,不管主循环单次执行,与本特性不重叠。
- 两维并存:独立计数/计时,任一维先触发即生效;时间到期是硬边界——若安全阀已进入收尾序列(指令已注入、交卷轮待执行)时时间预算到期,到期终止优先,交卷轮不再派发。两个维度的提示消息来源必须可区分。
涉及到的对外API
新增 YAML 配置项,只增量演进,不改既有轮数配置项的名称、默认值与语义:建议轮数(保底)、硬上限、检查点节奏参数、总时间预算、临近截止阈值。
干预通道复用既有对话引导消息注入,不发明旁路通道。单次模型请求的时限收紧经单次调用超时参数(超时分层 #171)接线,本特性消费该通道。
预算与进度事件对外可见:轮次维(保底生效/检查点评估/延长/停滞提示/安全阀触发与终止)与时间维(总预算生效/临近提示/到期终止含原因)均以事件或轨迹字段产出,供轨迹与监控消费。
测试设计与测试计划
- 轮次维:建议轮数声明与默认值兜底;保底内零干预;有进展自动延长与检查点间隔拉长;连续停滞提示注入且任务不被终止;安全阀收尾流程(指令注入、交卷轮、终止)顺序正确;存量显式上限任务硬截断不变;未声明新配置任务行为逐字节不变;rail 终止优先。
- 时间维:总预算生效且逐次执行隔离;到期后不再派发新工作;单次调用与重试等待时限按剩余预算收紧;临近截止提示仅一次且不污染后续会话;到期终止原因可识别、与取消可区分、同步流式一致、产出可读、在途工具尽力取消;两维并存互不抑制;时间到期优先于交卷轮。
- 计划:轮次维保底与兼容铁律先行 → 进度跟踪与停滞提示 → 安全阀 → 时间维预算与到期语义 → 两维并存回归。
Paired: GitHub #311 ↔ GitCode #172
🚀 背景描述
要做什么:为 core 主循环新建运行预算机制,轮次与时间两个维度。两个维度同构(预算+临近收尾提示+到期终止+未配置零变化),合并为一个预算框架承接;时间维度需求来自 #190,经评审决定并入本特性。
当前现状(各分支均存在,非特定版本问题):
针对上述痛点引入:轮次维"保底轮次可配、有进展自动加时、停滞只提示、安全阀兜底";时间维"总预算可选、临近截止收尾、到期可识别终止"。
设计思路
按"痛点 → 机制"设计,两个维度共享同一预算框架(预算状态随单次执行隔离、提示同通道、终止同路径、事件同族):
划层与并存规则:
涉及到的对外API
新增 YAML 配置项,只增量演进,不改既有轮数配置项的名称、默认值与语义:建议轮数(保底)、硬上限、检查点节奏参数、总时间预算、临近截止阈值。
干预通道复用既有对话引导消息注入,不发明旁路通道。单次模型请求的时限收紧经单次调用超时参数(超时分层 #171)接线,本特性消费该通道。
预算与进度事件对外可见:轮次维(保底生效/检查点评估/延长/停滞提示/安全阀触发与终止)与时间维(总预算生效/临近提示/到期终止含原因)均以事件或轨迹字段产出,供轨迹与监控消费。
测试设计与测试计划