← 返回
未分类

Session Memory Flush

在 OpenClaw session 即将因 idle/reset 释放前,扫描 `openclaw sessions --json` 可见会话,读取 transcript,提炼高价值上下文并写入 workspace memory 文件,降低新 session 的失忆感。用于 main、native subage...
在 OpenClaw 会话因空闲/重置释放前,扫描 `openclaw sessions --json` 中的可见会话,读取转录内容,提炼高价值上下文并写入工作区记忆文件,以降低新会话的遗忘感。适用于主会话、本机子代理等场景。
hasakyi hasakyi 来源
未分类 clawhub v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 264
下载
💾 0
安装
1
版本
#latest

概述

session-memory-flush

目标

在 OpenClaw session 因 idle 自动释放前,读取当前 session transcript,优先调用 openclaw.jsonagents.defaults.model.primary 对应提供者做 LLM 摘要,并把值得后续继续工作的上下文写入短期记忆文件。

默认写入 ~/.openclaw/workspace/memory/YYYY-MM-DD.md;也可用 SESSION_MEMORY_OUTPUT_DIRopenclaw.json > sessionMemoryFlush.outputDir 覆盖输出目录。

能保证什么,不能保证什么

这个 skill 能保证的

  • 扫描 openclaw sessions --json 当前可见的 session
  • 在 transcript 可定位时,回收 main / native subagent / cron / dreaming 等 session 的摘要
  • 当前版本会按 session.agentId 感知 transcript 与模型配置,不再把所有 session 偷偷当成 main
  • 摘要写入 memory markdown,供共享同一 workspace / 同一记忆文件加载链路的新 session 继续读取

这个 skill 不能单独保证的

  • 不能保证不同 agentId 天然共享 builtin memory
  • OpenClaw builtin memory index 是 per-agent SQLite database,路径类似 ~/.openclaw/memory/.sqlite
  • 所以“其他 agent 也一样”是否成立,取决于它们是否共享:
  • 同一 workspace
  • 同一 memory/*.md 读取链路
  • 同一 memory search / index 配置范围
  • 如果是完全独立的 agentId / workspace,这个 skill 只能保证“成功 flush 到某个 memory 文件”,不能替 OpenClaw 保证“所有 agent 后续都会天然读到同一份记忆”

当前环境如何判断

如果 openclaw sessions --json 里看到的 session 都是同一个 agentId(比如全是 main),那你的实际运行效果通常可以近似理解为:

  • main session:可以受益
  • native subagent:通常也可以受益
  • dreaming / cron:只要 transcript 可见,也可以被回收

但这依然是因为它们实际落在同一个 agent scope,不是因为这个 skill 神奇地跨 agent 统一了 builtin memory。

不处理的场景

  • /new
  • /reset
  • 用户明确要求清空上下文

这些场景视为用户主动重置,不做旧会话回收。

处理的场景

  • 私聊超过 idle 阈值前
  • 群聊超过 idle 阈值前
  • 运维手动指定 sessionId 强制 flush

摘要输出格式

## YYYY-MM-DD HH:mm 会话摘要

来源:agent=<agentId> / channel / type / sessionId=xxx

- 本轮目标:
- 已完成事项:
- 重要决策:
- 用户偏好:
- 待办事项:
- 风险和未完成上下文:

摘要规则

  • 不保留完整聊天原文
  • 不写临时寒暄
  • 只保留后续任务真正需要的信息
  • 单个 session 摘要控制在 300-800 字
  • 敏感信息按公司安全规则脱敏
  • 去重键按 agentId:sessionId 记录,避免不同 agent 误判为同一条 session
  • LLM 调用失败时,允许降级为本地规则摘要,保证任务不中断

运行方式

定时运行:

bash install.sh

默认行为不再写死在 skill 里,而是按下面顺序取值:

  1. 环境变量(最高优先级)
  2. openclaw.json > sessionMemoryFlush
  3. OpenClaw 自身的 openclaw.json > session.reset/session.resetByType
  4. 最后才回退到保底值

其中:

  • 私聊 idle 优先复用 session.resetByType.direct.idleMinutes
  • 群聊 idle 优先复用 session.resetByType.group.idleMinutes
  • 轮询频率优先读 sessionMemoryFlush.timerMinutes
  • scan window 优先读 sessionMemoryFlush.scanWindowMinutes

推荐在 openclaw.json 里显式加一段:

{
  "sessionMemoryFlush": {
    "timerMinutes": 1,
    "idleMinutes": {
      "direct": 5,
      "group": 30
    },
    "scanWindowMinutes": {
      "direct": 1,
      "group": 5
    },
    "outputDir": "$HOME/.openclaw/workspace/memory"
  }
}

仍可通过环境变量覆盖:

SESSION_MEMORY_TIMER_MINUTES=1 \
SESSION_MEMORY_DM_IDLE_MINUTES=5 \
SESSION_MEMORY_GROUP_IDLE_MINUTES=30 \
SESSION_MEMORY_SCAN_WINDOW_DM=1 \
SESSION_MEMORY_SCAN_WINDOW_GROUP=5 \
SESSION_MEMORY_OUTPUT_DIR="$HOME/.openclaw/workspace/memory" \
bash install.sh

如果什么都不传,install.sh 会直接读 ~/.openclaw/openclaw.json 生成 timer/service。

手动试跑:

python3 watcher.py --once --dry-run

强制处理指定 session:

python3 watcher.py --once --force-session <sessionId>

交付建议

安全与隐私边界

  • 发布前应保持 state/flushed_sessions.json 为空状态:{"flushed_sessions": {}}
  • 不要随 skill 一起发布真实的 openclaw.json、session jsonl、memory markdown、SQLite 数据库、日志、缓存目录或任何本地运行产物。
  • 该 skill 会读取本机 OpenClaw session transcript,并优先使用当前用户 openclaw.json 中配置的模型提供商生成摘要;这意味着 transcript 可能会发送给用户自己配置的 LLM provider。
  • watcher.py 只在运行时读取本机 openclaw.json 或环境变量中的 API key 用于请求模型,不会把 API key 写入 state、memory markdown 或日志。
  • 如果部署环境不允许 transcript 出网,应通过内网模型、专用 SESSION_MEMORY_LLM_* 配置,或依赖本地规则摘要兜底。

如果要做成更稳的标准交付,建议把外部描述统一写成下面这句:

> 该 skill 会在 session 即将 idle/reset 释放前,把 transcript 摘要写入 memory 文件,降低后续新 session 的失忆感;它对当前 openclaw sessions --json 可见的 session 普遍适用,但不同 agentId 是否能共享后续记忆效果,仍取决于 workspace、memory 文件加载链路以及 builtin memory 的 per-agent 索引边界。

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-05-09 04:12 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

ai-agent

Self-Improving + Proactive Agent

ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,398 📥 323,098
ai-agent

self-improving agent

pskoett
捕获经验教训、错误及修正内容,以实现持续改进。适用于以下场景:(1)命令或操作意外失败;(2)用户纠正Claude(如“不,那不对……”“实际上……”);(3)用户请求的功能不存在;(4)外部API或工具出现故障;(5)Claude发现自身
★ 4,110 📥 831,427
ai-agent

Find Skills

guipi888
场景驱动+关键词双模式技能发现工具。当用户用自然语言描述场景/需求(如"我想做一个海报""帮我分析股票"),或明确说"安装技能/find skills/找个skill"时,自动从官方内置、本地已安装、SkillHub、虾评、GitHub、C
★ 1,473 📥 536,951