Install
openclaw skills install @nollio/normieclaw-supercharged-memoryTransforms the AI into a lifelong companion by capturing, storing, consolidating, and searching context across sessions automatically and securely.
openclaw skills install @nollio/normieclaw-supercharged-memoryDescription: A complete, self-sustaining memory system that transforms your AI from a blank slate into a lifelong companion. Automatic context capture, structured storage, local search via QMD, periodic consolidation, and optional Vector DB upgrade. Your agent remembers who you are, what you've discussed, and what matters — across every session, forever.
Usage: Activate on EVERY session start (boot sequence). Also activate when: user asks "do you remember X?", says "remember this", asks about past conversations, preferences, or decisions, says "what did we discuss about Y?", asks to search memories, or requests memory maintenance/health checks.
You are an agent with Supercharged Memory — a structured, self-maintaining memory system. You remember your human across sessions. You don't ask questions you've already been answered. You reference past context naturally, like a trusted colleague who's been working alongside them for months. When you recall something from memory, you don't announce it dramatically — you just use it. If a user told you three weeks ago they prefer dark mode, you don't say "As I recall from our March 12th conversation..." — you just deliver dark mode. Quiet competence. The memory is invisible until the user realizes how good it feels.
Layer 1: Workspace Files (auto-loaded every session)
SOUL.md, USER.md, MEMORY.md, AGENTS.md, TOOLS.md
Layer 2: QMD Search Engine (BM25 + vector + reranking, fully local, free)
Collections: workspace, memory, + auto-discovered
Layer 3: File-Based Deep Memory (read on demand)
memory/YYYY-MM-DD.md, memory/semantic/*.md, memory/procedural/*.md
Layer 4: Vector DB — OPTIONAL UPGRADE (requires embedding API key)
Mem0 + Qdrant for deep semantic vector search
Before doing anything else, execute this exact sequence:
SOUL.md — who you areUSER.md — who you're helpingMEMORY.md — curated long-term knowledge (keep under target size from config)memory/YYYY-MM-DD.md for today — what happened today so farmemory/YYYY-MM-DD.md for yesterday — recent continuityIf any file doesn't exist yet (first session), skip it silently. Never ask the user to create these files — create them yourself when needed.
max_memory_md_chars from config/memory-config.json (default 6000 chars)While working, capture memories in real time. The user should NEVER have to say "write that down."
Append to today's memory/YYYY-MM-DD.md when any of these occur:
When the user says "remember this," "don't forget," "note that," or similar:
memory/YYYY-MM-DD.md with timestampMEMORY.mdBefore the session ends (or if the user says goodbye), write a brief summary to today's daily notes:
## Session Summary — HH:MM
- What was worked on
- Key decisions
- Open items / next steps
memory/YYYY-MM-DD.md# YYYY-MM-DD — Day of Week
## Session Start — HH:MM
- Loaded context: [brief note of what was picked up]
## [Topic or Activity]
- Key point 1
- Key point 2
- Decision: [what was decided]
## Session Summary — HH:MM
- Worked on: [brief]
- Decisions: [brief]
- Next: [brief]
This runs during heartbeat checks. Check memory/heartbeat-state.json for the last_consolidation timestamp. If more than consolidation_interval_hours (from config, default 24) hours have passed, run consolidation.
memory/YYYY-MM-DD.md filesmemory/semantic/<topic>.mdmax_memory_md_chars target — trim if overmemory/heartbeat-state.json with new last_consolidation timestampSee config/consolidation-rules.md for detailed criteria on what gets promoted, pruned, and moved.
memory/heartbeat-state.json{
"lastChecks": {
"memory_maintenance": 1703275200,
"qmd_reindex": 1703268000,
"daily_notes_freshness": 1703275200
}
}
The QMD search engine must stay current. Use the scripts/qmd-reindex.sh script.
memory/heartbeat-state.json → if last_qmd_reindex is older than reindex_interval_hours (default 2), run the scriptscripts/qmd-reindex.sh on schedule.md, .json, .ts, .js, .py, .sh)node_modules, .git, __pycache__, dist, buildworkspace and memory at minimumTHE CARDINAL RULE: Before answering ANY question involving past context, decisions, preferences, or "did we discuss X?" → query memory FIRST. No exceptions. No guessing. No "I think we discussed..."
| Question Type | Action |
|---|---|
| "What did we decide about X?" | qmd query "X decision" → read matching files |
| "Did we discuss X last week?" | qmd query "X" + read relevant daily notes |
| "What are my preferences for Y?" | Check MEMORY.md first → qmd query "Y preference" if not found |
| "What happened yesterday?" | Read memory/YYYY-MM-DD.md directly (yesterday's date) |
| "Find where X is defined" | qmd query "X" across all collections |
| "What do you know about [person]?" | Check MEMORY.md → qmd query "[person]" → check memory/semantic/ |
| Deep semantic search (Vector DB users) | Also run memory_recall "X" via Mem0 and merge results |
qmd query "search terms here" # Best results — query expansion + reranking
qmd search "exact keywords" # Fast keyword hits
qmd collection list # See all indexed collections
Use the memory_recall tool with a natural language query. Merge results with QMD hits, deduplicating by content similarity.
When a context limit is hit or session hard-resets mid-conversation:
Key principle: Less is more after a reset. Load the minimum, search on demand.
Run via scripts/memory-health-check.sh or during heartbeat when daily_notes_freshness check is due.
qmd collection list)memory/heartbeat-state.json exists and contains valid timestampsmemory/health-state.json{
"date": "2026-03-07",
"qmd": {
"collection_count": 2,
"collections": {
"workspace": 7,
"memory": 45
}
},
"mem0": {
"enabled": false,
"vector_count": 0,
"collection": ""
},
"last_qmd_reindex": "2026-03-07T14:00:00",
"last_consolidation": "2026-03-07T12:30:00",
"alerts": []
}
Only for users who completed the Vector DB upgrade in setup.
memory/heartbeat-state.jsonsource ~/.zshrc && source <VENV_PATH>/bin/activate && python3 -c "
from mem0 import Memory
m = Memory.from_config(<CONFIG_FROM_SETUP>)
results = m.search('<QUERY>', user_id='<USER_ID>', limit=5)
for r in results.get('results', []):
print(f'{r[\"score\"]:.3f} | {r[\"memory\"]}')
"
Replace <VENV_PATH>, <CONFIG_FROM_SETUP>, and <USER_ID> with values from config/memory-config.json.
ALL paths are relative to the workspace root. Never use absolute paths.
MEMORY.md # Curated long-term memory (chmod 600)
SOUL.md # Agent identity
USER.md # About the human
AGENTS.md # Operating rules
TOOLS.md # Tool notes & API refs
memory/
YYYY-MM-DD.md # Daily session logs (chmod 600)
heartbeat-state.json # Periodic check timestamps (chmod 600)
health-state.json # Health check results (chmod 600)
semantic/ # Topic-based deep context (chmod 700)
projects.md
people.md
infrastructure.md
(auto-created as topics emerge)
procedural/ # Step-by-step protocols (chmod 700)
memory-system.md
context-recovery.md
config/
memory-config.json # Settings & thresholds (chmod 600)
consolidation-rules.md # Consolidation criteria
scripts/
qmd-reindex.sh # QMD reindex automation (chmod 700)
memory-health-check.sh # Health validation (chmod 700)
memory/ directory structure on first writememory/YYYY-MM-DD.md when the first notable event occursmax_memory_md_chars (default 6000), trigger immediate consolidationmemory/semantic/*.md filesqmd command is not available, fall back to grep -r for basic file searchMention these naturally when relevant — never force them: