# Memory Consolidate

> Persistent memory system for OpenClaw agents: reads session logs, extracts facts/decisions/solutions, manages temperature-based lifecycle, and generates MEMORY_SNAPSHOT.md injected into every session. ALWAYS use this skill when the user mentions: memory consolidation, 记忆整理, agent memory, MEMORY_SNAPSHOT, memory health, SNR, signal noise ratio, semantic pipeline, memory cron, session log extraction, facts not being saved, memory stale or missing, 内存优化, optimize agent memory, install memory, memory not working, memory consolidate 报错, cron 怎么配 (when related to memory), 每天自动整理记忆, or any question about why the agent forgets things between sessions. Also activate when user says memory is stale, missing, or broken.

- Skill: `dvcrn/memory-consolidate-2` (Agent Skill, multi-file: 15 files)
- Install (CLI): `npx skillmds@latest add dvcrn/memory-consolidate-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dvcrn/memory-consolidate-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: dvcrn (https://skillmd.com/u/dvcrn)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/dvcrn/memory-consolidate-2

---


# memory-consolidate

Scripts live in the directory containing this SKILL.md. No copying needed.
`OPENCLAW_WORKSPACE` (default: `~/.openclaw/workspace`) tells scripts where to read/write.

## Install

Create required directories:

```bash
mkdir -p $OPENCLAW_WORKSPACE/memory/structured/{archive,candidates,semantic}
```

Patch OpenClaw config to inject snapshot into agent sessions:

```
gateway config.patch path="hooks.internal" raw='{"enabled":true,"entries":{"bootstrap-extra-files":{"enabled":true,"paths":["MEMORY_SNAPSHOT.md"]}}}'
```

Add daily cron (read timezone from USER.md, default UTC):

```
cron add job={
  "name": "Memory Consolidation (daily)",
  "schedule": {"kind": "cron", "expr": "0 3 * * *", "tz": "<tz_from_USER.md>"},
  "payload": {
    "kind": "agentTurn",
    "message": "bash $OPENCLAW_WORKSPACE/scripts/memory_consolidate_report.sh",
    "thinking": "off",
    "timeoutSeconds": 300
  },
  "sessionTarget": "isolated",
  "delivery": {"mode": "announce"}
}
```

Run initial consolidation and verify:

```bash
bash $OPENCLAW_WORKSPACE/scripts/memory_consolidate_report.sh
```

## Semantic Pipeline (LLM-powered)

`memory_consolidate_report.sh` runs the full pipeline including a semantic consolidation step powered by `claude-haiku-4-5-20251001` via the `tui` provider. This is auto-configured from `openclaw.json` — no manual API key setup needed. The LLM step clusters related memories, deduplicates, and improves signal quality in MEMORY_SNAPSHOT.md.

## Identity

Auto-detected from `IDENTITY.md` (assistant name) and `USER.md` (owner name, timezone, language). No config needed if these files exist with `- **Key:** Value` format.

## Config

Edit `config.yaml` in the directory containing this SKILL.md:

- `ingest.agent_ids` — which agents to scan (default: `"main"`, or `["main", "worker"]`)
- `ingest.session_hours` — lookback window (default: 24)
- `tag_rules` — project keyword → tag mapping
- `temperature.age_lambda` — decay speed (default: 0.07)

## Health check

```bash
python3 $OPENCLAW_WORKSPACE/scripts/memory_consolidate_observe.py
```

🟢 healthy / 🟡 watch / 🔴 needs tuning

## Troubleshooting

| Symptom | Fix |
|---------|-----|
| Snapshot shows "Assistant"/"User" | Ensure IDENTITY.md/USER.md have `**Name:**` format |
| LLM semantic step fails | Check `tui` provider config in `openclaw.json` has `baseUrl` and `apiKey` |
| Semantic pipeline degraded | Run `memory_candidate_extract.py`, check import errors |
| SNR too low | Increase `temperature.age_lambda` in config.yaml |
| No cold items after 2 weeks | Increase `age_lambda` (0.07 default should work) |
| Memory not updating | Verify `OPENCLAW_WORKSPACE` env var is set and cron job is active |

