Run Grace Call(最后一次调用机会)

wesgine Run 在预算用尽时允许模型进行一次"Grace Call",让 Agent 有机会给出最终响应而不是突然中断。


设计动机

Run 的预算(MaxTurns、MaxTokens、IterationBudget)用尽时,如果 Agent 正在工具调用循环中,直接终止会导致:


Grace Call 机制

预算到达上限后,引擎设置 _budget_grace_call = true:

while (remaining > 0 || grace_call):
    response = LLM.call(...)
    if has_tool_calls:
        execute_tools()
        remaining -= 1
    else:
        return response  // Agent 选择文字回复 = 正常退出
    
    if remaining <= 0 && !grace_call_used:
        grace_call = true   // 再给一轮
        grace_call_used = true

行为特征

场景行为
预算用尽 + Agent 文字回复正常退出,Grace Call 不触发
预算用尽 + Agent 继续 tool_callGrace Call 启动,再执行一轮
Grace Call 轮 Agent 文字回复正常退出
Grace Call 轮 Agent 仍 tool_call强制终止,发 EventDone

与 INV-TERM-01 的关系

INV-TERM-01 声明引擎不因 counter 阈值主动终止 Run。Grace Call 体现了这一哲学:


与 CycleDetector 的区别

CycleDetector 有自己独立的预算体系(ExplorationTermThreshold、ActionTermThreshold),不受 Grace Call 影响。Grace Call 只作用于 IterationBudget / MaxTurns 层面。


相关文档