关于 context-optimization
context-optimization 是帮助 Agent 系统管理有限上下文窗口的技能,面向长对话、长文档和生产级工作流。它讲解压缩、观察屏蔽、KV 缓存优化与上下文分区,并要求通过测量权衡成本、延迟和信息保留。
主要功能
- 01压缩临近上限的上下文
- 02将冗长工具输出替换为引用
- 03通过稳定前缀复用 KV 缓存
- 04将任务分配到隔离上下文
- 05设置预算并监控优化效果
适用场景
- 01减少长对话的上下文占用
- 02处理大型文档与工具输出
- 03设计长时运行的 Agent 系统
- 04评估上下文优化的质量与成本
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill context-optimization安装后在 Claude Code 中输入/context-optimization确认已加载。
详细介绍
上下文优化技术
上下文优化通过有策略地压缩、屏蔽、缓存和分区,扩展有限上下文窗口的有效容量。目标并非神奇地增大上下文窗口,而是更好地利用现有容量。效果取决于任务/工作负载,必须进行衡量;压缩可能会丢失关键信息。
适用场景
在以下情况下启用此技能:
- 上下文限制制约了任务复杂度
- 优化以降低成本(Token 越少,成本越低)
- 减少长对话的延迟
- 实现长时间运行的 Agent 系统
- 需要处理更大的文档或对话
- 大规模构建生产系统
核心概念
上下文优化通过四种主要策略扩展有效容量:压缩(接近限制时总结上下文)、观察结果屏蔽(将冗长输出替换为引用)、KV 缓存优化(复用缓存的计算结果)和上下文分区(将工作拆分到彼此隔离的上下文中)。
关键在于,上下文质量比数量更重要。优化会在减少噪声的同时保留有效信息。关键是判断保留和舍弃哪些内容,以及何时应用每种技术。
详细主题
压缩策略
什么是压缩 压缩是指在上下文接近限制时总结其内容,然后用摘要重新初始化一个新的上下文窗口。这种方法能够高保真地提炼上下文窗口中的内容,使 Agent 得以继续工作,同时将性能下降降至最低。
压缩通常是上下文优化中首先采用的手段。关键是判断保留和舍弃哪些内容。
压缩的实现 压缩的实现方式是识别可压缩的部分,生成能涵盖要点的摘要,并用摘要替换完整内容。优先压缩的内容包括工具输出(替换为摘要)、较早的轮次(总结早期对话)、检索到的文档(如果存在较新版本,则进行总结),系统提示词则绝不压缩。
摘要生成 有效的摘要会根据消息类型保留不同内容:
工具输出:保留关键发现、指标和结论。删除冗长的原始输出。
对话轮次:保留关键决策、承诺和上下文变化。删除填充内容和来回往复的对话。
检索到的文档:保留关键事实、不确定性和来源指针,确保主张仍可审计;保留当前决策所需的确切证据。
观察结果屏蔽
观察结果问题 在 Agent 执行轨迹中,工具输出可能占用 80% 以上的 Token。许多输出冗长,且已完成其用途。Agent 使用工具输出作出决策后,保留完整输出的价值会逐渐降低,却会持续占用大量上下文。
观察结果屏蔽会将冗长的工具输出替换为简洁引用。如有需要,仍可访问这些信息,但不会持续占用上下文。
选择屏蔽策略 不应以相同方式屏蔽所有观察结果:
绝不屏蔽:对当前任务至关重要的观察结果、最近一轮的观察结果、用于当前推理的观察结果。
考虑屏蔽:3 轮或更早以前的观察结果、可提取要点的冗长输出、用途已经达成的观察结果。
始终屏蔽:重复输出、模板化的页眉/页脚、对话中已经总结过的输出。
KV 缓存优化
了解 KV 缓存 KV 缓存存储推理期间计算出的 Key 和 Value 张量,并随序列长度线性增长。对于共享相同前缀的请求,在请求之间缓存 KV 缓存可以避免重复计算。
前缀缓存通过基于哈希的块匹配,在具有相同前缀的请求之间复用 KV 块。对于具有常见前缀(如系统提示词)的请求,这可以大幅降低成本和延迟。
缓存优化模式 通过重新排列上下文元素以最大限度地提高缓存命中率来优化缓存。先放置稳定元素(系统提示词、工具定义),然后放置频繁复用的元素,最后放置唯一元素。
设计提示词以最大限度地保持缓存稳定:避免使用时间戳等动态内容,采用一致的格式,并在不同会话中保持结构稳定。
上下文分区
子 Agent 分区 最彻底的上下文优化方式是将工作分配给拥有隔离上下文的子 Agent。每个子 Agent 都在干净的上下文中专注于自己的子任务,不携带其他子任务积累的上下文。
这种方法实现了关注点分离——详细的搜索上下文仍隔离在子 Agent 中,而协调者则专注于综合和分析。
结果汇总 通过验证所有分区均已完成、合并兼容的结果,并在结果仍然过大时进行摘要,来汇总分区子任务的结果。
预算管理
上下文预算分配 明确设计上下文预算。为以下类别分配 Token:系统提示词、工具定义、检索到的文档、消息历史记录和预留缓冲区。监控预算使用情况,并在接近上限时触发优化。
基于触发条件的优化 监控触发优化的信号:Token 使用率超过 80%、出现性能下降迹象,以及性能下滑。根据上下文组成应用适当的优化技术。
保留边界
摘要时不得丢弃授权信息、用户约束、未解决的阻碍、未通过的检查或来源身份。保留指向完整证据的稳定引用,并区分实际读取的文件和摘要。遵循宿主指令层级和数据保留要求;上下文优化不能改写系统/开发者规则,也不能授权额外的 Agent。提供商的提示词缓存可能会减少计费/计算工作量,但不会增加模型上下文限制。
实用指南
优化决策框架
何时优化:
- 上下文使用率超过 70%
- 对话延长时,回复质量下降
- 长上下文导致成本增加
- 对话越长,延迟越高
应用哪些方法:
- 工具输出占主导:观察屏蔽
- 检索到的文档占主导:摘要或分区
- 消息历史记录占主导:通过摘要进行压缩
- 多个部分占主导:组合使用多种策略
性能注意事项
根据测量所得的基线,为特定工作负载设定 Token、延迟和质量目标。本文件未规定固定的缩减幅度、质量损失或缓存命中率目标。
根据实测效果监控并迭代优化策略。
示例
示例 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} elided. Key: {extract_key(observation)}]"
示例 3:缓存友好型排序
# Stable content first
context = [system_prompt, tool_definitions] # Cacheable
context += [reused_templates] # Reusable
context += [unique_content] # Unique
指南
- 优化前先测量——了解当前状态
- 尽可能先进行压缩,再进行屏蔽
- 通过保持提示词一致来确保缓存稳定
- 在上下文出现问题之前进行分区
- 持续监控优化效果
- 平衡 Token 节省与质量保留
- 在生产规模下测试优化效果
- 针对边缘情况实现平稳降级
集成
此技能基于 context-fundamentals 和 context-degradation 构建,并与以下内容相关:
- multi-agent-patterns - 通过分区实现隔离
- evaluation - 衡量优化效果
- memory-systems - 将上下文转移到记忆中
参考资料
内部参考:
- Optimization Techniques Reference - 详细技术参考
此系列中的相关技能:
- context-fundamentals - 上下文基础知识
- context-degradation - 了解何时需要优化
- evaluation - 衡量优化效果
外部资源:
- 关于上下文窗口限制的研究
- KV 缓存优化技术
- 生产工程指南
技能元数据
创建时间:2025-12-20 最后更新:2025-12-20 作者:Agent Skills for Context Engineering Contributors 版本:1.0.0
局限性
- 仅当任务明确符合上述范围时,才使用此技能。
- 请勿将输出视为环境专属验证、测试或专家审查的替代品。
- 如果缺少必要的输入、权限、安全边界或成功标准,请暂停并请求澄清。