OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  context-manager:AI 驱动的 OpenClaw 会话上下文管理系统

context-manager:AI 驱动的 OpenClaw 会话上下文管理系统

 
  apple ·  2026-02-19 00:40:10 · 3 次点击  · 0 条评论  

名称: 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

使用时机

  • 上下文使用量接近或超过 70-80%
  • 包含大量对话历史的长会话
  • 在会话变得缓慢或失去连贯性之前
  • 主动维护,以保持会话快速、专注

工作原理

  1. AI 摘要生成:向智能体发送提示,要求其总结自身上下文。
  2. 备份:将原始的 JSONL 会话文件保存到 memory/compressed/ 目录。
  3. 重置:删除 JSONL 文件(官方重置方法)。
  4. 注入:将 AI 生成的摘要作为新会话的第一条消息发送。
  5. 结果:会话密钥不变,生成新的会话 ID,上下文被压缩。

核心思路:智能体对其自身上下文有完全可见性,因此能生成最佳摘要。

命令

会话命令

命令 描述
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%

生成 AI 摘要(安全,只读)

$ ~/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 的摘要(旧版)

要求

  • openclaw - 网关必须正在运行
  • jq - JSON 解析工具 (brew install jq)
  • 网关访问权限 - 脚本使用 openclaw agentopenclaw sessions 命令

技术细节

会话重置方法

脚本使用删除 JSONL 文件的方法重置会话(官方方法):

  1. 将 JSONL 备份到 memory/compressed/
  2. 删除 ~/.openclaw/agents/{agent}/sessions/{sessionId}.jsonl
  3. 通过 openclaw agent --to main 发送压缩后的上下文
  4. 新会话自动创建,摘要作为第一条消息

为何不使用 /reset

/reset 斜杠命令仅在聊天界面中有效。当通过 openclaw agent --session-id 发送时,它被视为普通消息,智能体会尝试将其解释为任务。

AI 摘要生成提示

脚本要求智能体提供:
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"

最佳实践

  1. 先备份:脚本会自动备份,但测试前也可以手动备份。
  2. 先在非关键会话上测试:在主会话之前,先在 Slack 频道或 cron 会话上尝试。
  3. 检查摘要:先运行不带 --replacesummarize 命令,以验证摘要质量。
  4. 监控令牌数量:使用 status 命令验证压缩是否生效。

另请参阅

  • openclaw sessions --help
  • openclaw agent --help
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor