Persistent memory system for AI agents. Use this skill to remember context across conversations, recall relevant information, and build long-term knowledge...
Shodh Memory gives you persistent memory across conversations. Unlike your context window which resets each session, memories stored here persist indefinitely and can be recalled semantically.
ALWAYS call proactive_context at the start of every conversation with the user's first message. This surfaces relevant memories automatically.
remember) when:recall) when:Choose the right type for better retrieval:
| Type | When to Use | Example |
|---|---|---|
Decision |
User choices, architectural decisions | "User chose React over Vue for the frontend" |
Learning |
New knowledge gained | "This API requires OAuth2 with PKCE flow" |
Error |
Bugs found and fixes | "TypeError in auth.js fixed by null check" |
Discovery |
Insights, aha moments | "The performance issue was caused by N+1 queries" |
Pattern |
Recurring behaviors | "User prefers functional components over classes" |
Context |
Background information | "Working on e-commerce platform for client X" |
Task |
Work in progress | "Currently refactoring the payment module" |
Observation |
General notes | "User typically works in the morning" |
proactive_context FirstEvery user message → call proactive_context with the message
This automatically:
Good:
"Decision: Use PostgreSQL with pgvector extension for the RAG application.
Reasoning: Need vector similarity search, user already has Postgres expertise,
avoids adding new infrastructure. Alternative considered: Pinecone (rejected
due to cost)."
Bad:
"Use postgres"
Tags enable fast filtering without semantic search:
{
"content": "API rate limit is 100 requests/minute",
"tags": ["api", "rate-limit", "backend", "project-x"]
}
Later recall with: recall_by_tags(["project-x", "api"])
The system automatically weights memory types:
Decision and Error → Higher importance, slower decayContext and Observation → Lower importance, faster decayChoose types accurately for better long-term retention.
| Mode | When to Use |
|---|---|
semantic |
Pure meaning-based search ("database optimization") |
associative |
Follow learned connections ("what else relates to X?") |
hybrid |
Best of both (default, recommended) |
1. User sends first message
2. Call proactive_context(context: user_message)
3. Review surfaced memories
4. Respond with relevant context
1. Complete a significant task
2. Call remember() with:
- What was done
- Why it was done
- Key decisions made
- Any gotchas discovered
1. Call recall(query: "what user is asking about")
2. Also try recall_by_tags if you know relevant tags
3. Synthesize memories into response
1. recall(query: "error in [component]")
2. Check if similar errors were solved before
3. Apply previous fix or note new solution
4. remember() the resolution
New Memory → Working Memory (hot, fast access)
↓ (consolidation)
Session Memory (warm, recent context)
↓ (importance threshold)
Long-term Memory (persistent, searchable)
The system automatically:
| Tool | Purpose |
|---|---|
proactive_context |
Call every message. Surfaces relevant memories, stores context |
remember |
Store a new memory |
recall |
Search memories by meaning |
recall_by_tags |
Filter memories by tags |
recall_by_date |
Filter memories by time range |
forget |
Delete a specific memory |
forget_by_tags |
Delete memories matching tags |
| Tool | Purpose |
|---|---|
memory_stats |
Get counts and health status |
context_summary |
Quick overview of recent learnings/decisions |
consolidation_report |
See what the memory system is learning |
verify_index |
Check index health |
repair_index |
Fix orphaned memories |
User: "Let's start building the user authentication system"
You:
1. proactive_context("Let's start building the user authentication system")
→ Surfaces: Previous auth decisions, security preferences, tech stack
2. Response incorporates remembered context:
"Based on our earlier decision to use PostgreSQL and your preference
for JWT tokens, I'll set up auth with..."
3. After implementation:
remember(
content: "Implemented JWT authentication with refresh token rotation.
Used bcrypt for password hashing (cost factor 12).
Tokens expire in 15 minutes, refresh tokens in 7 days.",
type: "Learning",
tags: ["auth", "jwt", "security", "user-system"]
)
context_summary to see what's accumulatedShodh Memory: Because context shouldn't reset with every conversation.