现在换成了IMAX巨幕,你能同时看到刚才、现在和即将发生的事——这就是大Context Window。
但无论多大,屏幕终究有限。你不可能一次看完整部电影,除非——用
分段播放(chunking)或者智能剪辑(summarization)。
AI的"内存条"——装得下是本事,装不下是事故
凌晨4点23分,AI正在读你发的100页文档。突然它说"之前的滚动去哪了"——这就是Context Window的边界。上下文窗口是AI一次能"看见"的最大文本量,像一个固定大小的窗口,新内容进来,旧内容就得挤出。
分段播放(chunking)或者智能剪辑(summarization)。
| 模型 | Context Window | 约等于 | 适用场景 |
|---|---|---|---|
| GPT-4o-mini | 128K tokens | ~300页书 | 日常对话、简单任务 |
| GPT-4-turbo | 128K tokens | ~300页书 | 复杂分析、长文档 |
| Claude 3.5 Sonnet | 200K tokens | ~500页书 | 大规模代码、长篇报告 |
| Gemini 1.5 Pro | 1M tokens | ~2500页书 | 整本书分析、视频处理 |
| 开源模型(7B) | 4K-8K tokens | ~10-20页 | 边缘设备、快速响应 |
┌─────────────────────────────────────┐
│ System Prompt (系统提示) │ ← 固定占用
│ ~500-2000 tokens │
├─────────────────────────────────────┤
│ Conversation History (对话历史) │ ← 动态增长
│ User + Assistant messages │
│ 每轮约100-500 tokens │
├─────────────────────────────────────┤
│ Tool Definitions (工具定义) │ ← 固定占用
│ 每个工具约50-200 tokens │
├─────────────────────────────────────┤
│ Tool Results (工具返回) │ ← 最大变量!
│ 可能是几KB或几MB │
├─────────────────────────────────────┤
│ Current User Input (当前输入) │ ← 读到这就开始处理
│ 用户当前消息 │
├─────────────────────────────────────┤
│ Response Buffer (响应预留) │ ← 必须预留!
│ 给AI回复留空间(通常2000-4000) │
└─────────────────────────────────────┘
总和 = Context Window Size
🥇 Tool Results - 工具返回大数据(数据库查询、文件内容)
🥈 Conversation History - 长对话积累
🥉 System Prompt - 过长的系统设定
# IDENTITY.md 或 Agent配置
context_management:
strategy: sliding_window # 滑动窗口策略
max_history_turns: 20 # 保留最近20轮
preserve_system: true # 系统提示不裁剪
preserve_recent: 5 # 最近5轮不裁剪
summarize_old: true # 旧内容压缩成摘要
// OpenClaw 自动计算token使用
const usage = context.getTokenUsage();
// {
// system: 1200,
// history: 8500,
// tools: 3000,
// available: 23000, ← 剩余可用
// percentage: 72%
// }
if (usage.percentage > 80) {
triggerContextWarning("Context 80% full");
}
# 工具返回自动压缩
tools:
- name: search_database
result_handling:
max_size: 5000 # 超过5000 token截断
summarize: true # 生成摘要替代原文
include_summary: "找到{count}条记录,关键信息:{summary}"
# ❌ 冗长版(~2000 tokens)
你是一个专业的内容创作助手,你的任务是帮助用户创作高质量的内容。
你需要遵循以下原则:第一,内容必须准确;第二,风格必须专业...
(省略100行废话)
# ✅ 精简版(~300 tokens)
你是内容助手。准则:准确、专业、有洞见。
输出格式见下方template,严格遵循。
# 策略:早期对话摘要化
Turn 1-5: 完整保留(关键决策)
Turn 6-15: 摘要:"用户询问了X功能,我们讨论了Y方案,最终决定Z"
Turn 16+: 只保留结论
# ❌ 一次塞进所有内容
用户:帮我分析这100页的财报,然后写份总结
# ✅ 分段处理
Step 1: 读取财报目录 → 确定重点章节
Step 2: 分析重点章节(分批) → 提取关键数据
Step 3: 综合所有摘要 → 生成最终报告
# ❌ 全量加载:把整个知识库塞进Context
Context: [10MB文档内容] → 爆掉
# ✅ RAG检索:只加载相关片段
Query: "去年的营收增长"
RAG检索: → 找到3个相关段落(~500 tokens)
Context: [摘要 + 3段落] → 轻松装下
monitoring:
context_alerts:
warning_at: 70% # 70%时警告
critical_at: 85% # 85%时强制压缩
log_usage: true
metrics:
track:
- peak_context_usage
- average_turn_tokens
- truncation_events
- summarization_count
✅ 预留Response Buffer(至少2000 tokens)
✅ System Prompt控制在500 tokens以内
✅ 工具返回结果设置max_size
✅ 长对话启用自动摘要
✅ 大文件首先判断大小再决定加载方式
✅ 使用RAG处理知识库检索
✅ 配置Context监控预警
✅ 定期清理无用的历史数据