$cd ../troubleshooting/
High⚡ Performance
Dreaming 孤儿会话 — 磁盘膨胀与网关启动缓慢
// OpenClaw 的 memory「dreaming」功能在空闲时合并长期上下文。2026 若干版本存在已知问题:临时会话目录未被垃圾回收 — 用户报告 ~/.openclaw/agents/main/sessions/ 占用 5–50 GB,网关启动需 30 秒以上。
diagnose.sh
🔍 这是您的问题吗?
?du -sh ~/.openclaw/agents/main/sessions/ 显示数 GB(常见 5–50 GB)
?网关重启或 openclaw gateway status 比全新安装慢 15–60 秒
?大量 dream-temp-* 或 tmp-* 目录 mtime 很旧且无活跃聊天引用
measure_bloat.sh
✅ 修复方法 1 — 测量会话目录膨胀
删除前先建立基线
# 会话存储总大小
du -sh ~/.openclaw/agents/main/sessions/
# 统计会话相关目录数
find ~/.openclaw/agents/main/sessions/ -maxdepth 1 -type d | wc -l
# 列出最大的 dream-temp 目录
find ~/.openclaw/agents/main/sessions/ -name 'dream-temp-*' -type d -exec du -sh {} \; | sort -hr | head -20cleanup_orphans.sh
✅ 修复方法 2 — 安全清理孤儿临时会话
先隔离;健康 48 小时后再删隔离区
# 先停止 gateway
openclaw gateway stop
# 预览孤儿候选(14 天以上,dream-temp 前缀)
find ~/.openclaw/agents/main/sessions/ \
-maxdepth 1 -type d -name 'dream-temp-*' -mtime +14 -print
# 移到隔离区(比 rm 更安全)
mkdir -p ~/openclaw-session-quarantine
find ~/.openclaw/agents/main/sessions/ \
-maxdepth 1 -type d -name 'dream-temp-*' -mtime +14 \
-exec mv {} ~/openclaw-session-quarantine/ \;
openclaw gateway startopenclaw.json
✅ 修复方法 3 — 调整或关闭 Dreaming
调整保留策略 — 磁盘紧张时可关闭
# ~/.openclaw/openclaw.json
{
"agents": {
"defaults": {
"dreaming": {
"enabled": true,
"interval": "0 3 * * *",
"maxTempSessions": 50,
"retainTempDays": 3
}
}
}
}
# 或完全关闭:
# "dreaming": { "enabled": false }💡 专业技巧:安排每周清理
添加 cron 任务,删除超过 7 天的 dream-temp-* 文件夹。即使未来版本 GC 逻辑回退,也能保持磁盘稳定。批量删除前务必停止 gateway。
🛡️ 预防清单
- • 启用 dreaming 后,首月每周检查 du -sh ~/.openclaw/agents/main/sessions/
- • 保持 gateway 在较新补丁版本 — 2026.3.x 若干版本改进了临时会话清理
- • 若构建支持,设置 agents.defaults.dreaming.maxTempSessions 限制孤儿增长
- • 批量 rm 前备份活跃 session JSON — 未检查 mtime 前勿删 sess-*
- • VPS 上为 ~/.openclaw 使用独立磁盘或配额,避免膨胀写满根分区
❓ 常见问题
Q1. OpenClaw 里的「dreaming」是什么?
Dreaming 是后台内存整理:agent 空闲时,OpenClaw 将较早对话摘要写入紧凑记忆文件,使后续回复保持连贯而无需加载完整 transcript。整理过程会在 agents/<id>/sessions/ 下写入临时目录;清理失败时这些目录成为孤儿。
Q2. 可以删除 sessions 文件夹里的全部内容吗?
不可以。活跃会话(常为 sess-<uuid> 且 mtime 较新)保存频道状态。仅删除 dream-temp-*、tmp-*、.partial-* 等模式,或 session 索引中无对应项的目录。不确定时先移到隔离目录,重启 gateway — 若频道正常,48 小时后再删隔离区。
Q3. 为什么巨大的 sessions 目录会拖慢启动?
网关启动时会扫描会话元数据以重建索引并校验频道绑定。上万个陈旧目录意味着大量 stat() 与 JSON 解析。HDD Mac Mini 与树莓派 SD 卡最明显;NVMe 在 2 万+ 条目时仍会卡顿。
Q4. 关闭 dreaming 会破坏 agent 记忆吗?
Dreaming 改善长期回忆,但非日常聊天必需。关闭后不再产生新临时目录;agents/<id>/memory/ 下已有长期记忆文件保留。可能略弱于数周前对话的引用 — 在存储紧张主机上可接受。
Q5. 如何区分孤儿临时目录与真实会话?
孤儿通常名为 dream-temp-<timestamp>、.dream-work-<id> 或 tmp-merge-*,且在 dreaming 结束后不再更新。真实会话在每条入站消息时更新 mtime。对 dream-temp* 运行 find -mtime +14 — 若 gateway 仍在聊天但目录两周未动,即为孤儿。
Q6. 清理后是否应开 GitHub issue?
若使用 github.com/openclaw/openclaw 官方构建,建议提交。附上 openclaw --version、du -sh 输出、find … | wc -l 计数及 dreaming 配置片段。勿粘贴会话内容 — 可能含私密消息。社区报告有助于上游优先修复 GC。