Before searching, classify the task:
| Signal | Mode | Search Radius |
|---|---|---|
| Quick status check, monitoring | heartbeat | core + active |
| Normal question, lookup | normal | active + warm |
| "Find everything about X" | deep | all tiers |
| Strategy, complex analysis | deep | all tiers |
| Brainstorm, "what if", ideation | creative | random from cold+archive |
- Index files first — MOC or
_index.mdfiles are pre-built navigation. Check them before searching. - Follow links — If an index points to
[[crm/acme]], read the card directly. Don't search for "Acme." - Semantic search — Only when indexes don't cover the query.
- Grep — Last resort for exact strings, IDs, phone numbers.
# Find all active cards
grep -rl "^tier: active" vault/crm/
# Find all cold+ cards for deep search
grep -rl "^tier: \(cold\|archive\)" vault/crm/
# Find high-relevance cards
grep -l "^relevance: 0\.9" vault/crm/- Grep for tier → get file list
- Read relevant files → answer question
This is cheaper than searching all 400+ cards semantically.
Heartbeats are frequent, automated checks. Minimize cost:
- Read state file (always loaded)
- Check only
core+activetier cards matching current projects - Skip warm/cold/archive entirely
- Total reads: 0-5 files per heartbeat
Default for user questions:
- Check index/MOC for direct link
- If not found: semantic search with default radius (active + warm)
- Read top 3-5 results
- Touch any card you read:
memory-engine.py touch <file>
For complex, multi-step analysis:
- Check indexes
- Semantic search across ALL tiers (no filtering)
- Read all relevant results (up to 10-15 files)
- Cross-reference cards for connections
- Touch all read cards
Deliberately non-directed. Goal: surface unexpected connections.
python3 memory-engine.py creative 5 vault/- Get 5 random cards from cold/archive
- Read each one
- For each card, ask: "How could this connect to my current task?"
- If a connection exists → touch the card (promotes it back)
- If no connection → leave it (continues to decay)
- Stuck on a problem
- Looking for new angles
- User says "brainstorm" or "what if"
- Exploring forgotten knowledge
- Weekly reflection sessions
Human creativity often comes from random associations — shower thoughts, dreams, serendipitous encounters. Creative mode simulates this by pulling forgotten cards back into working memory. The randomness is the feature, not a bug.
Touching a card resets its decay. Over-touching defeats the purpose.
Touch when:
- You read the card's content to answer a question
- You update the card with new information
- User explicitly discusses the entity
Don't touch when:
- Card appears in search results but you didn't open it
- Running automated scans or reports
- Bulk migration or formatting changes
- Card mentioned in passing but not substantively used
| Mode | Typical reads | Token cost |
|---|---|---|
| Heartbeat | 0-5 files | ~2K tokens |
| Normal | 3-8 files | ~5K tokens |
| Deep | 10-20 files | ~15K tokens |
| Creative | 5 files | ~3K tokens |
Optimize by reading index files first — they're cheap navigation that prevents expensive full-text searches.