Compact
Multi-level summary system for enhanced search
Compact generates AI summaries from your conversations to improve search quality. Inspired by claude-mem.
Optional feature — everything works without it. Your original data is never modified; Compact adds summaries on top.
Level System
Memex organizes conversation data into levels:
| Level | Name | Granularity | Description |
|---|---|---|---|
| L0 | Raw messages | Every message | Original content, always preserved |
| L1 | Observations | Per tool call | What tools were used and results |
| L2 | Talk summaries | Per prompt-response | Summary of each conversation turn |
| L3 | Session summaries | Per session | Overview of entire session |
L0 is always available — this is what "Never Compacted" protects. L1/L2/L3 are generated by Compact.
How It Works
Compact uses two Ollama models:
- Chat model (default:
qwen3:0.6b) — generates L1/L2/L3 summaries from raw messages - Embedding model (default:
bge-m3) — converts summaries to vectors for semantic search
L0 (raw messages)
│
├──▶ L1 (observations) ──▶ L2 (talk summaries) ──▶ L3 (session summaries)
│ │ │
└────────────────────────────────┴────────────────────────┘
│
▼
Embedding model
│
▼
LanceDB (vectors)
Generation flow:
- L1 is generated from L0 tool calls
- L2 is generated from L0 messages + L1 observations
- L3 is generated from L2 summaries
L3 depends on L2. To get session summaries, both l2_talk_summary and l3_session_summary must be enabled.
How to Search
MCP search_history uses the level parameter to choose what to search:
| Value | Searches | Best for |
|---|---|---|
sessions (default) | L3 summaries | Quick overview, finding relevant sessions |
talks | L2 summaries | Implementation details, specific solutions |
raw | L0 messages | Exact wording, precise recall |
Fallback: If no results at current level, automatically tries the next: sessions → talks → raw.
Why no L1 in MCP? L1 (tool-level observations) is available for context injection, but not exposed in MCP search — it's more useful for automatic context retrieval than manual search.
Context Injection
Compact also powers the Hooks feature for automatic context injection:
| Hook | Uses | What's Injected |
|---|---|---|
| SessionStart | L3 summaries | Recent session overviews |
| UserPromptSubmit | L2 summaries + vectors | Relevant conversation context |
Without Compact, SessionStart has limited context. UserPromptSubmit requires both Compact and embedding model for vector search.
Enabling Compact
Compact is disabled by default. See Configuration to enable.