Auto-sync: 2026-04-23 04:02
This commit is contained in:
64
wiki/concepts/上下文压缩.md
Normal file
64
wiki/concepts/上下文压缩.md
Normal file
@@ -0,0 +1,64 @@
|
||||
---
|
||||
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天血泪史]] ← 主要来源
|
||||
Reference in New Issue
Block a user