Files
nexus/wiki/concepts/上下文压缩.md

65 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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天血泪史]] ← 主要来源