问题描述
前天下发任务,今天问 Agent 进展,Agent 对此一无所知。
根本原因:OpenClaw Agent 默认是无状态的。每个 Session 都是全新开始,跨 Session 的记忆需要显式管理。任务信息如果没有写入磁盘记忆文件,就只存在于当次 Session 的 transcript 里,Session 结束后对新 Session 不可见。
断层的五个环节
1. Agent 没有主动写入记忆
Agent 接受任务时,如果没有把”任务描述 + 开始时间 + 当前状态”写入 memory/YYYY-MM-DD.md 或 MEMORY.md,信息就只存在于 transcript。
2. Memory Flush 未触发
Compaction 前会有一个静默 turn 提醒 Agent 保存重要上下文,但只在对话接近 context limit 时才触发。短对话不会触发 Compaction,也就不会触发 flush。
3. Dreaming 默认关闭
即使 Agent 写了日记,Dreaming(把短期信号晋升到 MEMORY.md)默认关闭。前天的日记不会自动提升为长期记忆。
4. 日记文件加载窗口只有两天
memory/YYYY-MM-DD.md 只自动加载今天和昨天的文件。前天(两天前)的日记即使写了,也不会被注入新 Session 的上下文。
5. Commitments 默认关闭
Commitments 机制专门处理”说了要做某事、之后跟进”的场景,但默认关闭。即使开启,也只是通过 heartbeat 触发一次自然跟进,不是持续的任务状态追踪。
解决方案
方案 A:强制 Agent 写入 MEMORY.md(最简单)
下发任务时明确要求:
帮我做 XX 任务,并把任务状态记录到 MEMORY.md,包括:任务描述、开始时间、当前进展。
每次有进展时也要求更新:
更新 MEMORY.md 中 XX 任务的进展状态。
优点:立即生效,无需配置。 缺点:依赖用户主动提醒,容易遗漏。
方案 B:开启 Dreaming + Active Memory(推荐)
{
"plugins": {
"entries": {
"memory-core": {
"config": {
"dreaming": { "enabled": true }
}
},
"active-memory": {
"enabled": true,
"config": {
"enabled": true,
"agents": ["main"],
"queryMode": "recent"
}
}
}
}
}- Dreaming:每天凌晨 3 点自动把重要短期信号晋升到
MEMORY.md - Active Memory:每次对话前主动搜索相关记忆注入上下文,即使 Agent 没有主动搜索也能感知到任务状态
优点:自动化,减少人工干预。 缺点:Dreaming 有评分门控,不保证所有任务信息都晋升;Active Memory 增加每次对话的延迟(最大 120s)。
方案 C:Sub-agent + Task Ledger(最可靠)
对于需要跨天追踪的长任务,用 sessions_spawn 派生后台 sub-agent 执行。任务状态持久化在 task ledger 里,不依赖记忆文件。
# 下发任务时
请用 sessions_spawn 派生一个后台任务来执行 XX,这样我可以随时查看进展。
查看任务状态:
openclaw tasks list # 列出所有后台任务
openclaw tasks show <runId> # 查看具体任务状态
openclaw tasks show <taskName> # 按名称查看(需设置 taskName 参数)优点:任务状态完全持久化,不依赖记忆机制,最可靠。
缺点:需要 Agent 支持 sessions_spawn 工具(coding/full profile 默认有,messaging profile 需手动添加);任务完成后 ledger 会被清理。
方案 D:开启 Commitments(辅助)
openclaw config set commitments.enabled true
openclaw config set commitments.maxPerDay 5开启后,Agent 接受任务时会自动推断”需要跟进”,通过 heartbeat 在适当时候主动回来汇报。
适用场景:任务周期短(当天或次日),需要 Agent 主动跟进。 不适用:长期任务状态追踪,或需要精确查询进展的场景。
方案对比
| 方案 | 可靠性 | 配置成本 | 适用场景 |
|---|---|---|---|
| A. 强制写 MEMORY.md | 中(依赖人工) | 无 | 临时任务,不想改配置 |
| B. Dreaming + Active Memory | 中高 | 低 | 日常对话任务,希望自动化 |
| C. Sub-agent + Task Ledger | 高 | 中 | 长任务、需要精确状态追踪 |
| D. Commitments | 低(仅跟进提醒) | 低 | 短期跟进,辅助使用 |
诊断命令
# 查看记忆文件是否有任务记录
openclaw memory search "任务关键词"
# 查看后台任务状态
openclaw tasks list
openclaw tasks list --status running
# 查看 Commitments 状态
openclaw commitments --all
# 查看 Dreaming 状态
openclaw memory status --deep相关页面
- memory — 记忆机制总览(文件结构、加载规则)
- dreaming — Dreaming 后台巩固(短期→长期晋升)
- active-memory — Active Memory(对话前主动注入记忆)
- commitments — Commitments(推断式跟进记忆)
- concepts/tool-subagents — Sub-agents(后台任务派生与追踪)
- concepts/cli-tasks —
openclaw tasks(任务状态查看命令) - session — Session 生命周期与隔离规则