侧边栏壁纸
博主头像
西瓜码农

成功需要脚踏实地,一步一个脚印

  • 累计撰写 130 篇文章
  • 累计创建 1 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

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 有两种记忆机制:

类型存储位置持久性
Session 历史~/.openclaw/agents/main/sessions/受配置限制,可能被清理
Memory 文件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.modedaily默认每天凌晨 4 点重置
session.reset.idleMinutes空闲重置阈值
session.maintenance.modeenforce主动清理旧数据
session.maintenance.maxEntries500最大保留条目数
session.maintenance.pruneAfter30d30 天后清理

3.3 查看配置 Schema

openclaw gateway config.schema.lookup session
可以查看配置项的详细说明和可选值。

四、解决方案

4.1 禁用每日重置

reset.modedaily 改为 idle,并设置空闲阈值:
{
"session": {
"reset": {
"mode": "idle",
"idleMinutes": 10080
}
}
}
参数说明:
参数含义
modeidle禁用每日强制重置
idleMinutes100807 天(168 小时)无活动才重置

4.2 调整维护模式

maintenance.modeenforce 改为 warn
{
"session": {
"maintenance": {
"mode": "warn",
"maxEntries": 2000,
"pruneAfter": "90d"
}
}
}
参数说明:
参数含义
modewarn只报告,不主动清理
maxEntries2000最多保留 2000 条记录
pruneAfter90d90 天后才考虑清理

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.modedailyidle禁用每日重置
session.reset.idleMinutes100807 天无活动才重置
session.maintenance.modeenforcewarn只警告不清理
session.maintenance.maxEntries5002000最多保留 2000 条
session.maintenance.pruneAfter30d90d90 天后才清理

六、注意事项

6.1 磁盘空间

warn 模式不会主动清理,如果磁盘空间紧张,可以改回 enforce
{
"session": {
"maintenance": {
"mode": "enforce"
}
}
}

6.2 Memory 文件 ≠ Session 历史

重要区分:
类型存储位置持久性
Session 历史~/.openclaw/agents/main/sessions/受配置限制,可能被清理
Memory 文件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

八、总结

OpenClaw 的"失忆"不是 bug,而是默认配置行为。核心原因有三个:
  • 每日重置:凌晨 4 点强制创建新 session
  • 维护清理:超过 30 天或 500 条记录会被删除
  • Visibility 限制:跨 session 历史不可见
通过调整 session.reset.modesession.maintenance 配置,可以有效延长 session 保留时间,减少"失忆"体验。 但要注意:session 历史 ≠ 长期记忆。重要信息仍需写入 MEMORY.mdmemory/YYYY-MM-DD.md 文件,这些文件不受 session 配置影响,是真正的持久化存储。
本文记录了完整的排查过程和配置修改,可供后续参考。
最后说一句:技术工具用久了,难免会遇到各种"诡异"行为。很多时候不是工具坏了,而是我们对它的默认行为不够了解。多看看文档,多查查配置,很多"失忆"问题都能找到答案。
0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区