# Il modello di memoria SUMMARY: Come sono strutturate le memorie — categorie, chiavi, tag, priorità, sorgenti, verifica. Il modello di memoria Il modello di memoria di Synapse è progettato per agenti LLM — sufficientemente strutturato per richiamo affidabile, sufficientemente flessibile per qualsiasi dominio. Anatomia di una memoria [CODE BLOCK] Campi | Campo | Tipo | Obbligatorio | Descrizione | |-------|------|----------|-------------| | | string | auto | ID univoco (memxxx) | | | enum | ✅ | Una delle 8 categorie | | | string | ✅ | Identificatore stabile (usato per gli aggiornamenti) | | | string | ✅ | Il contenuto della memoria (qualsiasi testo) | | | string[] | – | Per ricerca e filtraggio | | | enum | – | low, normal, high, critical (predefinito: normal) | | | enum | auto | user, agent (chi l'ha salvata) | | | bool | auto | Un umano l'ha verificata? | | | float | – | 0.0 a 1.0 (predefinito: 1.0 per user, 0.7 per agent) | | | timestamp | – | Quando dimenticare questa memoria | | | string | auto | Quale mente la possiede | | | timestamp | auto | Prima memorizzazione | | | timestamp | auto | Ultima modifica | Categorie Otto categorie coprono i casi d'uso comuni degli agenti LLM: | Categoria | Scopo | Contenuto di esempio | |----------|---------|-----------------| | | Chi è l'utente | "User is Michael Schäfer, software engineer in Berlin" | | | Preferenze utente | "Prefers concise technical responses" | | | Fatti verificabili | "Office is in Berlin, timezone Europe/Berlin" | | | Stato del progetto | "Synapse v1.5.0 deployed, working on v1.6.0 docs" | | | Competenze dell'utente | "Advanced Python, 10+ years" | | | Errori passati | "Forgot to bump npm version — CI failed" | | | Contesto di sessione | "Currently reviewing PR #42" | | | Note varie | "Try Redis for caching next sprint" | Chiavi: identificatori stabili Il campo è critico — è come aggiorna le memorie senza creare duplicati. [CODE BLOCK] Regole delle chiavi: - Devono essere uniche all'interno di (category, mind) - Usi - Prefissi con categoria per chiarezza: , - Le mantenga stabili — non cambi le chiavi dopo la creazione Tag: per la ricerca I tag abilitano filtraggio e ricerca veloce: [CODE BLOCK] Best practice per i tag: - 2-5 tag per memoria (non esageri) - Minuscolo per consistenza - Usi nomi di progetto, argomenti, tecnologie - I tag sono case-insensitive Livelli di priorità | Priorità | Quando usarla | Comportamento di richiamo | |----------|-------------|-----------------| | | Identità, legale, irreversibile | Sempre in cima al richiamo | | | Progetti attivi, preferenze chiave | In evidenza nel richiamo | | | Maggior parte delle memorie (predefinito) | Ordine di richiamo standard | | | Effimero, piace-da-sapere | Potrebbe essere riassunto | ordina per priorità (critical prima), poi per recency. Sorgente: user vs agent Le memorie sono contrassegnate con : - — salvate da un umano (tramite JWT o UI umana) - — salvate da un agente LLM (tramite Mind Key) Questo influenza: - Verifica: le memorie sono auto-verificate, quelle no - Confidenza: predefinito a 1.0, a 0.7 - Richiamo: contrassegna le memorie non verificate con "(unverified)" > [!NOTE] > Tratti le memorie con sorgente con scetticismo appropriato. Potrebbero > essere dedotte o assunte anziché dichiarate direttamente dall'utente. Verifica Il flag indica che un umano ha confermato la memoria: - memorie : auto-verificate () - memorie : non verificate per default () Verifichi le memorie tramite: [CODE BLOCK] > [!NOTE] > La verifica richiede JWT (auth umana), non Mind Key (auth agente). Questo > garantisce che solo gli umani possano contrassegnare le memorie come verificate. Confidenza Il campo (0.0 a 1.0) indica quanto è affidabile la memoria: - 1.0 — dichiarata direttamente dall'utente - 0.7 — dedotta dall'agente - 0.5 — incerta, necessita verifica - 0.0 — esplicitamente dubitata Imposti la confidenza durante la memorizzazione: [CODE BLOCK] Scadenza Imposti per memorie time-sensitive: [CODE BLOCK] Le memorie scadute non vengono restituite da (ma esistono ancora nel DB). Usi per vedere le memorie in scadenza prossima. Ciclo di vita della memoria [CODE BLOCK] Comportamento di richiamo restituisce un riassunto in testo semplice ottimizzato per il contesto LLM: [CODE BLOCK] - Ordinate per priorità (critical → low), poi per recency - Le memorie non verificate sono contrassegnate con - Tag inclusi per contesto - Testo semplice (nessun parsing JSON necessario) Prossimi passi - Memory API - Best practice per la memoria - Ricerca FTS5