62 lines
2.8 KiB
Markdown
62 lines
2.8 KiB
Markdown
# DESIGN-0.18.0: Memory System
|
|
|
|
**Version:** 0.18.0
|
|
**Status:** Phase 1 Complete
|
|
**Depends on:** compaction (v0.15.0), knowledge bases (v0.14.0), persona-KB binding (v0.17.0), SQLite backend (v0.17.1)
|
|
|
|
---
|
|
|
|
## 1. Overview
|
|
|
|
Memory provides long-term fact persistence across conversations. Unlike
|
|
compaction (within-conversation context) or knowledge bases (static
|
|
documents), memory captures preferences, facts, and context that
|
|
accumulate over time from natural conversation.
|
|
|
|
**Key differentiator: Persona-scoped memory.** Each Persona builds
|
|
its own memory independently, preventing cross-context contamination.
|
|
A helpdesk Persona accumulates FAQ knowledge; a tutoring Persona
|
|
tracks per-student progress; a user's personal preferences stay
|
|
separate from any Persona context.
|
|
|
|
---
|
|
|
|
## 2. Scope Model
|
|
|
|
Three memory scopes with clear ownership:
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────┐
|
|
│ user scope │
|
|
│ owner_id = user_id │
|
|
│ "Jeff prefers Go over Python" │
|
|
│ "Deployment uses Kubernetes + Traefik" │
|
|
│ Visible in ALL conversations for this user │
|
|
└─────────────────────────────────────────────────┘
|
|
|
|
┌─────────────────────────────────────────────────┐
|
|
│ persona scope │
|
|
│ owner_id = persona_id │
|
|
│ "Common question: how to reset password" │
|
|
│ "Policy: refunds within 30 days only" │
|
|
│ Shared across ALL users of this Persona │
|
|
└─────────────────────────────────────────────────┘
|
|
|
|
┌─────────────────────────────────────────────────┐
|
|
│ persona_user scope │
|
|
│ owner_id = persona_id, user_id = user_id │
|
|
│ "Student struggles with recursion" │
|
|
│ "Customer prefers email over phone" │
|
|
│ Per-user within a specific Persona │
|
|
└─────────────────────────────────────────────────┘
|
|
```
|
|
|
|
**Scope resolution at recall time:**
|
|
|
|
When a Persona is active, all three scopes are queried and merged
|
|
with priority ordering: persona_user > persona > user. When no
|
|
Persona is active, only user scope is queried.
|
|
|
|
---
|
|
|
|
[... full content pasted ...] |