--- title: "上下文压缩(Context Compaction)" type: concept tags: [openclaw, memory, context-window] sources: [养龙虾5天血泪史] last_updated: 2026-04-23 --- ## Definition 上下文压缩是 AI Agent 在对话填满 Context Window 时,将旧消息压缩成摘要为新消息腾出空间的内置机制。是 OpenClaw 管理上下文长度的核心手段。 ## How It Works 当对话消息积累到一定量(接近 Context Window 限制)时,OpenClaw 的压缩器运行: 1. 扫描历史消息 2. 生成摘要(Summary) 3. 丢弃原始消息 4. 用摘要替代历史 ## The Problem **压缩摘要丢失细节**: - 姓名、数字、具体决定等关键信息全部消失 - 摘要抓住了要点,但丢掉了可操作的细节 - 精心设计的第 3 条消息指令和第 7 条闲聊得到相同处理 > "上下文窗口是有限的。但默认行为对一切一视同仁,这意味着你精心设计的第三条消息指令,和第七条消息的闲聊得到了相同待遇。" — [[养龙虾5天血泪史]] ## Solution: Memory Flush **在压缩运行前将重要上下文写入磁盘**: ```json { "compaction": { "memoryFlush": { "enabled": true, "softThresholdTokens": 4000 } } } ``` 当会话接近上下文限制时: 1. OpenClaw 触发静默回合 2. Agent 将重要内容写入 `memory/YYYY-MM-DD.md` 3. 压缩器运行 4. 即使摘要丢失,重要内容仍保留在磁盘上 **注意**:4000 这个数值要根据模型上下文窗口大小调整。大模型(32K/128K/200K tokens)应设置更高值,避免过度压缩导致上下文碎片化。 ## Key Insight > "压缩不是敌人。压缩过程中丢失信息才是。" **如果只在上下文窗口中,它是临时的。如果在磁盘上,它就能存活。** ## Connections - [[上下文刷新]] ← 防止上下文压缩的信息丢失 - [[上下文压缩]] ← 触发 [[上下文刷新]] - [[Context-Pruning]] ← 与上下文压缩协同工作 - [[写入纪律]] ← 上下文刷新是写入纪律的技术实现 - [[养龙虾5天血泪史]] ← 主要来源