
关于
上下文优化通过策略性压缩、掩码、缓存和分区扩展有限上下文窗口的有效容量。目标不是神奇地增加上下文窗口,而是更好地利用可用容量。
name: context-optimization description: "上下文优化通过策略性压缩、遮蔽、缓存和分区来扩展有限上下文窗口的有效容量。目标不是神奇地增加上下文窗口,而是更好地利用可用容量。" risk: unknown source: community
上下文优化技术
上下文优化通过策略性压缩、遮蔽、缓存和分区来扩展有限上下文窗口的有效容量。目标不是神奇地增加上下文窗口,而是更好地利用可用容量。有效的优化可以在不需要更大模型或更长上下文的情况下,将有效上下文容量提升两到三倍。
何时使用
在以下情况下激活此技能:
- 上下文限制制约了任务复杂度
- 优化成本(更少的 token = 更低的成本)
- 减少长对话的延迟
- 实现长时间运行的 Agent 系统
- 需要处理更大的文档或对话
- 构建大规模生产系统
核心概念
上下文优化通过四种主要策略扩展有效容量:压缩(在接近限制时总结上下文)、观察遮蔽(用引用替换冗长输出)、KV-cache 优化(重用缓存的计算)和上下文分区(将工作分配到隔离的上下文中)。
关键洞察是上下文质量比数量更重要。优化在减少噪音的同时保留信号。技巧在于选择保留什么与丢弃什么,以及何时应用每种技术。
详细主题
压缩策略
什么是压缩 压缩是在接近限制时总结上下文内容,然后用摘要初始化新上下文窗口的做法。这以高保真方式提炼上下文窗口的内容,使 Agent 能够以最小的性能下降继续工作。
压缩通常是上下文优化的第一个杠杆。技巧在于选择保留什么与丢弃什么。
压缩实现 压缩的工作方式是识别可以压缩的部分,生成捕获要点的摘要,并用摘要替换完整内容。压缩优先级依次为:工具输出(用摘要替换)、旧对话轮次(总结早期对话)、检索的文档(如果有最新版本则总结),永远不要压缩系统提示。
摘要生成 有效的摘要根据消息类型保留不同的元素:
工具输出:保留关键发现、指标和结论。移除冗长的原始输出。
对话轮次:保留关键决策、承诺和上下文转换。移除填充内容和来回对话。
检索的文档:保留关键事实和主张。移除支持性证据和详细阐述。
观察遮蔽
观察问题 工具输出可能占 Agent 轨迹中 token 使用量的 80% 以上。其中大部分是已经完成其目的的冗长输出。一旦 Agent 使用工具输出做出决策,保留完整输出的价值递减,同时持续消耗大量上下文。
观察遮蔽用紧凑的引用替换冗长的工具输出。信息在需要时仍然可访问,但不会持续消耗上下文。
遮蔽策略选择 并非所有观察都应该被同等遮蔽:
永远不遮蔽:对当前任务至关重要的观察、最近一轮的观察、在活跃推理中使用的观察。
考虑遮蔽:3 轮以上之前的观察、可以提取要点的冗长输出、目的已经达成的观察。
始终遮蔽:重复的输出、样板头部/尾部、已在对话中总结的输出。
KV-Cache 优化
理解 KV-Cache KV-cache 存储推理过程中计算的 Key 和 Value 张量,随序列长度线性增长。在共享相同前缀的请求之间缓存 KV-cache 可以避免重复计算。
前缀缓存使用基于哈希的块匹配在具有相同前缀的请求之间重用 KV 块。这大幅降低了具有共同前缀(如系统提示)的请求的成本和延迟。
缓存优化模式 通过重新排列上下文元素来最大化缓存命中率进行优化。将稳定元素放在前面(系统提示、工具定义),然后是频繁重用的元素,最后是唯一元素。
设计提示以最大化缓存稳定性:避免动态内容(如时间戳),使用一致的格式,保持跨会话的结构稳定。
上下文分区
子 Agent 分区 最激进的上下文优化形式是将工作分配到具有隔离上下文的子 Agent 中。每个子 Agent 在专注于其子任务的干净上下文中运行,不携带其他子任务的累积上下文。
这种方法实现了分离