长会话的挑战
Token 限制
即使 Claude Opus 4.7 支持 200K+ 上下文:
- 对话几天后会超出
- 全部保留成本高
- Agent 在长上下文中可能"走神"
记忆漂移
长会话常见问题:
- 早期提到的偏好被遗忘
- 重要决策被忽略
- 关键数据被覆盖
性能下降
- 每次请求发送长上下文 → 延迟增加
- Token 成本急剧上升
- Agent 处理速度变慢
OpenClaw 的解决方案
多层记忆系统
短期:当前会话上下文(内存)
↓
中期:Dreaming 系统(每日巩固)
↓
长期:Memory-Wiki 和向量记忆(持久)
核心工具
/compact:压缩历史/checkpoint:创建检查点/branch:会话分支Active Memory:自动注入QMD:快速记忆提取
/compact 命令
手动压缩
在长对话中:
/compact
OpenClaw 会:
- 分析对话历史
- 提取关键信息
- 压缩为摘要
- 保留最近几轮原文
压缩策略
session:
compact:
strategy: "balanced" # aggressive | balanced | conservative
preserveRecent: 5 # 保留最近 5 轮原文
summaryLength: 2000 # 摘要长度
自动压缩
session:
compact:
autoTrigger:
enabled: true
tokenThreshold: 100000 # 超过 100K Token 自动压缩
turnThreshold: 50 # 或超过 50 轮
/checkpoint 命令
创建检查点
用户:我们已经讨论了架构方案,需求也明确了
/checkpoint create "需求确认完毕"
OpenClaw:检查点已创建:chkpt-20260417-abc123
恢复检查点
/checkpoint restore chkpt-20260417-abc123
回到当时的状态,后续对话作废。
列出检查点
/checkpoint list
/branch 命令
创建分支
用户:/branch create try-new-architecture
创建新分支,不影响主会话。
切换分支
/branch switch main
/branch switch try-new-architecture
合并
/branch merge try-new-architecture --into main
Active Memory 长会话
启用
plugins:
active-memory:
enabled: true
contextMode: "recent" # 长会话推荐 recent
工作原理
每次用户消息前:
- Active Memory 子代理运行
- 扫描对话历史寻找相关信息
- 提取关键事实注入上下文
- 主 Agent 基于完整信息回复
长会话效果
即使对话数百轮,Agent 仍能:
- 记住早期偏好
- 引用历史决策
- 保持行为一致
QMD(Quick Memory Dump)
触发 QMD
/qmd
Agent 会生成当前会话的摘要:
- 讨论的主题
- 做出的决策
- 未解决的问题
- 关键数据
持久化 QMD
memory:
qmd:
autoSave: true
format: "markdown"
location: "./memory/qmd/"
QMD 自动保存为 Markdown,可后续查阅。
Memory-Wiki 长期记忆
将会话转为知识
用户:把我们今天讨论的架构方案记录到 Wiki
Agent:[将讨论整理为 Memory-Wiki 条目]
已保存:wiki/architecture/new-system-design.md
跨会话检索
[新会话]
用户:上周讨论的架构是什么?
Agent:[检索 Memory-Wiki]
找到:new-system-design.md
核心方案是...
组合使用
最佳实践模式
plugins:
# 每次回复前自动注入相关记忆
active-memory:
enabled: true
contextMode: "recent"
session:
# 自动压缩避免超限
compact:
autoTrigger:
enabled: true
tokenThreshold: 80000
# 关键节点自动 checkpoint
checkpoint:
autoOnKeyword:
- "决定"
- "确认"
- "采用"
memory:
# QMD 自动保存
qmd:
autoSave: true
# 重要内容进 Wiki
wiki:
autoSummarize:
triggerKeywords: ["重要", "记录", "文档"]
实际案例
案例 1:软件项目
为期 3 个月的 AI 辅助开发:
不优化:
- 3 个月后对话超 500 轮
- Token 消耗月均 $3000
- Agent 记不住项目细节
优化后:
- 每天 /compact 保持对话简洁
- 关键决策写入 Memory-Wiki
- Active Memory 自动检索
- Token 消耗月均 $500(节省 83%)
- Agent 始终记得项目
案例 2:客户支持
长期服务同一客户:
# 为每个客户独立会话
agents:
customer-support:
sessions:
perCustomer: true
longTermMemory: true
Agent 累积记忆:
- 客户历史问题
- 偏好和需求
- 之前的解决方案
几个月后仍能提供个性化服务。
案例 3:研究项目
半年的研究项目:
- 每周 /compact 清理
- 重要发现进 Wiki
- 分支探索不同假设
- Checkpoint 标记里程碑
最终回顾时,通过 Wiki 一键回忆所有关键进展。
监控长会话
查看会话健康度
openclaw session health <session-id>
# 输出:
# Token usage: 180K / 200K (90%) ⚠️
# Turns: 145
# Memory hits: 87%
# Recommendation: 建议 /compact
会话分析
openclaw session analyze <session-id>
查看:
- Token 使用趋势
- 工具调用频次
- 记忆召回效果
- 性能瓶颈
性能优化
流式响应
providers:
anthropic:
streaming: true
长响应流式输出,用户无需等待全部生成。
并发处理
session:
parallel:
enabled: true
maxWorkers: 4
独立子任务并行处理。
Prompt 缓存
providers:
anthropic:
cache:
enabled: true
system: true
tools: true
固定部分缓存,节省 90% 重复 Token。
故障排查
Token 超限
错误:context length exceeded
解决:
- 手动
/compact - 创建新分支继续
- 调整自动压缩阈值
Agent 遗忘重要信息
# 检查 Memory-Wiki 是否有记录
openclaw wiki search "关键词"
如果没有,手动补充到 Wiki。
响应变慢
- 启用压缩
- 减少 Active Memory 模式(full → recent)
- 启用 Prompt Caching
注意事项
- 长会话优化需要 OpenClaw v2026.4.10+ 获得完整功能
- /compact 是有损压缩,重要信息记得写入 Wiki
- Checkpoint 占用存储,定期清理不需要的
- Active Memory 每次增加延迟,延迟敏感场景考虑关闭
- Memory-Wiki 可以跨会话使用,是长期记忆的最佳选择
- 建议每周
openclaw session cleanup清理过期会话 - 团队协作建议配合 ByteRover 或 Supermemory