Tiered Memory
by @jpmoregain-eth
Two-tier memory system for OpenClaw agents. Tier 0 = QMD semantic search for recent memories (7-14 days). Tier 1 = SQLite archive for long-term storage. Auto...
clawhub install agent-tiered-memoryπ About This Skill
name: tiered-memory version: 1.0.1 description: Two-tier memory system for OpenClaw agents. Tier 0 = QMD semantic search for recent memories (7-14 days). Tier 1 = SQLite archive for long-term storage. Auto-archives old sessions with LLM summarization. Use when building agents that need efficient, scalable memory management. metadata: openclaw: requires: bins: - ollama - python3 install: - id: ollama kind: manual label: "Install Ollama (https://ollama.com/download) β used for LLM summarization during archiving. Optional: use --skip-llm flag to archive without it."
Tiered Memory Skill
Two-tier memory system combining OpenClaw's QMD semantic search with SQLite archival. Keeps recent memories fast and searchable while compressing old sessions for long-term storage.
Architecture
βββββββββββββββββββββββββββββββββββββββββββ
β TIER 0: QMD Semantic Search β
β βββ Hot memory (7-14 days) β
β βββ GPU-accelerated vector search β
β βββ Searches: MEMORY.md, memory/*.md β
βββββββββββββββββββββββββββββββββββββββββββ€
β TIER 1: SQLite Archive β
β βββ Cold storage (14+ days) β
β βββ Compressed summaries + key facts β
β βββ Structured queries via SQL β
βββββββββββββββββββββββββββββββββββββββββββ
Quick Start
1. Ensure QMD is Enabled
QMD comes with OpenClaw. Check status:
openclaw doctor
Should show QMD as available. If not, check ~/.openclaw/openclaw.json:
{
"memory": {
"qmd": {
"enabled": true,
"device": "cuda"
}
}
}
2. Set Up Archive Directory
mkdir -p ~/.openclaw/workspace/memory/archive
3. Install Cron Job (Auto-archive)
# Add to crontab
crontab -eAdd this line for daily 2 AM archive
0 2 * * * /usr/bin/python3 ~/.openclaw/skills/tiered-memory/scripts/memory_archiver.py --days 14 >> ~/.openclaw/workspace/memory/archive.log 2>&1
4. Use in Your Agent
import sys
sys.path.insert(0, '~/.openclaw/skills/tiered-memory/scripts')
from tiered_memory import TieredMemorymem = TieredMemory()
Query across both tiers
results = mem.search("AgentBear project")
Manual Archive
# See what would be archived
python3 ~/.openclaw/skills/tiered-memory/scripts/memory_archiver.py --dry-runArchive files older than 14 days
python3 ~/.openclaw/skills/tiered-memory/scripts/memory_archiver.pyArchive with custom threshold
python3 ~/.openclaw/skills/tiered-memory/scripts/memory_archiver.py --days 7Skip LLM (faster, basic summaries)
python3 ~/.openclaw/skills/tiered-memory/scripts/memory_archiver.py --skip-llm
Query Archives
# List all archived sessions
python3 ~/.openclaw/skills/tiered-memory/scripts/memory_archiver.py --listSearch archived summaries
python3 ~/.openclaw/skills/tiered-memory/scripts/memory_archiver.py --search "AgentBear"
How It Works
Daily Flow
1. During Day: Agent writes to memory/YYYY-MM-DD.md
2. QMD Indexes: Real-time semantic indexing
3. At 2 AM: Cron runs archiver
4. Old Files: Summarized β SQLite β moved to archive/
Search Priority
When an agent searches memory:
1. QMD search (Tier 0) - semantic, fuzzy, fast 2. If not found or need history: Query SQLite (Tier 1)
Archive Format
| Field | Type | Description | |-------|------|-------------| | session_date | DATE | Original file date | | summary | TEXT | LLM-generated summary | | key_facts | JSON | Important facts extracted | | topics | JSON | Tags/categories | | message_count | INT | Lines in original file |
Database Schema
CREATE TABLE archived_sessions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
source_file TEXT NOT NULL,
session_date DATE NOT NULL,
summary TEXT NOT NULL,
key_facts TEXT, -- JSON array
topics TEXT, -- JSON array
message_count INTEGER,
archived_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);CREATE INDEX idx_date ON archived_sessions(session_date);
CREATE INDEX idx_topics ON archived_sessions(topics);
Scripts
scripts/memory_archiver.py - Archive old files to SQLitescripts/tiered_memory.py - Unified search across both tiersFiles
references/qmd-setup.md - QMD configuration detailsreferences/archiver-api.md - Archiver script API referenceNotes
archive/ folder~/.openclaw/memory_archive.dbTroubleshooting
QMD not working?
See references/qmd-setup.md
Archive failing?
Check Ollama is running: ollama list
Want to restore archived file?
Just move it back from memory/archive/ to memory/
π‘ Examples
1. Ensure QMD is Enabled
QMD comes with OpenClaw. Check status:
openclaw doctor
Should show QMD as available. If not, check ~/.openclaw/openclaw.json:
{
"memory": {
"qmd": {
"enabled": true,
"device": "cuda"
}
}
}
2. Set Up Archive Directory
mkdir -p ~/.openclaw/workspace/memory/archive
3. Install Cron Job (Auto-archive)
# Add to crontab
crontab -eAdd this line for daily 2 AM archive
0 2 * * * /usr/bin/python3 ~/.openclaw/skills/tiered-memory/scripts/memory_archiver.py --days 14 >> ~/.openclaw/workspace/memory/archive.log 2>&1
4. Use in Your Agent
import sys
sys.path.insert(0, '~/.openclaw/skills/tiered-memory/scripts')
from tiered_memory import TieredMemorymem = TieredMemory()
Query across both tiers
results = mem.search("AgentBear project")
π Tips & Best Practices
archive/ folder~/.openclaw/memory_archive.db