OpenClaw 突然失忆?排查思路与解决方案
OpenClaw 突然”失忆”?排查思路与解决方案
> 有时候你会发现,昨天的对话今天全没了,像是被格式化了一样。这不是幻觉,是 OpenClaw 的默认配置行为。
一、问题现象
使用 OpenClaw 一段时间后,可能会遇到以下情况:
-
早上醒来,昨天的对话记录不见了 -
想回看之前的上下文, sessions_history返回空 -
新 session 启动后,之前的记忆”清零”了
这种感觉就像突然失忆——明明昨天聊了很多,今天却什么都不记得了。
二、原因分析
2.1 默认每日重置
OpenClaw 默认在每天凌晨 4:00 自动创建新的 session。这是设计行为,不是 bug。
{ "session": {
"reset": {
"mode": "daily"
}
}
}
-
每天 4:00 强制重置 -
之前的对话上下文直接切断 -
新 session 从零开始
2.2 维护模式主动清理
默认配置下,session 维护会主动清理旧数据:
{ "session": {
"maintenance": {
"mode": "enforce",
"maxEntries": 500,
"pruneAfter": "30d"
}
}
}
-
超过 30 天的记录被清理 -
超过 500 条记录后主动删除 -
磁盘空间超过上限时强制清理
2.3 Session Visibility 限制
{ "sessions": {
"visibility": "tree"
}
}
-
只能看到当前 session 树下的子 session -
跨 session 的历史被隐藏 sessions_history
可能返回 “forbidden”
2.4 Memory 文件未正确维护
OpenClaw 有两种记忆机制:
|
|
|
|
|---|---|---|
|
|
~/.openclaw/agents/main/sessions/ |
|
|
|
MEMORY.md
memory/YYYY-MM-DD.md |
|
-
重要信息只存在于 session 历史中 -
没有写入 MEMORY.md -
session 被清理后,信息永久丢失
三、排查步骤
3.1 查看当前状态
openclaw status
Sessions
: 活跃 session 数量 Memory
: 是否启用 Visibility
: 可见性模式
3.2 查看 Session 配置
openclaw gateway config get session
|
|
|
|
|---|---|---|
session.reset.mode |
daily |
|
session.reset.idleMinutes |
|
|
session.maintenance.mode |
enforce |
|
session.maintenance.maxEntries |
|
|
session.maintenance.pruneAfter |
|
|
3.3 查看配置 Schema
openclaw gateway config.schema.lookup session
四、解决方案
4.1 禁用每日重置
reset.mode 从 daily 改为 idle,并设置空闲阈值: { "session": { "reset": { "mode": "idle", "idleMinutes": 10080 } } }
|
|
|
|
|---|---|---|
mode |
idle |
|
idleMinutes |
10080 |
|
4.2 调整维护模式
maintenance.mode 从 enforce 改为 warn: { "session": { "maintenance": { "mode": "warn", "maxEntries": 2000, "pruneAfter": "90d" } } }
|
|
|
|
|---|---|---|
mode |
warn |
|
maxEntries |
2000 |
|
pruneAfter |
90d |
|
4.3 完整配置示例
{ "session": { "reset": { "mode": "idle", "idleMinutes": 10080 }, "maintenance": { "mode": "warn", "maxEntries": 2000, "pruneAfter": "90d", "maxDiskBytes": "5gb" } } }
4.4 应用配置
# 修改配置 openclaw gateway config patch --path session --patch '{"reset":{"mode":"idle","idleMinutes":10080},"maintenance":{"mode":"warn","maxEntries":2000,"pruneAfter":"90d"}}' 重启 gateway 生效
openclaw gateway restart
五、配置对比
|
|
|
|
|
|---|---|---|---|
session.reset.mode |
daily |
idle |
|
session.reset.idleMinutes |
|
10080 |
|
session.maintenance.mode |
enforce |
warn |
|
session.maintenance.maxEntries |
|
2000 |
|
session.maintenance.pruneAfter |
|
90d |
|
六、注意事项
6.1 磁盘空间
warn 模式不会主动清理,如果磁盘空间紧张,可以改回 enforce: { "session": { "maintenance": { "mode": "enforce" } } }
6.2 Memory 文件 ≠ Session 历史
|
|
|
|
|---|---|---|
|
|
~/.openclaw/agents/main/sessions/ |
|
|
|
MEMORY.md
memory/YYYY-MM-DD.md |
|
-
重要信息写入 MEMORY.md(长期记忆) -
每日笔记写入 memory/YYYY-MM-DD.md -
定期检查并更新 Memory 文件
6.3 恢复默认配置
{ "session": { "reset": { "mode": "daily" }, "maintenance": { "mode": "enforce", "maxEntries": 500, "pruneAfter": "30d" } } }
七、排查命令汇总
# 查看当前状态 openclaw status 查看 session 配置
openclaw gateway config get session 修改配置
openclaw gateway config patch --path session.reset --value '{"mode":"idle","idleMinutes":10080}' 重启 gateway
openclaw gateway restart 查看配置 schema
openclaw gateway config.schema.lookup session
八、总结
- 每日重置
:凌晨 4 点强制创建新 session - 维护清理
:超过 30 天或 500 条记录会被删除 - Visibility 限制
:跨 session 历史不可见
session.reset.mode 和 session.maintenance 配置,可以有效延长 session 保留时间,减少”失忆”体验。 但要注意:session 历史 ≠ 长期记忆。重要信息仍需写入 MEMORY.md 和 memory/YYYY-MM-DD.md 文件,这些文件不受 session 配置影响,是真正的持久化存储。
夜雨聆风