Audit an OpenClaw agent's memory files for four failure modes that silently degrade memory quality over time:
| Signal | What it means |
|---|---|
| ----------------- | -------------------------------------------------------------------------------- |
| STALE / DEAD | File hasn't been updated in 30+ / 90+ days — may no longer reflect current state |
| REDUNDANT | Two or more files cover the same subject (Jaccard similarity ≥ 0.55 on titles) |
| DARK | File exists in memory but doesn't surface when searched — invisible to the agent |
| CONTRADICTION | Same file contains opposing status words (e.g. "deployed" and "not deployed") |
Use this skill when the user:
Ask for confirmation or infer from context. The memory directory is typically one of:
/memory/ — workspace-scoped memory files~/.openclaw/agents//memory/ — agent-level memoryIf neither is clear, ask: _"Where are your memory files stored? (e.g. a memory/ folder in your workspace, or a path you specify)"_
Run the bundled script against the memory directory:
python3 {baseDir}/scripts/memory_health.py --dir <memory-dir> --limit 50
Optional flags:
--limit N — score only the N most recently modified files (default: 50)--qmd — enable DARK detection via qmd query (requires qmd CLI installed)--json — machine-readable outputIf qmd is available and the user wants DARK detection:
python3 {baseDir}/scripts/memory_health.py --dir <memory-dir> --limit 50 --qmd
The script prints a per-file table and a summary:
WILLOW MEMORY HEALTH — memory/ (50 files)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
FILE BUCKET FLAGS
MEMORY.md HOT OK
2026-04-16.md HOT OK
2026-03-01.md WARM REDUNDANT
2026-03-01b.md WARM REDUNDANT
2025-12-10.md DEAD STALE | DARK
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SUMMARY
Files scored : 50
HOT (<7d) : 12
WARM (7–30d) : 23
STALE (30–90d) : 11
DEAD (>90d) : 4
REDUNDANT pairs: 3
DARK : 2 (qmd search returned no match)
CONTRADICTION : 1
HOT/WARM — healthy, no action needed.
STALE — review and either update or archive. Suggest: _"These files haven't been updated in 30–90 days. Want me to review them and mark outdated sections?"_
DEAD — strong candidate for archiving. Ask the user: _"These files are 90+ days old. Should I move them to an archive/ subfolder?"_
REDUNDANT — two files covering the same subject. Suggest merging the newer into the older or vice versa. Show both filenames and ask which to keep.
DARK — file exists but qmd search can't find it. This usually means the QMD index is out of date. Suggest running qmd update or re-indexing: openclaw memory sync.
CONTRADICTION — file contains opposing status phrases. Show the specific pairs flagged (e.g. "deployed" vs "not deployed") and ask the user to clarify current state.
After reporting, offer numbered actions the user can pick:
memory/archive/)qmd update)Always confirm before moving or modifying files.
For each cleanup action:
After cleanup, offer to re-run the diagnostic to confirm the health score improved.
If the user has opted into memory writes, append a dated summary to memory/YYYY-MM-DD.md:
## Memory health audit — {timestamp}
- Files scored: N
- DEAD archived: N files → memory/archive/
- REDUNDANT merged: N pairs
- DARK fixed: N (qmd update run)
- CONTRADICTION resolved: N files
Append-only. Do not overwrite existing entries.
MEMORY.md and undated files in memory/ are treated as evergreen — they are scored for REDUNDANT and CONTRADICTION but never flagged STALE/DEAD.memory/YYYY-MM-DD.md naming convention use mtime for age calculation.共 1 个版本