名称: context-manager
描述: 为 OpenClaw 会话提供 AI 驱动的上下文管理
user-invocable: true
为 OpenClaw 会话提供 AI 驱动的上下文管理。利用智能体自身生成智能摘要,然后使用压缩后的上下文重置会话。
# 列出所有会话及其使用统计
~/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
memory/compressed/ 目录。核心思路:智能体对其自身上下文有完全可见性,因此能生成最佳摘要。
| 命令 | 描述 |
|---|---|
list |
列出所有会话及其令牌使用情况 |
status [KEY] |
显示会话的详细状态 |
summarize [KEY] |
生成 AI 摘要(只读) |
summarize [KEY] --replace |
生成摘要并重置会话(使用压缩后的上下文) |
compress [KEY] |
基于 grep 的旧版提取方法(不推荐) |
check [KEY] |
检查会话是否超过阈值 |
check-all |
一次性检查所有会话 |
| 命令 | 描述 |
|---|---|
set-threshold N |
设置压缩阈值(50-99%,默认:80) |
set-depth LEVEL |
设置摘要深度:brief/balanced/comprehensive |
set-quiet-hours HH |
设置静默时段(例如:"23:00-07:00") |
help |
显示帮助和使用示例 |
$ ~/openclaw/skills/context-manager/compress.sh list
📋 可用会话 (共 4 个)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# 会话密钥 类型 令牌数 使用率
1 agent:main:main 直接 70188 70%
2 agent:main:slack:channel:c0aaruq2en9 群组 20854 20%
3 agent:main:cron:0d02af4b-... 直接 18718 18%
$ ~/openclaw/skills/context-manager/compress.sh status agent:main:main
📊 上下文管理器状态
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
会话密钥: agent:main:main
会话 ID: fc192a2d-091c-48c7-9fad-12bf34687454
类型: 直接
模型: gemini-3-flash
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
阈值: 80%
令牌数: 70188 / 100000
使用率: 70%
$ ~/openclaw/skills/context-manager/compress.sh summarize agent:main:main
🧠 正在为会话请求 AI 摘要:agent:main:main
会话 ID: fc192a2d-091c-48c7-9fad-12bf34687454
✅ AI 摘要已生成!
已保存至:memory/compressed/20260127-123146.ai-summary.md
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
### 会话摘要:2026年1月27日
#### 1. 已完成事项
- 系统审计完成
- 使用子智能体生成文章
...
$ ~/openclaw/skills/context-manager/compress.sh summarize agent:main:main --replace
🧠 正在为会话请求 AI 摘要:agent:main:main
会话 ID: fc192a2d-091c-48c7-9fad-12bf34687454
模式:替换(将在生成摘要后重置会话)
✅ AI 摘要已生成!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[显示 AI 生成的摘要]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔄 正在重置会话并注入压缩后的上下文...
正在备份会话文件...
备份已保存:memory/compressed/20260127-123146.session-backup.jsonl
正在删除会话 JSONL 文件以重置...
正在将压缩后的上下文注入新会话...
✅ 会话压缩成功!
旧会话 ID: fc192a2d-091c-48c7-9fad-12bf34687454
新会话 ID: a1b2c3d4-...
会话已准备就绪,可继续使用压缩后的上下文
结果:70k 令牌 → 16k 令牌(减少 77%)
执行压缩时,会在 memory/compressed/ 目录下创建以下文件:
| 文件 | 描述 |
|---|---|
{timestamp}.ai-summary.md |
AI 生成的会话摘要 |
{timestamp}.session-backup.jsonl |
原始会话的完整备份(需要时可恢复) |
{timestamp}.transcript.md |
原始转录提取(旧版) |
{timestamp}.summary.md |
基于 grep 的摘要(旧版) |
brew install jq)openclaw agent 和 openclaw sessions 命令脚本使用删除 JSONL 文件的方法重置会话(官方方法):
memory/compressed/~/.openclaw/agents/{agent}/sessions/{sessionId}.jsonlopenclaw agent --to main 发送压缩后的上下文/reset?/reset 斜杠命令仅在聊天界面中有效。当通过 openclaw agent --session-id 发送时,它被视为普通消息,智能体会尝试将其解释为任务。
脚本要求智能体提供:
1. 已完成事项(关键任务)
2. 已做出的关键决策(及其理由)
3. 当前状态(我们停在哪里)
4. 待办任务(仍需完成的事项)
5. 重要上下文(需要记住的关键信息)
如果 AI 摘要提取失败,请检查 stderr 重定向:
# 脚本使用 2>/dev/null 来避免 Node 弃用警告破坏 JSON 解析
openclaw agent --session-id $ID -m "..." --json 2>/dev/null
验证 JSONL 文件路径:
ls ~/.openclaw/agents/main/sessions/
如果出现问题:
cp memory/compressed/{timestamp}.session-backup.jsonl \
~/.openclaw/agents/main/sessions/{sessionId}.jsonl
使用 openclaw logs 进行故障排除:
openclaw logs --limit 50 --json | grep -i "error\|fail"
--replace 的 summarize 命令,以验证摘要质量。status 命令验证压缩是否生效。openclaw sessions --helpopenclaw agent --help