name: context-optimization description: 应用优化技术扩展有效上下文容量。当上下文限制制约智能体性能、需要优化成本或延迟、或实施长期运行的智能体系统时使用。
上下文优化技术
上下文优化通过战略性压缩、掩蔽、缓存和分区,扩展有限上下文窗口的有效容量。目标不是神奇地增大上下文窗口,而是更好地利用可用容量。有效的优化可以在不需要更大模型或更长上下文的情况下,将有效上下文容量提高两到三倍。
何时激活
在以下情况激活此技能:
- 上下文限制制约任务复杂性
- 为降低成本进行优化(更少的令牌 = 更低的成本)
- 减少长对话的延迟
- 实施长期运行的智能体系统
- 需要处理更大的文档或对话
- 构建大规模生产系统
核心概念
上下文优化主要通过四种策略扩展有效容量:压缩(在接近限制时总结上下文)、观察掩蔽(用引用替换冗长的输出)、KV缓存优化(重用缓存的计算结果)和上下文分区(将工作拆分到隔离的上下文中)。
关键洞察是上下文质量比数量更重要。优化在减少噪音的同时保留信号。艺术在于选择保留什么与丢弃什么,以及何时应用每种技术。
详细主题
压缩策略
什么是压缩 压缩是在接近上下文限制时总结上下文内容,然后用摘要重新初始化新上下文窗口的做法。这以高保真方式提炼上下文窗口的内容,使智能体能够以最小的性能下降继续工作。
压缩通常是上下文优化的首要手段。艺术在于选择保留什么与丢弃什么。
压缩实现 压缩通过识别可压缩的部分、生成捕获要点的摘要、并用摘要替换完整内容来工作。压缩的优先级依次为:工具输出(用摘要替换)、旧的对话轮次(总结早期对话)、检索到的文档(如果存在较新版本则总结),并且永不压缩系统提示。
摘要生成 有效的摘要根据消息类型保留不同的元素:
工具输出:保留关键发现、指标和结论。移除冗长的原始输出。
对话轮次:保留关键决策、承诺和上下文转换。移除填充内容和来回讨论。
检索到的文档:保留关键事实和主张。移除支持性证据和详细阐述。
观察掩蔽
观察问题 工具输出可能占智能体轨迹中令牌使用量的80%以上。其中大部分是冗长的输出,其目的已经达到。一旦智能体使用工具输出来做出决策,保留完整输出提供的价值递减,同时消耗大量上下文。
观察掩蔽用紧凑的引用替换冗长的工具输出。信息在需要时仍然可访问,但不会持续消耗上下文。
掩蔽策略选择 并非所有观察都应同等掩蔽:
永不掩蔽:对当前任务至关重要的观察、最近一轮的观察、用于主动推理的观察。
考虑掩蔽:3轮之前的观察、可以提取要点的冗长输出、目的已实现的观察。
始终掩蔽:重复的输出、样板文件头/尾、对话中已总结的输出。
KV缓存优化
理解KV缓存 KV缓存存储推理过程中计算的键和值张量,随序列长度线性增长。跨共享相同前缀的请求缓存KV缓存可以避免重新计算。
前缀缓存通过基于哈希的块匹配,在具有相同前缀的请求间重用KV块。这极大地降低了具有公共前缀(如系统提示)的请求的成本和延迟。
缓存优化模式 通过重新排序上下文元素以最大化缓存命中率来优化缓存。将稳定元素放在前面(系统提示、工具定义),然后是频繁重用的元素,最后是唯一元素。
设计提示以最大化缓存稳定性:避免动态内容(如时间戳)、使用一致的格式、保持跨会话的结构稳定。
上下文分区
子智能体分区 最激进的上下文优化形式是将工作分区到具有隔离上下文的子智能体中。每个子智能体在专注于其子任务的干净上下文中运行,无需携带来自其他子任务的累积上下文。
这种方法实现了关注点分离——详细的搜索上下文保留在子智能体内,而协调器专注于综合和分析。
结果聚合 通过验证所有分区已完成、合并兼容的结果、以及如果仍然太大则进行总结,来聚合来自分区子任务的结果。
预算管理
上下文预算分配 设计明确的上下文预算。将令牌分配给类别:系统提示、工具定义、检索到的文档、消息历史记录和保留缓冲区。监控使用情况与预算,并在接近限制时触发优化。
基于触发的优化 监控优化触发信号:令牌利用率超过80%、性能下降指标。根据上下文构成应用适当的优化技术。
实践指导
优化决策框架
何时优化:
- 上下文利用率超过70%
- 随着对话延长,响应质量下降
- 由于长上下文导致成本增加
- 延迟随对话长度增加
应用什么:
- 工具输出占主导:观察掩蔽
- 检索到的文档占主导:总结或分区
- 消息历史记录占主导:带总结的压缩
- 多个组件:组合策略
性能考量
压缩应实现50-70%的令牌减少,且质量下降小于5%。掩蔽应在被掩蔽的观察中实现60-80%的减少。缓存优化对于稳定工作负载应实现70%以上的命中率。
根据测量的有效性监控并迭代优化策略。
示例
示例1:压缩触发
if context_tokens / context_limit > 0.8:
context = compact_context(context)
示例2:观察掩蔽
if len(observation) > max_length:
ref_id = store_observation(observation)
return f"[Obs:{ref_id} 已省略。要点:{extract_key(observation)}]"
示例3:缓存友好排序
# 稳定内容在前
context = [system_prompt, tool_definitions] # 可缓存
context += [reused_templates] # 可重用
context += [unique_content] # 唯一
指南
- 优化前先测量——了解当前状态
- 可能时先应用压缩再掩蔽
- 设计具有一致提示的缓存稳定性
- 在上下文出现问题之前进行分区
- 随时间监控优化有效性
- 平衡令牌节省与质量保留
- 在生产规模测试优化
- 为边缘情况实施优雅降级
集成
此技能建立在上下文基础和上下文退化之上。它连接到:
- 多智能体模式 - 分区作为隔离
- 评估 - 测量优化有效性
- 记忆系统 - 将上下文卸载到记忆
参考文献
内部参考:
- 优化技术参考 - 详细技术参考
本集合中的相关技能:
- 上下文基础 - 上下文基础知识
- 上下文退化 - 理解何时优化
- 评估 - 测量优化
外部资源:
- 关于上下文窗口限制的研究
- KV缓存优化技术
- 生产工程指南
技能元数据
创建日期: 2025-12-20 最后更新: 2025-12-20 作者: 上下文工程贡献者智能体技能 版本: 1.0.0