4.6 Token 预算与上下文动态管理
在有限的上下文窗口内运行长时任务,需要对 Token 使用进行精细管理。本节介绍 Token 预算的组成、动态管理策略,以及三级预算控制体系。
4.6.1 Token 预算的关键概念
在 LLM 智能体系统中,每个 API 调用都有 Token 成本和延迟成本。在有限的上下文窗口内,需要精细的 Token 预算管理,确保:
不超过上下文限制:防止 API 调用失败
保持可用余额:为推理输出预留空间
最大化有效上下文:在有限 Token 内承载最多有用信息
支持长对话:通过动态压缩和历史管理支持跨越多轮的对话
Token 预算分配结构:
图 4-6:Token 预算分配图
Token 预算的组成
Token 预算的详细构成情况如下所示:
总 Token 预算
按模型配置
模型上下文窗口,实际值随模型和账号权限变化
系统提示词
~500
系统级指令
消息历史
~50,000
上下文消息
工具 Schema
~5,000
工具定义
用户输入
~2,000
当前查询
可用预留
~142,500
总计
推理预留
100,000
思考过程
实际可用
~42,500
可用输出空间
Token 计数的准确性
使用 Token 计数器精确追踪 Token 使用情况:
4.6.2 Token 预算管理策略
1. 前向估计
在发送请求前估计可能的 Token 消耗:
2. 自动压缩
当 Token 使用接近阈值时,自动压缩历史:
3. 历史片段化
选择性地移除消息,保留最重要的部分:
4.6.3 Claude Code 的模型窗口阈值警告
Claude Code 在构建消息时采用分层的 Token 预算管理。注意:Anthropic 官方上下文窗口说明中既有 200K 级模型,也有 Claude Opus 5、Sonnet 5、Fable 5 与 Opus 4.8/4.7/4.6、Sonnet 4.6 等 1M 级模型(1M 是这些模型的默认窗口,不需要 beta header);下面的 200K 是保守示例,不应硬编码为所有 Claude 或 Claude Code 场景的上限。
4.6.4 OpenClaw 启发的压缩前记忆刷写
OpenClaw 的做法是在正式压缩前,先让智能体把关键事实写入长期记忆,再折叠历史。注意:官方 Compaction 文档记录的触发条件是“会话接近上下文上限,或模型返回上下文溢出错误”,并说明“压缩前 OpenClaw 会自动提醒智能体把重要笔记写入记忆文件”;会话管理与压缩参考进一步给出“当前上下文超过模型窗口减去内置预留余量(留给提示词与下一次模型输出)”。两者都是绝对 Token 口径,官方并未给出百分比阈值。下面示例中的 0.7 是本书为便于演示采用的简化默认值:
4.6.5 三级预算控制体系
生产级系统仅靠单次请求的 Token 预算管理远远不够。成熟的 Harness 需要建立 三级预算控制体系,从单次调用到全局账期逐层约束:
Per-Request
单次 API 调用
4k-100k output tokens
截断输出、降级模型
Per-Task
一个完整任务(可能包含多轮循环)
50-200 次 API 调用 / 累计 1M tokens
强制总结、终止循环
Per-Day/Month
账期级全局预算
$50/天、$1000/月
排队、降级、拒绝服务
三级预算控制与前面介绍的多模型路由(详见 10.3.4 节)协同使用效果更佳:当账期预算紧张时,路由器可以自动将更多请求降级到低成本模型,在不中断服务的前提下控制支出。
4.6.6 本节小结
Token 预算管理是长时智能体任务的关键:
前向估计 在发送请求前预估 Token 使用,防止超限
自动压缩 在 Token 使用接近阈值时触发,保留最重要的信息
历史片段化 选择性保留消息,平衡信息完整性与 Token 成本
Claude Code 的模型窗口阈值警告 提前感知预算压力,主动调整策略
压缩前的记忆刷写 先把关键事实落盘再折叠历史,降低有损压缩的风险;触发线应按绝对预留余量计算,本书示例中的 70% 只是简化默认值
三级预算控制 从单次请求到账期级逐层约束,防止成本失控
这些策略相互配合,使得智能体能够在有限的上下文窗口内处理长时任务,同时将成本控制在可预测的范围内。
最后更新于
