Run 预算详解

wesgine Run 预算管理的字段、预警机制与外部预算检查。


预算字段

AppRunRequest 中可设定的预算字段:

字段说明默认
MaxTurns最大轮次无限制
MaxTokens最大 Token 数无限制
TimeoutSeconds超时秒数86400(24h)
IterationBudget迭代预算跟随 MaxTurns

预算不终止 Run

INV-TERM-01:引擎不因 counter 阈值主动终止 Run。

预算字段仅作为预警参考:

达到阈值时行为
轮次到上限EventBudgetWarning → UI 提示
Token 到上限EventBudgetWarning → UI 提示
时间到上限EventBudgetWarning → UI 提示

Run 继续执行,直到自然结束或被主动中断。


BudgetCheckFn(外部预算检查)

唯一能因"预算"终止 Run 的机制:

CellSpec{
    BudgetCheckFn: func(ctx context.Context, usage BudgetUsage) BudgetDecision {
        if usage.TotalTokens > customerLimit {
            return BudgetExhausted
        }
        return BudgetOK
    },
}

返回 BudgetExhausted → Run 终止。

这是商业限制,不是引擎策略——由消费方(平台层)决定。


BudgetStatus 事件

Run 过程中持续推送 BudgetStatus:

{
  "turns": 5,
  "total_turns": 10,
  "input_tokens": 12000,
  "output_tokens": 3000,
  "elapsed_seconds": 45,
  "budget_check": "ok"
}

前端据此渲染进度条和预算指示器。


Grace Call(最后一轮宽限)

即使预算已达阈值,Run 仍有一次宽限调用:


CycleDetector 预算

CycleDetector 有自己的阈值,与 Run 预算独立:

阈值触发
ExplorationTermThreshold探索类工具循环
ActionTermThreshold操作类工具循环
IdenticalCallTermThreshold完全相同调用循环

CycleDetector 会真正终止 Run(先自愈,再 HITL)。


消费方预算实践

产品预算策略
wescode高预算(编程任务长)
wesclaw中等预算
wescraft中等预算
teleclawBudgetCheckFn(企业配额)

相关文档