🧠 Approfondimento tecnico · 2026

Spiegazione della memoria OpenClaw: architettura, configurazione e perché si dimentica

Una guida tecnica completa a OpenClaw Memory: come funziona, dove salva il contesto, quali limiti ha e come usarla in modo affidabile.

📅 Aggiornato: aprile 2026⏱ Lettura di 14 minuti✍️ Editoriale di EasyClaw
  • X(Twitter) icon
  • Facebook icon
  • LinkedIn icon
  • Copy link icon

Perché OpenClaw continua a dimenticarti (e perché non è un bug)

L'oblio che provi è il risultato diretto di come è progettato il sistema di memoria di OpenClaw: memory lives as plain Markdown files on disk, non in un database, non nella RAM, non all'interno del modello. I file sono la fonte della verità.

Quando questi file risultano mancanti, configurati in modo errato o sovrascritti silenziosamente durante la compattazione, l'agente perde il contesto e non ha modo di dirti cosa è successo.

La correzione non è un'impostazione che puoi capovolgere. Comprende l'architettura a tre livelli abbastanza bene da poter prendere decisioni ponderate su cosa va dove.

L'architettura di memoria OpenClaw completa (spiegazione di 3 livelli)

La memoria OpenClaw opera su tre livelli distinti, ciascuno con caratteristiche di persistenza e modalità di guasto diverse.

Ciclo di vita completo della memoria:

Write → Embed/Index → Search → Compact → Recover
  ↓          ↓           ↓         ↓         ↓
.md file   sqlite-vec  semantic  summary   MEMORY.md
created    indexes it  query     replaces  re-read at
           on save     returns   context   session start
                       chunks    window

Ogni fase di questa catena può fallire in modo indipendente. La maggior parte dei problemi di dimenticanza si riconducono esattamente a una fase interrotta.

Layer 1: la finestra del contesto attivo

Questa è la memoria di lavoro del modello: tutto ciò che è attualmente caricato nella finestra di contesto per la conversazione attiva. Include il prompt del sistema, la cronologia delle conversazioni e qualsiasi blocco di memoria recuperato dallo strumento di ricerca.

Cosa lo riempie:

  • Prompt del sistema (spesso di grandi dimensioni)
  • Estratti di memoria recuperati
  • Cronologia delle chiamate dello strumento
  • La conversazione si trasforma

Cosa succede in caso di overflow: Quando la finestra di contesto si avvicina al limite del token, OpenClaw attiva la compattazione: riassume il contesto esistente in una rappresentazione compressa e continua. Le istruzioni in linea nella conversazione (anziché fissate in file di memoria duratura) vengono spesso eliminate durante questo riepilogo.

Limite pratico: supponiamo di avere circa il 60-70% della finestra di contesto pubblicizzata del modello disponibile per la conversazione effettiva dopo il prompt del sistema e il sovraccarico della memoria.

Layer 2 — Note giornaliere (la finestra mobile di due giorni)

Le note giornaliere sono file Markdown di sola aggiunta denominati nel formato YYYY-MM-DD archiviati nella directory memory/. OpenClaw carica quello di oggi e quello di ieri file automaticamente all'inizio di ogni sessione.

  • I fatti relativi al lavoro di oggi, alle decisioni prese e alle attività attive vengono aggiunti qui
  • Non sono destinati a essere modificati: trattali come un registro
  • Dopo due giorni, non rientrano nella finestra di caricamento automatico e diventano ricercabili solo tramite ricerca semantica

Il problema critico: OpenClaw non crea la directory memory/ per te. Se la directory non esiste, le note giornaliere vengono eliminate silenziosamente, non viene generato alcun errore e l'agente dimentica tutto tra una sessione e l'altra. Questa singola omissione è all'origine della maggior parte dei resoconti "perché continua a dimenticarmi?".

Layer 3 — Memoria durevole (MEMORY.md e memory-wiki)

I fatti a lungo termine che dovrebbero sopravvivere attraverso le sessioni (il tuo nome, il contesto del progetto, le preferenze di codifica, le decisioni sull'architettura) appartengono a MEMORY.md o al vault strutturato del plugin memory-wiki.

MEMORIA.md

Un file Markdown in formato libero. L'agente lo legge all'inizio della sessione. Scrivi qui i fatti che vuoi sempre caricare. Semplice, non è richiesta alcuna configurazione.

memoria-wiki

Un plug-in strutturato con organizzazione a livello di pagina, monitoraggio di affermazioni e prove, rilevamento di contraddizioni e metadati di aggiornamento. Ideale per gli agenti di produzione con basi di conoscenza ampie e in evoluzione.

Il problema della compattazione: perché le tue istruzioni svaniscono a metà attività

La compattazione è la modalità di errore meno documentata in OpenClaw. La maggior parte degli articoli tratta dell’oblio post-sessione. Quasi nessun indirizzo compattazione a metà attività in flussi di lavoro autonomi di lunga durata — quando l'agente sta eseguendo un'attività in più passaggi, la compattazione si attiva silenziosamente al passaggio 7 di 12 e le istruzioni comportamentali del passaggio 1 scompaiono.

Cosa fa la compattazione:

  1. Rileva che la finestra di contesto si sta avvicinando alla capacità massima
  2. Riassume la conversazione corrente in un blocco condensato
  3. Sostituisce il contesto originale con il riepilogo
  4. Continua l'esecuzione

Il problema: i riepiloghi ottimizzano i fatti e lo stato delle attività, non le istruzioni comportamentali. Un'istruzione di sistema come "scrivi sempre i test prima dell'implementazione" o "non sovrascrivere mai i file senza conferma" può sopravvivere al primo ciclo di compattazione e scomparire dal secondo.

Quando si attiva: Non esiste una soglia configurabile nel plugin memory-core predefinito. Si attiva in base al conteggio dei token, non alla fase dell'attività. In una corsa autonoma di 2 ore, puoi aspettarti 3-5 cicli di compattazione.

Come costruire un'architettura di file resistente alla compattazione

Inserisci le istruzioni comportamentali in MEMORY.md, non nella conversazione. Tutto ciò che deve sopravvivere a più cicli di compattazione deve trovarsi in un file durevole che viene riletto dopo ogni compattazione.

Schema di blocco consigliato:


## Agent Behavioral Rules (always active)
- Never overwrite files without showing a diff first
- Write tests before implementation (TDD mode: on)
- Use TypeScript strict mode in all new files

## Project Context
- Stack: Node.js 22, Fastify, PostgreSQL 16
- Repo root: /home/user/project
- Active sprint goal: migrate auth to Clerk

Convenzioni di denominazione che sopravvivono alla compattazione:

  • Prefisso le sezioni critiche con ## [PINNED]: il riepilogo considera le intestazioni maiuscole come ad alta priorità
  • Mantieni ogni fatto su una riga, ove possibile: i paragrafi densi vengono riepilogati, i fatti su una sola riga tendono a sopravvivere alla lettera
  • Ripeti le 3-5 regole comportamentali più critiche sia in MEMORY.md che nella nota quotidiana di oggi: la ridondanza è la tua copertura di compattazione

Configurazione da zero a memoria in 10 minuti (impalcatura file completa)

Questa è la guida all'installazione che non esiste da nessun'altra parte. Copia questa struttura, inserisci il contesto e sei pronto.

Albero delle directory:

memory/
├── MEMORY.md
├── 2026-04-27.md          ← today's daily note (create manually)
└── wiki/                  ← only if using memory-wiki plugin
    ├── index.md
    ├── project-context.md
    └── decisions.md

Avviatore MEMORY.md:

# Persistent Memory

## Identity & Preferences
- Name: [your name]
- Role: [your role]
- Preferred response style: concise, no preamble

## Project: [Project Name]
- Stack: [your stack]
- Key constraints: [e.g., no external APIs, TypeScript only]
- Current focus: [active task or sprint goal]

## Behavioral Rules
- [Rule 1]
- [Rule 2]

## Decisions Made
- [YYYY-MM-DD] Decided to use X because Y

Nota giornaliera iniziale (2026-04-27.md):

# 2026-04-27

## Session Goals
- [ ] Task 1
- [ ] Task 2

## Notes

Configurazione slot plug-in (sintassi 2026):

__EC_BLOCCO_15__

Per disabilitare completamente la memoria:

{
  "plugins": {
    "slots": {
      "memory": false
    }
  }
}

Passaggi di verifica:

  1. Esegui una sessione e chiedi all'agente di ricordare qualcosa che gli hai detto in una sessione precedente
  2. Controlla che sia stato scritto memory/YYYY-MM-DD.md (dovrebbe avere nuovi contenuti)
  3. Chiedi direttamente all'agente: "Cosa sai di me?" - dovrebbe estrarre da MEMORY.md

Configuring memory-wiki per una knowledge base di produzione

Abilitalo scambiando lo slot del plugin:

{
  "plugins": {
    "slots": {
      "memory": "memory-wiki"
    }
  }
}

memory-wiki genera un deposito strutturato in memory/wiki/. Ogni argomento ha la propria pagina. Il plugin compila un digest.md che aggrega fatti altamente affidabili e non contraddittori affinché l'agente possa caricarli all'avvio della sessione.

Struttura pratica del caveau per un agente di produzione:

__EC_BLOCCO_22__

Utilizza memory-wiki quando:

  • La tua base di conoscenza supera ~50 fatti
  • Hai bisogno del rilevamento delle contraddizioni
  • Più agenti scrivono nello stesso deposito

Attenersi a MEMORY.md grezzo quando:

  • Sei uno sviluppatore solista
  • Il tuo contesto è stabile
  • Vuoi zero costi di manutenzione

Semantic Search and Embeddings: SQLite, sqlite-vec e JS Fallback

OpenClaw indicizza i file di memoria utilizzando SQLite with the sqlite-vec extension per la ricerca di somiglianza vettoriale. Quando tu o l'agente effettuate una ricerca in memoria, incorpora la query e recupera i blocchi più semanticamente rilevanti.

Verifica che il tuo archivio vettoriale sia integro:

__EC_BLOCCO_23__

Se sqlite-vec non è disponibile (comune su ARM Linux e alcune configurazioni Windows), OpenClaw ricorre a un'estensione vettoriale puramente JS. Forza il fallback in modo esplicito:

{
  "memory": {
    "vectorBackend": "js"
  }
}

Segment-Specific Memory Strategies

Solo Developer: spese generali minime, richiamo massimo

Configurazione consigliata: plugin memory-core, MEMORY.md + solo note giornaliere, nessun deposito wiki.

  • Mantieni MEMORY.md sotto le 200 righe: i file più lunghi rallentano l'avvio della sessione
  • Aggiungi alle note giornaliere in modo aggressivo; non cercare di mantenerli puliti
  • Rivedi e elimina MEMORY.md settimanalmente: i fatti obsoleti peggiorano la qualità della ricerca

Pipeline multi-agente: memoria condivisa tra agenti

Quando più agenti leggono e scrivono nella stessa directory memory/, sono necessarie regole di proprietà esplicite.

  • One agent owns writes to each file — le scritture simultanee sullo stesso file .md produrranno conflitti
  • Utilizza sottodirectory per agente: memory/agent-a/, memory/agent-b/, con un memory/shared/MEMORY.md condiviso
  • Utilizza memory-wiki per il vault condiviso: la sua compilazione digest gestisce l'aggiornamento su più autori meglio dei file non elaborati

Long-Running Autonomous Tasks — Sopravvivere alle ore di esecuzione

Per gli agenti che eseguono attività misurate in ore:

  • Force memory writes at checkpoints — dopo ciascuna fase dell'attività principale, chiedere all'agente di aggiungere il suo stato attuale alla nota giornaliera di oggi
  • Pre-load compaction-resistant context — inserisci la specifica completa dell'attività in MEMORY.md prima dell'inizio dell'esecuzione, non solo nel messaggio iniziale
  • Set explicit continuation markers nelle note giornaliere: <!-- RESUME POINT: completed steps 1-4, next: step 5 --> in modo che l'agente possa auto-orientarsi dopo un ciclo di compattazione

Perché EasyClaw vince nelle attività di memoria a lunga esecuzione

EasyClaw è nativo per desktop, il che significa che i file di memoria, gli indici vettoriali e le note quotidiane vivono insieme al tuo progetto sul disco locale, non in una sessione cloud che elimina il contesto in caso di timeout. Ottieni memoria resistente alla compattazione per impostazione predefinita, non per configurazione.

  • ✅ Memoria persistente che sopravvive ai riavvii: nessun limite alle sessioni cloud
  • ✅ Indicizzazione locale sqlite-vec con latenza di rete pari a zero
  • ✅ Wiki di memoria strutturata integrata: nessun plug-in aggiuntivo da configurare
  • ✅ Il checkpoint automatico scrive in ogni fase principale dell'attività
  • ✅ Blocco consapevole della compattazione: le regole comportamentali non vengono mai riassunte
Prova EasyClaw gratuitamente →

Troubleshooting OpenClaw Memory: diagnostica eventuali problemi di dimenticanza in 2 minuti

Segui questi passaggi in ordine:

Step 1: esiste la directory memory/?

  • No → Crealo. Ciò risolve circa il 40% di tutte le segnalazioni di dimenticanza.
  • Yes → Continuare al passaggio 2.

Step 2 — Vengono scritte note giornaliere?

  • Cerca un file denominato data odierna in memory/
  • No file → Lo slot del plugin potrebbe essere configurato in modo errato. Verificare che plugins.slots.memory sia impostato e non false.
  • File exists but è vuoto → L'agente sta caricando la memoria ma non sta scrivendo. Controlla i permessi di scrittura sulla directory.

Step 3 — La compattazione ha attivato e rimosso le tue istruzioni?

  • Symptom: l'agente ricorda i fatti ma ignora le regole comportamentali nel corso della sessione
  • Fix: sposta tutte le regole comportamentali in MEMORY.md in una sezione ## [PINNED]

Step 4 — La finestra di contesto è in overflow prima della compattazione?

  • Symptom: l'agente inizia a ignorare le parti precedenti di lunghe conversazioni
  • Fix: ridurre le dimensioni del prompt del sistema, tagliare MEMORY.md o suddividere l'attività in sessioni più brevi con note di checkpoint esplicite

Step 5 — L'indice del vettore SQLite è danneggiato?

  • Symptom: la ricerca nella memoria non restituisce risultati o risultati chiaramente irrilevanti
  • Fix: rm -rf memory/.index/ && openclaw reindex
  • Se nei log vengono visualizzati errori sqlite-vec: passa al backend JS tramite "vectorBackend": "js"

Frequently Asked Questions

D: Perché OpenClaw dimentica tutto dopo aver chiuso il terminale?

R: La causa più comune è che la directory memory/ non esiste. OpenClaw rilascia silenziosamente le note giornaliere quando manca la directory: nessun errore, nessun avviso. Crea la directory nella root del tuo progetto e verifica che un file datato venga visualizzato dopo la sessione successiva.

D: Il mio agente segue le istruzioni all'inizio ma le ignora in seguito nelle attività lunghe. Perché?

R: Questa è compattazione. Quando la finestra di contesto si riempie, OpenClaw riassume il contenuto precedente per fare spazio. I riassunti preservano i fatti, non le istruzioni comportamentali. Sposta le tue regole in MEMORY.md sotto una sezione ## [PINNED] in modo che vengano rilette dopo ogni ciclo di compattazione.

D: Dovrei usare memory-core o memory-wiki?

R: Inizia con memory-core. È a configurazione zero e gestisce bene la maggior parte dei carichi di lavoro degli sviluppatori singoli. Esegui l'upgrade a memory-wiki solo se la tua knowledge base supera ~50 fatti, è necessario il rilevamento delle contraddizioni o più agenti stanno scrivendo nello stesso archivio di memoria.

D: Quanti cicli di compattazione posso aspettarmi in un funzionamento autonomo di 2 ore?

R: Sono previsti 3-5 cicli di compattazione. La soglia si basa sul conteggio dei token, non sul tempo trascorso o sulla fase dell'attività e non è configurabile dall'utente nel plug-in memory-core predefinito. Questo è il motivo per cui il bloccaggio resistente alla compattazione in MEMORY.md è essenziale per le attività di lunga durata.

D: La ricerca in memoria restituisce risultati irrilevanti. Come posso risolverlo?

R: L'indice vettoriale SQLite è probabilmente danneggiato o obsoleto. Esegui rm -rf memory/.index/ && openclaw reindex per ricostruirlo dai tuoi file .md. È sicuro eseguirlo in qualsiasi momento. Se gli errori sqlite-vec persistono (comuni su ARM Linux e alcune configurazioni Windows), passa al backend di fallback JS.

D: Posso eseguire più agenti sulla stessa directory di memoria?

R: Yes, ma sono necessarie regole di proprietà esplicite. Le scritture simultanee sullo stesso file .md produrranno conflitti. Utilizza le sottodirectory per agente (memory/agent-a/, memory/agent-b/) con un memory/shared/MEMORY.md condiviso e utilizza memory-wiki per il vault condiviso.

D: Per quanto tempo le note giornaliere rimangono nella finestra di caricamento automatico?

R: All'avvio della sessione vengono caricate automaticamente solo le note giornaliere di oggi e di ieri. Le note più vecchie non rientrano nella finestra di caricamento automatico e sono accessibili solo tramite la ricerca semantica. Questo è previsto dalla progettazione: caricare ogni nota storica consumerebbe troppo budget per il contesto.

Verdetto finale: l'impostazione della memoria che funziona davvero

Recommended baseline per la maggior parte degli utenti: Plugin memory-core, directory memory/ creata prima della prima sessione, MEMORY.md con regole comportamentali in una sezione fissata chiaramente etichettata, note giornaliere aggiunte durante ogni sessione.

L’unico errore dietro l’80% dei problemi legati all’oblio: non creare la directory memory/ combinata con nessun blocco resistente alla compattazione in MEMORY.md. L'agente elimina il contesto al primo ciclo di compattazione e non ha nessun posto dove riscriverlo.

La tua lista di controllo delle azioni:

  • Crea la directory memory/ nella root del tuo progetto
  • Copia il modello MEMORY.md iniziale sopra e inserisci il contesto
  • Verifica che plugins.slots.memory sia impostato su "memory-core" (o il plugin scelto)
  • Aggiungi le tue 3-5 regole comportamentali più critiche in ## [PINNED] in MEMORY.md
  • Dopo la prima sessione, conferma che è stata scritta una nota giornaliera con data
  • Se la ricerca semantica sembra inadeguata, esegui openclaw reindex per ricostruire l'indice del vettore

L'architettura è solida una volta che la capisci. La maggior parte dei problemi di dimenticanza si risolvono entro 10 minuti dopo aver seguito questa lista di controllo.