Memory Architecture
Airi’s memory system has multiple layers:Session Management
Conversations are organized into sessions:Database Configuration
Storage Backend
Airi uses multiple storage backends:local: Persistent IndexedDB storageoutbox: Queue for cloud synchronizationmemory: In-memory cache (default)
DuckDB Integration
For advanced querying and analytics:- SQL queries on conversation history
- Aggregations and analytics
- Full-text search (future)
- Vector similarity search (future)
Context Management
Active Context
Context is dynamically provided by modules:- Datetime: Current date/time
- User Profile: User preferences and info
- Module State: State from active modules (Discord, Minecraft, etc.)
Context Injection
Context is injected before each LLM call:Message History Management
Session Creation
Message Persistence
Messages are automatically persisted after each turn:Context Window Limits
Messages are automatically pruned to fit model context:- GPT-4o: 120k tokens (留 8k for response)
- Claude 3.5: 180k tokens (留 20k for response)
- Local models: Varies (typically 4k-8k)
Retention Policies
Session Retention
Configure how long to keep sessions:Message-Level Retention
For fine-grained control:Context Retrieval
Semantic Search (Future)
Planned feature using embeddings:Keyword Search
Basic text search:Memory Retrieval Settings
Retrieval Strategy
Configure how context is retrieved:- Recent: Simply take last N messages
- Relevant: Semantic search for related messages (requires embeddings)
- Hybrid: Combine recency and relevance
Context Summarization
For long conversations:Performance Tuning
Database Optimization
IndexedDB Settings:Memory Usage
Lazy Loading:Caching Strategy
Session Forking
Create alternate conversation branches:Export & Backup
Export Sessions
Import Sessions
Cloud Sync (Future)
Planned cloud synchronization:Troubleshooting
Storage Quota Exceeded
Symptoms: “QuotaExceededError” when saving messages Solutions:- Clear old sessions:
- Reduce retention policy
- Export and delete archived sessions
- Check browser storage quota:
Slow Query Performance
Solutions:- Add database indexes (see optimization section)
- Reduce message load count
- Use pagination for session lists
- Enable caching
Context Too Long
Error: Model context window exceeded Solutions:- Enable automatic message pruning
- Reduce
maxMessagesPerSession - Enable message summarization
- Switch to model with larger context (Claude 3.5, Gemini 1.5)
Code Reference
Memory system implementation:- Session store:
packages/stage-ui/src/stores/chat/session-store.ts - Context store:
packages/stage-ui/src/stores/chat/context-store.ts - Chat orchestrator:
packages/stage-ui/src/stores/chat.ts - Database repos:
packages/stage-ui/src/database/repos/ - Storage config:
packages/stage-ui/src/database/storage.ts
Related Resources
Character Settings
Configure character behavior
Providers
Configure LLM providers
