AI 编程与智能体工程 · 第 20 期 · 第二季收官

窗口满了先丢什么·预算分配与驱逐顺序

budget allocation & eviction order

窗口满了从头删?错——系统提示和 few-shot 最贵也最该留,对话中段最该丢。预算按"信息密度×不可重建性"分配,驱逐按"可重建性"排序:能查回的先丢,查不回的留到最后。
⏱ 约 9 分钟 🎯 Agent 跑到窗口爆、不知道丢什么的工程师 📦 源:context-engineering §2

01不是从头删,是按可重建性删

窗口满了,最直觉的做法是删最旧的消息——但这常常删错。该删的不是"最旧",是"最容易重新拿到"的。

上下文里每段信息都有两个属性:信息密度(单位 token 含多少有用信息)和可重建性(丢了能不能从别处再拿到)。驱逐优先级按可重建性排序:

该删的不是最旧,
是最容易重新拿到的。
灏天文库 · AI 编程与智能体工程 P.60

02驱逐优先级排序:拖成分排顺序

下面是窗口里的 6 个成分。点它们按"该先丢→该最后留"排序(1 最该丢,6 最该留)。排完提交看对没。

🗑️ 驱逐优先级排序
点成分按"先丢→后丢"排序,1 号最先丢、6 号最后留。
← 排好顺序后提交

03预算分配:不是平均分

窗口不是平均分给各成分的——按"信息密度×不可重建性"加权分配。一个 12 万 token 窗口的典型预算:

💰 上下文预算分配(典型)
12 万 token 窗口的预算分配
系统提示
5%
few-shot 示例
8%
项目卡片/约束
4%
检索知识(RAG)
30%
对话历史
25%
工具返回
15%
输出预留
13%

注意工具返回只给 15%——它最容易重新拿到(重跑工具),所以预算最少但优先驱逐。预算少 + 优先丢 = 给更该留的腾空间。

预算少 + 优先丢,
给更该留的腾空间。
灏天文库 · AI 编程与智能体工程 P.61

04带走这套清单

✅ 窗口预算与驱逐 6 条可执行规则

  1. 驱逐按"可重建性"排序,不按"新旧"排序:能重拿的先丢,查不回的留到最后。
  2. 系统提示、few-shot、项目约束永远留——丢了 Agent 就忘了自己是谁、忘了格式、忘了目标。
  3. 工具返回的大段原始输出优先丢,需要时重跑工具即可拿回。
  4. 对话中段先摘要再丢,保留结论不留过程。
  5. 预算按"信息密度×不可重建性"加权分配,别平均分,工具返回给最少。
  6. 留 10~15% 输出预留,别把窗口塞满,否则模型生成时被迫截断。
窗口满了从头删,
是把目标也删了。
灏天文库 · AI 编程与智能体工程 P.62