consolidation-strategies.md

reference

← Back to skill

Content hash: db412c01aebd471257284e681bb7118351657df83876c4c1c534287dfdf007f9
# Memory Consolidation Strategies

## The write → consolidate → recall loop

```
Session ends → episodic log stored
    ↓ (async)
Consolidation: LLM distills episodic → semantic facts
    ↓
Next session start → recall relevant semantic + recent episodes
```

## Consolidation prompt template

```
You are consolidating an agent's session log into reusable facts.

Session log:
{episodes}

Extract facts as key-value pairs. Rules:
- One fact per key
- If a fact contradicts an earlier fact in this same log, use the LATEST value
- Skip transient events (tool output, intermediate steps)
- Include: user preferences, decisions made, project state changes, bug reports

Output as JSON: {"key": "value", ...}
```

## Staleness policies

| Strategy | When to use | Example |
|----------|-------------|---------|
| **TTL expiry** | Episodic memory | Delete episodes older than 30 days |
| **Supersede on conflict** | Semantic facts | New fact marks old as `superseded=true` |
| **Version + deprecate** | Procedural skills | `skill@v2` deprecates `skill@v1` |
| **Score decay** | Importance-weighted | Multiply score by decay factor each interval |

## Retrieval strategies

- **Semantic:** vector similarity on current task + recency boost
- **Episodic:** date-indexed for "what happened Tuesday" queries; hybrid for topical
- **Procedural:** exact match on task type → load matching skill
- **Hybrid:** dense + keyword (BM25) + RRF fusion — memory queries are often exact-phrase

## Pitfall checklist

- [ ] Consolidation runs after every session (not "someday")
- [ ] Contradiction handling: new facts win, old marked superseded
- [ ] Recall is retrieval (top-K), not dump-everything
- [ ] Per-user isolation in multi-tenant systems
- [ ] Working memory pruned within session; doesn't leak across sessions