首页 资讯 下载 教程 Skills 社群

OpenClaw 长会话上下文优化:保持 Agent 记忆不丢失

长会话的挑战

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

详见 Session Branching 教程

Active Memory 长会话

启用

plugins:
  active-memory:
    enabled: true
    contextMode: "recent"  # 长会话推荐 recent

工作原理

每次用户消息前:

  1. Active Memory 子代理运行
  2. 扫描对话历史寻找相关信息
  3. 提取关键事实注入上下文
  4. 主 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

解决:

  1. 手动 /compact
  2. 创建新分支继续
  3. 调整自动压缩阈值

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