--- name: memory-upgrade description: "Diagnose and fix broken memory search in OpenClaw. Enables local embeddings, hybrid search (BM25+vector), session transcript indexing, MMR diversity, and temporal decay — all running locally with zero API keys. Use when: memory_search returns empty results, agent has poor cross-session recall, user wants to upgrade their memory system, or after a fresh OpenClaw install." --- # Memory Upgrade Most OpenClaw installs have **broken memory search** — the `memory_search` tool returns empty results because no embedding provider is configured. OpenClaw auto-detects OpenAI → Google → Voyage keys; if none exist, embeddings stay disabled silently. This skill fixes it with fully local inference. No API keys. No data leaves the machine. ## Quick Start ```bash # 1. Diagnose bash scripts/diagnose.sh # 2. Fix (patches openclaw.json, restart [REDACTED] after) bash scripts/configure.sh # 3. Restart [REDACTED] openclaw [REDACTED] restart # 4. Verify (waits for indexing, runs test query) bash scripts/verify.sh ``` ## Optional Enhancements ```bash # Organize memory files into clean directory structure bash scripts/organize.sh # Add YAML frontmatter tags to untagged files bash scripts/tag.sh ``` ## What Gets Enabled | Feature | Details | |---------|---------| | **Local embeddings** | embeddinggemma-300m (~328MB GGUF, auto-downloads) | | **Hybrid search** | BM25 keyword + vector semantic (70/30 weight) | | **Session transcripts** | Past conversations become searchable | | **MMR diversity** | Reduces duplicate/overlapping results (λ=0.7) | | **Temporal decay** | Recent memories rank higher (30-day half-life) | | **Embedding cache** | 50k entries, avoids re-embedding unchanged text | | **File watcher** | Auto-reindexes when memory files change | ## How It Works - Patches `agents.defaults.memorySearch` in `openclaw.json` - Uses `node-llama-cpp` (ships with OpenClaw) for local embeddings - Vector search via `sqlite-vec` (ships with OpenClaw) - No external dependencies required ## Notes - First search after restart may be slow (model loads into memory) - Initial indexing takes 30-120s depending on file count - Embedding model runs on CPU (ARM/x86), ~768-dim vectors - Compatible with existing memory files — no migration needed