--- title: "上下文刷新(Memory Flush)" type: concept tags: [openclaw, memory, context-window, compaction] sources: [养龙虾5天血泪史] last_updated: 2026-04-23 --- ## Definition 上下文刷新是 OpenClaw 的压缩前内存保护机制——在压缩器运行前,自动触发静默回合,提示 Agent 将重要上下文写入磁盘,确保关键信息在压缩后仍然可用。 ## How It Works ``` 对话累积 → 接近 Context Window → Memory Flush 触发 → Agent 写入 memory/YYYY-MM-DD.md → 压缩运行 → 摘要丢失但重要内容存活 ``` ### 配置示例 ```json { "compaction": { "memoryFlush": { "enabled": true, "softThresholdTokens": 4000 } } } ``` ### 参数说明 | 参数 | 说明 | |------|------| | `enabled` | 是否启用内存刷新 | | `softThresholdTokens` | 触发刷新的 token 阈值 | ### 阈值设置原则 - **小上下文模型**(8K-32K):4000-8000 合适 - **大上下文模型**(128K-200K):需要更高阈值,避免过早触发导致上下文碎片化 - **公式**:Context Window × 0.2 ~ 0.4 ## The Gap: Memory Flush Only Runs Once Per Compression Cycle > "内存刷新每个压缩周期只触发一次。如果会话足够长,有两三次压缩,只有第一次得到刷新处理。之后的一切都处于风险中。" ### 补充方案:Context Pruning ```json { "contextPruning": { "mode": "cache-ttl", "ttl": "6h", "keepLastAssistants": 3 } } ``` - 在 6 小时后积极修剪旧上下文 - 同时保留最后 3 个助手响应 - 与 Memory Flush 结合:早期将重要内容写入磁盘,旧上下文在溢出前被清理 ## Key Insight > "如果在磁盘上,它能在压缩中存活。如果只在对话中,它就有风险。" ## Connections - [[上下文压缩]] ← Memory Flush 防止上下文压缩的信息丢失 - [[Context-Pruning]] ← 与 Memory Flush 协同工作 - [[写入纪律]] ← Memory Flush 是写入纪律的技术实现 - [[交接协议]] ← 互补:Memory Flush 处理压缩周期,交接协议处理模型切换 - [[养龙虾5天血泪史]] ← 主要来源