📖 功能介绍
凌晨5点41分,Claude返回了"Context length exceeded"。那一刻,我看着屏幕上堆叠的对话历史,突然明白了一个道理:Agent的记忆不是无限的黑盒,它是一个有限的窗口——窗口满了,就得清理,否则新的信息进不来。
上下文窗口优化不是删减记忆,而是提炼精华。把冗长的对话压缩成关键摘要,把无关的历史过滤掉,把重要的信息永久保留。这就像整理房间——不是把东西扔掉,而是把东西分类收纳。
主流模型Context限制
| 模型 | Context限制 | 实际可用 |
|---|---|---|
| Claude Opus 4 | 200K tokens | ~150K(预留输出) |
| GPT-4o | 128K tokens | ~100K |
| GPT-4o-mini | 128K tokens | ~100K |
| Claude Sonnet 4 | 200K tokens | ~150K |
📊 Context Window 可视化(70%已用)
⚠️ 超过80%时触发压缩策略
🚀 使用方法
1. 基础配置
🪟 Context窗口管理配置
# OpenClaw Context管理配置
context:
enabled: true
# 最大Context长度(按模型)
limits:
claude-opus-4: 150000
gpt-4o: 100000
default: 50000
# 安全阈值
thresholds:
warning: 70% # 70%时开始压缩准备
critical: 85% # 85%时强制压缩
max: 95% # 95%时拒绝新输入
# 输出预留
output_reserve: 15000 # 为输出预留15K tokens
2. 历史压缩策略
对话历史不是越多越好——太长了反而让Agent"忘记"最近的事。
# 历史压缩配置
compression:
enabled: true
# 压缩触发条件
triggers:
- type: "threshold"
value: 70%
- type: "manual"
enabled: true
# 压缩方法
methods:
# 方法1:摘要压缩
- type: "summarization"
model: "gpt-4o-mini" # 用便宜模型做摘要
keep_last: 5 # 保留最近5轮对话
# 方法2:滑动窗口
- type: "sliding_window"
window_size: 20 # 只保留最近20轮
# 方法3:重要性过滤
- type: "importance_filter"
criteria:
- contains_code
- contains_decision
- user_confirmed
# 压缩后保留
preserve:
- system_prompt
- user_preferences
- key_decisions
- active_task_context
3. Token优化技巧
✂️ Token节省策略
# Token优化配置
token_optimization:
# 系统提示词优化
system_prompt:
max_length: 2000
remove_duplicates: true
use_shortcuts: true
# 用户消息优化
user_messages:
# 移除多余空格和换行
trim_whitespace: true
# 去除重复信息
deduplicate: true
# 工具调用优化
tool_calls:
# 只保留关键结果
keep_results_only: true
# 限制工具输出长度
max_output_length: 5000
# 代码优化
code:
# 只保留关键代码段
keep_imports: false
keep_comments: false
4. 分层记忆管理
# 分层记忆配置
memory_layers:
# L0:即时记忆(当前对话)
immediate:
max_tokens: 10000
priority: "highest"
# L1:工作记忆(任务相关)
working:
max_tokens: 30000
include:
- task_context
- intermediate_results
- key_decisions
# L2:长期记忆(持久存储)
long_term:
storage: "external" # 外部存储
retrieval: "semantic_search"
on_demand: true # 按需检索
# L3:摘要记忆(压缩历史)
summary:
max_tokens: 5000
update_frequency: "per_session"
💡 最佳实践
🎯 Context优化心法:
- 即时优先:最近的信息最重要,历史可以压缩
- 关键保留:决策、代码、确认信息不能丢
- 分层存储:别把什么都塞进Context,用外部存储
- 预测性压缩:别等到超限才压缩,提前动手
实际场景示例
📝 长对话处理流程
# 100轮对话后的Context状态
对话开始:Context 5K tokens
第20轮:Context 25K tokens(触发轻度压缩)
第40轮:Context 45K tokens(摘要前20轮)
第60轮:Context 65K tokens(压缩历史,保留摘要)
第80轮:Context 75K tokens(关键信息模式激活)
第100轮:Context 80K tokens(分层记忆,外部存储关键信息)
最终状态:
- 即时记忆:10K(最近10轮)
- 摘要记忆:5K(前90轮压缩)
- 工作记忆:15K(任务相关)
- 长期记忆:外部存储,按需检索
- 总计:30K(原来可能120K+)
⚠️ 常见问题:
- 不要保留所有对话历史,会让Context爆炸
- 不要用大模型做压缩,成本会翻倍
- 不要压缩用户确认的信息,会丢失重要决策
- 不要把压缩做得太激进,会导致信息丢失
🔧 完整配置示例
# OpenClaw Context窗口优化完整配置
context_management:
# 窗口限制
limits:
default: 50000
claude-opus-4: 150000
gpt-4o: 100000
output_reserve: 15000
# 压缩策略
compression:
enabled: true
triggers:
- threshold: 70%
methods:
- summarization
- sliding_window
preserve:
- system_prompt
- key_decisions
# Token优化
optimization:
trim_whitespace: true
deduplicate: true
tool_results_limit: 5000
# 分层记忆
memory:
immediate: 10000
working: 30000
long_term:
storage: "external"
retrieval: "semantic"
# 监控
monitoring:
enabled: true
metrics:
- context_usage
- compression_count
- token_saved