用途
Context Manager 是一个用于 OpenClaw 会话的 AI 上下文管理技能。它的核心目标是处理长会话带来的上下文膨胀问题,通过智能摘要压缩会话内容,让会话保持快速和聚焦。
主要能力
- 会话列表与状态查看:
list命令列出所有会话及其 token 使用情况;status [KEY]显示特定会话的详细状态,包括会话键、会话 ID、类型、模型、阈值、token 数和占用百分比。 - AI 摘要生成:
summarize [KEY]为只读安全操作,向智能体发送提示词,让其总结自身上下文,摘要保存到memory/compressed/目录。 - 完整压缩流程:
summarize [KEY] --replace执行破坏性操作,包括生成摘要、备份、重置会话和注入压缩上下文。 - 阈值与配置管理:支持
set-threshold N(50-99%,默认 80)、set-depth LEVEL(brief/balanced/comprehensive)、set-quiet-hours HH等配置命令。 - 阈值检查:
check [KEY]和check-all用于检查会话是否超过压缩阈值。
工作原理
- AI 摘要:向智能体发送提示词,要求其总结自身上下文。
- 备份:将原始 JSONL 会话文件保存到
memory/compressed/。 - 重置:删除 JSONL 文件(官方重置方法)。
- 注入:将 AI 生成的摘要作为新会话的第一条消息发送。
- 结果:会话键不变,生成新的会话 ID,上下文被压缩。
关键点在于智能体对自身上下文有完整可见性,因此能生成尽可能好的摘要。
使用方式
基本命令示例:
# 列出所有会话及使用统计
~/openclaw/skills/context-manager/compress.sh list
# 查看特定会话状态
~/openclaw/skills/context-manager/compress.sh status agent:main:main
# 生成 AI 摘要(只读、安全)
~/openclaw/skills/context-manager/compress.sh summarize agent:main:main
# 压缩会话:生成摘要、重置、注入(破坏性)
~/openclaw/skills/context-manager/compress.sh summarize agent:main:main --replace
会话命令包括:list、status [KEY]、summarize [KEY]、summarize [KEY] --replace、compress [KEY](旧版基于 grep 的提取,不推荐)、check [KEY]、check-all。配置命令包括:set-threshold N、set-depth LEVEL、set-quiet-hours HH、help。
适用场景
- 上下文使用率接近 70-80% 以上时。
- 长时间会话积累了大量对话历史时。
- 会话开始变慢或失去连贯性之前。
- 主动维护快速、聚焦的会话。
输出文件
压缩时在 memory/compressed/ 中生成以下文件:
{timestamp}.ai-summary.md:AI 生成的会话摘要。{timestamp}.session-backup.jsonl:原始会话的完整备份(如需可恢复)。{timestamp}.transcript.md:原始转录提取(旧版)。{timestamp}.summary.md:基于 grep 的摘要(旧版)。
限制与要求
- 需要
openclaw且网关必须运行。 - 需要
jq进行 JSON 解析(brew install jq)。 - 需要网关访问权限,脚本使用
openclaw agent和openclaw sessions。 --replace为破坏性操作,会删除并重置会话。/reset斜杠命令只在聊天界面有效,通过openclaw agent --session-id发送会被当作普通消息处理。- 若摘要提取失败,脚本使用
2>/dev/null避免 Node 弃用警告破坏 JSON。 - 恢复备份可使用:
cp memory/compressed/{timestamp}.session-backup.jsonl ~/.openclaw/agents/main/sessions/{sessionId}.jsonl。 - 排查日志可使用:
openclaw logs --limit 50 --json | grep -i "error\|fail"。
最佳实践
- 先备份:脚本会自动备份,但测试前也可手动备份。
- 先在非关键会话上测试:例如先在 Slack 频道或 cron 会话上尝试,再用于主会话。
- 检查摘要:先运行不带
--replace的summarize验证摘要质量。 - 监控 token 数:使用
status验证压缩是否生效。