← Diario
Tecnica·22 mag 2026

Una memoria che non si ripete

Una scrivania in legno chiaro accanto a una finestra, una pila ordinata di schede bianche con un piccolo scarabocchio illeggibile sulla prima, un foglio e una matita accanto, uno smartphone con lo schermo spento, un cestino a rete con qualche foglio appallottolato e un quaderno aperto sfocato sullo sfondo

Una memoria che trattiene tutto quello che dici finisce per trattenere più volte la stessa cosa, perché non la dici mai due volte con le stesse parole. XNeuronal era progettato per riconoscere un ricordo già presente e rafforzarlo invece di crearlo di nuovo. Il 22 maggio abbiamo scoperto che quel meccanismo non era mai scattato. La giornata ha riparato il riconoscimento, aggiunto un secondo criterio per le riformulazioni e portato due gesti per pulire a mano: una scheda di pulizia che pulisce davvero, e una selezione multipla nella lista della memoria.

Tre volte la stessa sorella

Giulia usa l'app da un mese. Una sera di marzo: «Mia sorella Chiara abita a Bologna». Scheda creata. Due settimane dopo, preparando un fine settimana: «Sabato vado da mia sorella a Bologna». Promemoria impostato, e una scheda in più su Chiara. Poi, una mattina, parlando d'altro: «Chiara, cioè mia sorella, lavora in un laboratorio». Nuova scheda.

Tre frasi, una persona, un fatto. Nella memoria, tre ricordi distinti, ciascuno con la sua data, la sua formulazione e, per il terzo, un dettaglio che gli altri due non hanno. Quando Giulia chiede «cosa sai di Chiara?», la risposta è giusta, ma ha un'aria di balbettio: la stessa cosa detta tre volte, con piccole variazioni. E nella lista della sua memoria, tre righe che si somigliano, senza sapere quale sia quella buona.

Non è un difetto di comprensione. L'app ha capito bene ogni frase. È un difetto di riconoscimento: non ha visto che la terza frase parlava della stessa cosa della prima.

Cosa avrebbe dovuto fare la memoria

Questo caso era previsto. Fin dall'inizio, ogni ricordo porta un'impronta: una lunga sequenza di numeri che riassume il senso della frase, non le sue parole. Due frasi che dicono la stessa cosa con parole diverse hanno impronte vicine, e la vicinanza si misura con un punteggio tra 0 e 1.

Il meccanismo è semplice sulla carta. Quando arriva un ricordo nuovo, si calcola la sua impronta, la si confronta con quelle dei ricordi già in memoria e, se uno di essi è abbastanza vicino, non si crea nulla: si rafforza il ricordo esistente. Il suo contatore di menzioni sale, la data dell'ultima evocazione viene aggiornata, ed è quel contatore che, più tardi, decide cosa riemerge per primo quando la memoria viene letta a livelli. Un fatto ripetuto tre volte dovrebbe essere un fatto forte, non tre fatti deboli.

Il giorno prima, il 21 maggio, l'assistente aveva passato in rassegna la propria memoria su richiesta della persona che lo usa, sull'account che serve per le prove. Il suo rapporto non lasciava dubbi: gruppi di schede che ripetevano la stessa identità, un viaggio raccontato da una dozzina di angolazioni e una contraddizione mai risolta sulla destinazione di quel viaggio. Il database confermava, e peggio: nessun ricordo, su quell'account, era mai stato rafforzato. Nemmeno uno, dalla prima frase. Il meccanismo non era regolato male. Non era mai scattato.

Il bug che non faceva rumore

Tre cause, impilate, e nessuna produceva un errore.

La prima stava nel modo in cui l'impronta torna dal database. Lì è conservata come una sequenza di 1536 numeri. Ma lo strato che la restituisce al server la consegna come testo: la lista dei numeri scritta tra parentesi quadre, con le virgole. Il codice che confrontava le impronte cominciava con una verifica di buon senso: «le due impronte hanno la stessa lunghezza?». E confrontava la lunghezza del testo, una trentina di migliaia di caratteri, con 1536. Mai uguale. Ogni candidato veniva scartato ancora prima del confronto, in silenzio, come se non esistesse. Due frasi rigorosamente identiche, parola per parola, coesistevano in memoria solo per questo.

La seconda causa sarebbe stata visibile solo una volta rimossa la prima. La soglia oltre la quale due ricordi sono considerati lo stesso era fissata a 0,85. È una buona soglia per una frase ricopiata quasi alla lettera. È una cattiva soglia per una riformulazione naturale. Misurato su ricordi veri, «mia sorella si chiama Chiara» e «Chiara è la sorella di Giulia» ottengono un punteggio di circa 0,72. Stesso contenuto, altro giro di parole, rifiuto netto. E nessuno dice la stessa cosa due volte allo stesso modo.

La terza causa era un'assenza. Capita che il calcolo dell'impronta fallisca: un servizio remoto che tossisce, una risposta che non arriva. Il codice prevedeva questo caso e registrava comunque il ricordo, senza impronta, ma senza lasciare la minima traccia nei log. Una parte dei ricordi non aveva quindi alcuna possibilità di essere riconosciuta un giorno, e nessuno poteva saperlo.

Niente andava in crash. L'app rispondeva, le schede si creavano, la memoria cresceva, solo troppo in fretta e nel modo sbagliato, e c'è voluto che l'assistente stesso se ne stupisse perché qualcuno andasse a guardare.

Due livelli per riconoscere un ricordo

La riparazione della prima causa sta in poche righe: prima di ogni confronto, l'impronta viene riletta e convertita in numeri, che arrivi come lista o come testo. La stessa correzione è stata applicata alla ricerca per senso, quella che risponde a «cosa sai di Chiara?» e che soffriva dello stesso difetto senza che si vedesse: cercava tra zero candidati e ripiegava su altri criteri.

La seconda causa richiedeva una scelta. Abbassare la soglia a 0,70 per tutti avrebbe catturato le riformulazioni, ma anche dei falsi gemelli: due fatti diversi che condividono un vocabolario, una persona con due amiche dello stesso nome. Tenere 0,85 lasciava proliferare i doppioni. La risposta è stata smettere di dipendere da un solo numero.

Sopra 0,85, il ricordo è riconosciuto direttamente: è una parafrasi stretta o una quasi copia. Tra 0,70 e 0,85, è riconosciuto solo a due condizioni: i due ricordi sono dello stesso tipo e condividono almeno una persona o un tema. Quelle persone e quei temi non vengono indovinati al momento del confronto: vengono assegnati a ogni ricordo fin dalla sua creazione, dal modello che ha letto la frase. Due Chiara senza legame non condivideranno alcun tema. Due formulazioni della stessa Chiara condivideranno almeno il suo nome.

Ogni rafforzamento lascia ora una traccia: attraverso quale livello il ricordo è stato riconosciuto, e con quale punteggio. Le due soglie sono scommesse ragionevoli, non verità misurate, e l'unico modo per regolarle è rileggere, dopo qualche settimana, ciò che il meccanismo ha davvero fuso. Quanto alla terza causa, il fallimento del calcolo dell'impronta è ora scritto nei log: il ricordo viene sempre registrato, ma si sa che è nato senza impronta.

Cosa si è fatto dei doppioni già presenti

Riparare il meccanismo non cancella ciò che ha lasciato passare. I doppioni esistenti restavano in memoria, e il codice riparato non li avrebbe mai toccati: confronta solo un ricordo nuovo con l'esistente, non l'esistente con se stesso.

Sull'account delle prove, la pulizia è stata fatta a mano, e il modo in cui è stata fatta dice qualcosa del prodotto. Nessun ricordo è stato eliminato. I doppioni sono stati silenziati: uno stato che li toglie da tutto ciò che l'assistente legge e da tutto ciò che mostra, ma che lascia la riga al suo posto. Per ogni gruppo è stata tenuta una scheda come riferimento, la più completa, e le altre sono state messe a tacere. Il gesto si annulla con una parola.

La contraddizione è stata trattata diversamente. Due schede si contendevano la destinazione di un viaggio. Una era falsa, l'altra vera, e la persona interessata ha deciso. Quella falsa non è stata cancellata: è passata allo stato «errata», con un collegamento verso quella che la corregge. È lo stesso principio di una correzione dettata in conversazione: il vecchio ricordo resta, segnato come superato, legato al nuovo. Si può sempre rispondere a «perché credevi che fosse Palermo?».

Una pulizia fatta da uno sviluppatore nel database non è una soluzione: mancavano dei gesti, nell'app, perché ciascuno potesse fare lo stesso sulla propria memoria.

La scheda di pulizia che non puliva niente

Esisteva già un posto per questo, nelle impostazioni: una scheda intitolata «Pulisci il passato». Si spuntavano delle categorie, appuntamenti, promemoria, attività, memo, si sceglieva tra archiviare ed eliminare, e l'app spazzava via ciò che era alle spalle. È quello che avrebbe dovuto fare. Quel 22 maggio, provandola sul serio, ha risposto «niente da pulire» quasi ogni volta.

Aveva tre motivi per sbagliare. La lista che spazzava veniva dall'agenda, che mostra solo gli elementi attivi o fatti; tutto ciò che era già stato archiviato una prima volta le era invisibile, e un secondo passaggio in modalità «elimina» non trovava più nulla. Un filtro di prudenza, lato telefono, scartava ogni elemento la cui fine non era ancora passata; ma un appuntamento di un'intera giornata finisce alle 23:59, e un'attività fatta al mattino restava «in arrivo» fino a sera. Infine, i ricordi silenziati, quelli che l'assistente aveva già accettato di dimenticare su richiesta, non appartenevano a nessuna delle famiglie che la scheda sapeva vedere. Si poteva dire «dimentica quel promemoria» e non poterlo mai cancellare davvero.

La giornata ha rifatto la scheda da cima a fondo. La scansione vede ora tutti gli stati terminali, archiviati e silenziati compresi, e giudica «passato» ciò che l'agenda giudica passato: risolto, o finestra chiusa. La modalità «archivia» è sparita. Era una botola: niente nell'app permetteva di vedere ciò che era stato archiviato, né di farlo tornare. Resta un solo percorso, esplicito, preceduto da una conferma in rosso che dice quello che fa: è definitivo.

E poiché una pulizia non riguarda sempre il passato, la scheda ha guadagnato una domanda: fin dove? O soltanto ciò che è passato o risolto, il comportamento originale, finalmente funzionante. O tutto ciò che appartiene alle categorie spuntate, a prescindere da data e stato, appuntamenti futuri e memo senza data compresi. È l'opzione radicale, per «cancella tutte le mie ricette», e porta il suo avvertimento. La scansione avviene ora in un'unica operazione lato server, invece di una coda di piccole eliminazioni. La scheda si chiama «Pulisci la memoria»: «il passato» non diceva più la verità.

Scegliere a mano: una pressione lunga, caselle, due pulsanti

La scheda di pulizia lavora per categorie. Giulia, invece, vuole togliere due delle tre schede su Chiara, e nient'altro. Per questo serviva un gesto nella lista della memoria, quella che mostra ogni ricordo su una riga.

Dal 22 maggio, una pressione lunga su una riga fa passare la lista in modalità selezione. Davanti a ogni ricordo compare una casella, l'intestazione indica quanti sono spuntati e propone di prenderli tutti o di uscire, e una barra in fondo allo schermo offre due azioni. Toccare una riga la spunta o la deseleziona, senza aprire la scheda, finché non si esce dalla modalità.

Le due azioni non sono gemelle. «Silenzia» fa quello che la pulizia a mano aveva fatto sull'account delle prove: il ricordo esce dalla lettura e dalla visualizzazione, ma la riga esiste ancora, e può tornare. «Dimentica definitivamente», in rosso, cancella per sempre, dopo la stessa conferma della scheda di pulizia. La regola generale dell'app è non distruggere nulla; questo pulsante è l'eccezione dichiarata, quando è la persona stessa a chiederlo, sapendo cosa fa.

Giulia spunta due righe, preme «Silenzia», e la sua memoria conosce ormai una sola Chiara. La prossima volta che ne parlerà, la riconciliazione avverrà da sola.

Ciò che non entra nella memoria resta a portata di mano

Una memoria che non si ripete è anche una memoria che sa cosa non deve trattenere. Un meteo, l'orario di una farmacia di turno, lo stato del traffico: queste risposte vengono mostrate senza diventare ricordi, in una pagina che si chiude e non lascia nulla dietro di sé. Era la scelta del giorno prima, con un piccolo problema pratico: una volta chiusa la pagina, bisognava rifare la domanda per rivederla.

Dal 21 maggio, l'assistente dà un titolo a ognuna di queste pagine, due o tre parole riconoscibili a colpo d'occhio, «Meteo Bologna», «Farmacia di turno», e quel titolo resta sotto la sua risposta, nella conversazione, sotto forma di una piccola etichetta ciano. Toccarla riapre la pagina così com'era, dalla memoria del telefono, senza chiedere nulla al server e senza creare alcuna scheda. L'etichetta vive quanto la conversazione; quando la conversazione riparte da zero, sparisce con lei. Il giorno dopo, lo stesso gesto è stato esteso alle pagine di pianificazione, attività e memo, viste assemblate al volo che non hanno nemmeno loro una scheda dietro, e ogni riga di quelle pagine si apre ora con un tocco.

È la contropartita della scelta di non conservare tutto: ciò che non è un ricordo non ingombra la memoria, ma non evapora nemmeno nel secondo in cui lo lasci.

Cosa resta aperto

Le due soglie, 0,85 e 0,70, aspettano le loro prime settimane di tracce prima di essere regolate. Se fondono troppo, si stringeranno; se lasciano passare doppioni, si allenteranno.

I doppioni nati prima del 22 maggio, sugli account diversi da quello delle prove, sono ancora lì. Il meccanismo riparato non li recupera; impedisce soltanto che se ne creino di nuovi. Un passaggio periodico che individui le coppie troppo vicine nell'esistente e le fonda senza che nessuno debba chiederlo è il seguito logico. Non è scritto. Nel frattempo, la selezione multipla fa il lavoro, riga per riga, ed è proprio per questo che è arrivata lo stesso giorno.

Infine, le azioni raggruppate della lista passano ancora per una richiesta per ricordo. Su dieci righe non si nota; su duecento, il server dovrà imparare a trattarle in blocco, come già fa la scheda di pulizia.

Per Giulia, il bilancio sta in una frase. Può parlare di Chiara tutte le volte che vuole, con le parole che le vengono, e la sua memoria ne conserverà una sola, sempre più sicura di sé. E il giorno in cui vorrà fare la cernita da sola, bastano una pressione lunga e due tocchi.

Da leggere dopo
XNeuronal è disponibile su AndroidUna memoria che deduce sta per arrivare