For the complete documentation index, see llms.txt. This page is also available as Markdown.

4.6 Token 预算与上下文动态管理

在有限的上下文窗口内运行长时任务,需要对 Token 使用进行精细管理。本节介绍 Token 预算的组成、动态管理策略,以及三级预算控制体系。

4.6.1 Token 预算的关键概念

在 LLM 智能体系统中,每个 API 调用都有 Token 成本和延迟成本。在有限的上下文窗口内,需要精细的 Token 预算管理,确保:

  1. 不超过上下文限制:防止 API 调用失败

  2. 保持可用余额:为推理输出预留空间

  3. 最大化有效上下文:在有限 Token 内承载最多有用信息

  4. 支持长对话:通过动态压缩和历史管理支持跨越多轮的对话

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 预算管理是长时智能体任务的关键:

  1. 前向估计 在发送请求前预估 Token 使用,防止超限

  2. 自动压缩 在 Token 使用接近阈值时触发,保留最重要的信息

  3. 历史片段化 选择性保留消息,平衡信息完整性与 Token 成本

  4. Claude Code 的模型窗口阈值警告 提前感知预算压力,主动调整策略

  5. 压缩前的记忆刷写 先把关键事实落盘再折叠历史,降低有损压缩的风险;触发线应按绝对预留余量计算,本书示例中的 70% 只是简化默认值

  6. 三级预算控制 从单次请求到账期级逐层约束,防止成本失控

这些策略相互配合,使得智能体能够在有限的上下文窗口内处理长时任务,同时将成本控制在可预测的范围内。

最后更新于