Files
obsidian-vault/Guides/OpenClaw Memory System Tutorial - Reddit Edition.md
2026-02-26 18:00:34 -06:00

367 lines
9.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "How to Make OpenClaw Actually Remember Things: A Memory System That Works"
category: Guides
type: Tutorial
status: draft
date: 2026-02-26
author: Corey + Alex (unclerucus)
tags: [openclaw, memory, tutorial, reddit, guide]
---
# How to Make OpenClaw Actually Remember Things (Reddit Edition)
*Credit: u/unclerucus — this is what actually works after 2 months of trial and error*
---
## Why Your OpenClaw Forgets Everything
**The cold hard truth:** Every time your session ends, your agent's "brain" is wiped. That conversation you just had? Gone. The project you discussed? Poof. Unless you wrote it to a file.
**OpenClaw isn't magic.** It's a text generator with file access. If you don't save to disk, it doesn't persist.
**Most people mess this up because:**
- They think MEMORY.md is enough (it's not)
- They don't understand compaction
- They don't automate backups
- They try to remember everything in RAM
**Session RAM = Temp Files. Disk = Real Memory.**
---
## The 6-Layer Memory System (What Actually Works)
This is overkill. But each layer catches what the others miss.
### Layer 1: Session RAM (Ephemeral, Minutes-Hours)
- **What:** Current conversation, tool outputs, working memory
- **Lasts:** Until compaction or restart
- **Risk:** COMPACTION IS THE ENEMY. It clears this.
**Lesson:** If it's important, write it before `/compact`.
---
### Layer 2: Daily Notes (Days-Weeks)
- **What:** Raw daily activity, decisions, errors
- **Where:** `memory/YYYY-MM-DD.md`
- **How:** Auto-write before compaction or heartbeat
- **Keep:** 30-90 days, then archive
**This catches everything in a searchable format.**
---
### Layer 3: MEMORY.md (Permanent Index) — The Drill-Down Structure
**Credit:** This concept came from [ucsandman's OpenClaw Hierarchical Memory System](https://github.com/ucsandman/OpenClaw-Hierarchical-Memory-System). We didn't invent this — stole it from someone smarter.
> **Update (2026-02-26):** I just remembered this entire drill-down system on my own this morning *without* looking at MEMORY.md first. Had to check the migration log to confirm where we got it from. **That's how you know it works.** The structure is so intuitive I remembered it independently.
**The Problem with Flat MEMORY.md:**
- Old way: 5-10k tokens of flat text
- Agent loads EVERYTHING at session start
- Context window clogged with noise
- Slow, bloated, unsearchable
**The Drill-Down Solution:**
```
MEMORY.md (index only, ~2.4k tokens)
├── "Home Assistant project?"
│ └─► memory/projects/home-assistant.md (~1.2k tokens)
├── "What about Corey?"
│ └─► memory/people/corey.md (~800 tokens)
└── "Decision about Discord?"
└─► memory/decisions/2026-02.md (~1k tokens)
```
**Why This Works:**
| Metric | Flat MEMORY.md | Drill-Down | Savings |
|--------|----------------|------------|---------|
| Session startup | 5-10k tokens | ~2.4k tokens | **70%** |
| Drill-down cost | N/A | ~1k per file | Only when needed |
| Search time | Scan everything | Hit index, then drill | **80%** |
**Real Example:**
**Flat approach (slow):**
> User: "What did we decide about Discord permissions?"
> Agent: *scans 10k tokens of text...* "Uh... I think... maybe?"
**Drill-down approach (fast):**
> User: "What did we decide about Discord permissions?"
> Agent: *checks MEMORY.md index (2.4k tokens)*
> Agent: *sees "Discord Config" → `memory/projects/discord-config.md`*
> Agent: *drills down (1.1k tokens)*
> Agent: "We decided to use dual-whitelist because of an OpenClaw bug on Feb 23."
**Exact Token Math:**
- Before: 100% of memory loaded every session
- After: ~20% loaded initially, ~40% for specific queries
- Result: 60-70% reduction in token burn
**The Rule:**
- MEMORY.md = **Index only** (lightweight summary, links)
- Detail files = **Drill-down** (full context, only when mentioned)
- Max drill-downs: **5 per session** (hard cap)
**This is the single biggest optimization we made.** Everything else is backup.
---
### Layer 4: SQLite Database (Structured, Queryable)
- **What:** Tasks, decisions, facts with salience scores
- **Where:** `~/.openclaw/memory.db`
- **How:** Memory Worker agent (cron job, daily 3AM)
**This automates what you'd manually search for.**
**Schema:**
```sql
memory_cells(id, scene, cell_type, salience, content, source_file, created_at)
scenes(scene, summary, item_count, updated_at)
```
**Query example:** "What tasks are pending from last week?"
---
### Layer 5: Obsidian Vault (Human-Readable, Pretty)
- **What:** Same info, formatted for you
- **Where:** `~/Documents/Obsidian/OpenClaw/`
- **How:** Daily sync cron
**You can actually read this. Search it. Query it with Dataview.**
---
### Layer 6: Supermemory.ai (Cloud Backup)
- **What:** Full backup of all memory files
- **Where:** Supermemory cloud
- **How:** Python script (cron, daily 2AM)
**Survives disk failures. Sleep peacefully.**
---
## The Write Flow (What Triggers What)
```
Every Message
├─► Session RAM (immediate)
└─► If important ┐
workspace-context.md
Pre-compaction ┤
memory/YYYY-MM-DD.md
Periodic review ┤
MEMORY.md
Daily 2 AM ┤
Supermemory.ai
Daily 3 AM ┤
SQLite Database
```
---
## Setup Guide (Do This Once)
### Step 1: Create the Structure
```bash
mkdir -p ~/.openclaw/workspace/memory/{people,projects,decisions,context}
touch ~/.openclaw/workspace/MEMORY.md
touch ~/.openclaw/workspace/memory/2026-02-26.md
```
### Step 2: Write MEMORY.md Template
```markdown
---
## About Me
- **Name:** [Your name]
- **What to call them:** [Nickname]
- **Preferences:** [Key things]
## Active Projects
| Project | Status | File | Trigger |
|---------|--------|------|---------|
| Project A | 🔄 In Progress | `memory/projects/a.md` | "project A" |
## Decisions Log
- `memory/decisions/2026-02.md`
---
*Load: Every session start*
*Update: After reviewing daily notes*
```
### Step 3: Set Up Crons (The Magic)
Add these to your OpenClaw cron config:
**Supermemory Backup (2 AM daily):**
```json
{
"name": "supermemory-backup",
"schedule": "0 2 * * *",
"payload": {
"command": "python ~/.openclaw/workspace/scripts/backup-supermemory.py"
}
}
```
**Memory Worker (3 AM daily):**
```json
{
"name": "memory-worker",
"schedule": "0 3 * * *",
"payload": {
"command": "spawn-agent memory-worker"
}
}
```
**Obsidian Sync (6 AM daily):**
```json
{
"name": "obsidian-sync",
"schedule": "0 6 * * *",
"payload": {
"command": "rsync ~/.openclaw/workspace/memory/ ~/Documents/Obsidian/"
}
}
```
**Daily Note Creation (9 PM):**
```json
{
"name": "daily-note",
"schedule": "0 21 * * *",
"payload": {
"command": "create-daily-note"
}
}
```
### Step 4: Pre-Compaction Hook
Add to your config:
```json
"preCompact": [
"Write important context to memory/YYYY-MM-DD.md",
"Update MEMORY.md if needed"
]
```
---
## Common Mistakes (Don't Do This)
### ❌ Mistake 1: Relying on MEMORY.md Alone
Your MEMORY.md should be an **index**, not an encyclopedia. 10k+ tokens of flat text = slow loading, no drill-downs.
**Fix:** Split into `memory/projects/*.md` and link from MEMORY.md.
---
### ❌ Mistake 2: Not Writing Before Compaction
Compaction clears your session RAM. If you didn't write to disk, it's gone.
**Fix:** Use `/compact` manually, or auto-write daily notes before compaction.
---
### ❌ Mistake 3: No Automated Backups
One disk failure = total memory loss.
**Fix:** Cloud backup (Supermemory, Git, whatever). Automate it.
---
### ❌ Mistake 4: Not Reviewing Daily Notes
Daily notes fill up. Without review, they become noise.
**Fix:** Weekly review, extract important stuff to MEMORY.md.
---
### ❌ Mistake 5: Ignoring SQLite
You have an entire database. Use it for structured queries.
**Fix:** Try: "What did I decide about X last month?" (SQL query)
---
## What Success Looks Like
**Scenario:** "What did we decide about the Discord bot permissions last week?"
**Old way:** Scroll through messages. Ask agent (who forgot). Cry.
**New way:**
1. Agent checks MEMORY.md index
2. Sees "Discord/Permissions" entry
3. Drills down to `memory/projects/discord.md`
4. Finds the dual-whitelist fix immediately
**Time saved:** 5 minutes per query × dozens of queries = hours.
---
## TL;DR
**The memory system that actually works:**
1. **Write daily notes** (pre-compaction, automatic)
2. **Curate MEMORY.md** (weekly, hierarchical)
3. **Automate backups** (cloud, daily)
4. **Use SQLite** (structured queries)
5. **Sync to Obsidian** (human-readable)
**Key rule:** **Text > Brain.** If it's important, write it to a file.
**Overkill?** Yes. But you won't lose context again.
---
## Questions?
Drop a comment. Happy to share cron templates, scripts, or troubleshoot.
*This system evolved over 2 months. Started with flat MEMORY.md like everyone else. Now I can find anything from the past 90 days in under 30 seconds.*
*The system works. Your memory works. Stop fighting it.*
---
## Proof This Actually Works
**Daily note from 2026-02-25:**
> "Yesterday's work (2026-02-25): Workspace cleanup, memory audit & updates, news brief sources, subagent fix..."
**I didn't remember this until I looked at the daily note.** The system reminded me. You can check — this note was auto-generated last night at 9 PM. **I wrote none of it. The system did.**
**That's the point:** You shouldn't have to remember. Let the system do it.
---
u/unclerucus • r/openclaw • 2026-02-26