Vai al contenuto

Memoria per agenti: meno attrito batte più intelligenza

La memoria per agenti non serve un SDK: deja-vu indicizza retroattivamente i log di Claude Code, Codex e opencode. Meno attrito, più intelligenza.

Memoria per agenti: meno attrito batte più intelligenza

C'è un momento preciso in cui capisci che la memoria degli agenti è rotta. È quando un LLM ri-debugga per la terza volta lo stesso problema che aveva risolto due settimane fa, e tu lo guardi ripercorrere esattamente gli stessi passi, con la stessa identica sequenza di operazioni, la stessa struttura di ragionamento vuota. Non è un bug del modello: è un fallimento di memoria.

Il settore lo sa. Mem0 raccoglie finanziamenti, Letta esce da UC Berkeley con il pedigree di MemGPT, MemOS propone interfacce esplicite di lettura e scrittura. Sono tutti approcci forward-looking: sistemi che registrano la memoria nel momento in cui accade, richiedendo un'integrazione esplicita.

Promettono persistenza, ma a un prezzo nascosto: devi cambiare il tuo workflow per abilitarli.

Poi arriva un progetto open-source senza pretese a far rivedere le priorità.

Il problema non è ricordare, è non doversene preoccupare

deja-vu è un binario Go scritto da Vladislav Shulcz: zero dipendenze, nessun modello da scaricare, nessun servizio da avviare. La premessa è semplice, quasi ovvia una volta che la leggi: Claude Code, Codex e opencode scrivono già ogni sessione su disco. Gigabyte di problemi risolti, decisioni di design, fix di bug. Dati che esistono già, ma che nessuno può cercare.

Invece di chiederti di "salvare" qualcosa, deja-vu apre un indice inverso su quei file e basta. L'architettura è lineare: parser per JSONL e SQLite, tokenizzazione, bucket di posting list, il tutto in ~/.cache/deja. Nessuna chiamata di rete, nessuna API key. I log che hai accumulato per mesi prima ancora di installarlo diventano immediatamente ricercabili.

La differenza con gli approcci proattivi non è solo tecnica: è filosofica. Mem0, Letta e MemOS sono piattaforme di memoria: catturano, archiviano, recuperano. Richiedono una registrazione esplicita. deja-vu non chiede nulla del genere e funziona su ciò che gli agenti già scrivono, retroattivamente.

I sistemi di memoria più potenti sono quelli che nessuno integra. Non perché non funzionino, ma perché richiedono un passo in più. deja-vu ribalta il problema: la memoria non è una feature da attivare, è un effetto collaterale dell'uso normale degli agenti.

Cosa succede quando la memoria funziona senza chiedere il permesso

L'MCP server integrato espone due tool agli agenti: recall e recall_context. Con deja install --all, ogni agente sulla macchina riceve questi strumenti via MCP. Aggiungendo --auto, un hook SessionStart inserisce automaticamente la memoria rilevante nel contesto prima ancora che tu faccia una domanda.

La ricerca lessicale restituisce risultati in 7-9 ms su un corpus di oltre 1.250 sessioni e circa 3,3 GB di log. L'indice occupa il 2,4% del corpus originale. I segreti (chiavi API, JWT, chiavi private PEM) vengono oscurati all'ingestione, non in una passata successiva.

C'è anche la sincronizzazione tra macchine: deja sync ssh mini sposta la memoria laptop-server in un comando solo, con batch JSONL watermarkati e idempotenti.

Deja-vu funziona su tre harness (Claude Code, Codex, opencode) con un parser per tipo, e aggiungerne uno nuovo richiede un solo file. L'architettura è deliberatamente minimale perché il valore non sta nell'algoritmo: sta nel fatto che non devi fare nulla per attivarlo.

Quello che i benchmark dicono (anche quando non parlano di deja-vu)

Tre paper usciti lo stesso giorno affrontano lo stesso problema da angolazioni diverse: la granularità della memoria è il nodo strutturale.

  • MemOps (arXiv:2607.12893) riformula la memoria conversazionale come un ciclo di vita di operazioni esplicite: ricordare, dimenticare, aggiornare, riflettere. Il benchmark decostruisce i fallimenti di memoria che l'accuratezza della risposta finale nasconde. Il risultato più clamoroso: il retrieval a livello di sessione batte nettamente il retrieval a livello di turno, perché preserva il contesto tra un messaggio e l'altro. I sistemi che archiviano fatti isolati (come Mem0 nella modalità a grana fine) perdono l'ordine delle operazioni e le dipendenze temporali.
  • PM-Bench (COLM 2026) valuta la memoria prospettica: la capacità di eseguire un'intenzione a un segnale futuro mentre si svolgono altre attività. Il modello migliore (GPT-5.4) raggiunge appena il 65,1% di F1. Anche i modelli più avanzati dimenticano cosa dovevano fare mentre fanno altro. Il problema non è recuperare un fatto: è ricordarsi quando recuperarlo.
  • Critic Experience Bank (arXiv:2607.12397) affronta la stima della confidenza a livello di passo: un agente che accumula evidenza dai propri giudizi passati e dalle loro conseguenze osservate. È un tipo di memoria diverso (memoria dell'efficacia delle proprie azioni) ma il meccanismo è lo stesso di deja-vu: accumulare passivamente, interrogare quando serve.

C'è un filo che lega questi tre paper. Tutti dimostrano che la granularità della memoria è inversamente proporzionale alla sua utilità pratica. I fatti atomici sono facili da indicizzare ma perdono il contesto che li rende utilizzabili.

Le sessioni intere sono più pesanti ma preservano la struttura temporale e causale che serve davvero a un agente. deja-vu, quasi per caso, prende la strada giusta: indicizza sessioni, non messaggi.

La memoria degli agenti è una traiettoria di stati, non un database di fatti. I sistemi che trattano la memoria come un archivio atomico ottengono metriche di retrieval perfette e risposte inutilizzabili.

Il vantaggio competitivo

C'è una metrica che nessun benchmark misura: il tasso di adozione reale. Quanti developer hanno effettivamente integrato un sistema di memoria nei loro workflow?

La risposta è probabilmente bassissima, e il motivo è strutturale. Integrare Mem0 richiede un SDK, un'API key, un client da inizializzare. Integrare Letta richiede un'infrastruttura di context repository. Integrare MemOS richiede interfacce esplicite di lettura e scrittura.

Ogni passo aggiuntivo tra "voglio memoria" e "ho memoria" è un punto di abbandono.

deja-vu si installa con una pipe curl (la trovi nel README del progetto) seguita da un unico comando di attivazione:

deja install --all

Fine. Le sessioni passate sono già indicizzate. L'agente ha già gli strumenti MCP. Non c'è un "poi".

Il time-to-value è zero secondi per i dati esistenti e zero secondi per le sessioni future, perché non c'è nulla da fare nelle sessioni future.

Non è solo una differenza di UX, è di architettura.

Gli altri sistemi inseguono la completezza. deja-vu punta all'inevitabilità.

I limiti

deja-vu non risolve tutti i problemi. La ricerca è puramente lessicale: niente embedding, niente similarità semantica. Se cerchi "problema di autenticazione" ma l'agente ha scritto "auth broken after deploy", non lo trovi.

La memoria è vincolata ai file locali: se formatti il disco, perdi l'indice. I log originali restano nei cache degli harness su altri percorsi, a patto che non siano stati cancellati. La sincronizzazione tra macchine richiede configurazione manuale. E la feature di contesto automatico (--auto) è limitata a 2KB per sessione: abbastanza per un promemoria, non per una ricostruzione completa.

deja-vu è un layer di memoria passivo. Non aggiorna, non dimentica selettivamente, non riflette. Per agenti che operano in ambienti dinamici con stati che cambiano rapidamente, la ricerca lessicale e la mancanza di dimenticanza selettiva diventano limiti reali.

Fa una cosa sola: ti ricorda cosa hai già fatto. Per molti casi d'uso è sufficiente.

Per agenti che operano in ambienti dinamici con stati che cambiano rapidamente, non lo è.

deja-vu non è migliore di Mem0 o Letta in assoluto: è più utile per la maggior parte dei casi d'uso. Molti developer non hanno bisogno del ventaglio di funzionalità che quei sistemi offrono. Hanno bisogno di non ri-debuggare lo stesso problema tre volte.

Further Reading

GitHub - vshulcz/deja-vu at adrianoamalfi.com
Memory layer for coding agents: search, MCP recall, auto-context, secret redaction, stats, share and sync over the session logs Claude Code, Codex and opencode already write. One zero-dep binary. -…
deja-vu — search every session your coding agents ever wrote
Your agents already solved this. deja finds it. One local index across Claude Code, Codex and opencode, served back to agents via MCP.
PM-Bench: Evaluating Prospective Memory in LLM Agents
A significant challenge in agentic AI is prospective memory: the ability to execute an intention at a specific future cue or state while other activities are ongoing. We introduce PM-Bench, a text-based benchmark for measuring prospective memory capabilities in modern LLM agents. Inspired by the Virtual Week paradigm from cognitive science, PM-Bench evaluates how well LLM agents maintain user intentions, execute delayed intentions, and monitor latent environment changes. Over the course of a simulated seven-day week, agents must continue an ongoing activity while deciding whether any deferred task is due. We compare eight state-of-the-art LLMs on PM-Bench under eight different agent configurations. PM-Bench proves challenging across all settings: the best method, a GPT-5.4 agent, reaches only 65.1\% F1 score under our evaluation. Furthermore, no single strategy for improving prospective memory dominates across models. We release PM-Bench as a controlled testbed for diagnosing these failures and developing training or inference-time interventions that support reliable prospective behavior.
Critic Experience Bank: Self-Evolving Step-Level Confidence Estimation for LLM Agents
LLM agents act in external environments where each action changes the state that later decisions condition on, and where a single wrong step can waste interaction budget or trigger irreversible side effects long before the final failure is observed. Reliable deployment therefore requires \emph{step-level confidence estimation}: a calibrated probability that each proposed action is productive, available \emph{before} the action is executed. Existing LLM confidence estimators are designed to score a response from the given prompt, but agent confidence also depends on execution consequences: whether similar actions in similar situations actually advanced the task after the environment responded. We introduce the \method (\methodshort), a self-evolving critic framework in which an LLM critic accumulates evidence from its own past judgments and their observed consequences. After each trajectory, a hindsight LLM that sees the full execution feedback votes on whether each step was productive. The resulting pseudo-labels populate a memory bank from which related productive and unproductive experiences are retrieved into the critic’s prompt whenever a similar step recurs. \methodshort requires no training and uses no ground truth step labels. Across three agent benchmarks and three critic backbones, \methodshort attains the best calibration (ECE and Brier) and ranking (AUC) in every dataset--critic combination, reducing ECE by up to $54\%$ relative to the strongest training-free baseline.