Memoria attiva
La memoria attiva è un sotto-agente di memoria bloccante opzionale di proprietà del plugin che viene eseguito prima della risposta principale per le sessioni conversazionali idonee. Esiste perché la maggior parte dei sistemi di memoria è capace ma reattiva. Si affida all’agente principale per decidere quando cercare nella memoria, oppure all’utente per dire cose come “ricorda questo” o “cerca nella memoria”. A quel punto, il momento in cui la memoria avrebbe reso la risposta naturale è già passato. La memoria attiva offre al sistema una possibilità limitata di far emergere memoria pertinente prima che venga generata la risposta principale.Incolla questo nel tuo agente
Incolla questo nel tuo agente se vuoi abilitare la memoria attiva con una configurazione autonoma e sicura per impostazione predefinita:main, lo mantiene limitato per impostazione predefinita alle
sessioni in stile messaggio diretto, gli consente di ereditare prima il modello della sessione corrente e
consente comunque il fallback remoto integrato se non è disponibile alcun modello esplicito o ereditato.
Dopo, riavvia il gateway:
Attiva la memoria attiva
La configurazione più sicura è:- abilitare il plugin
- scegliere come target un agente conversazionale
- mantenere il logging attivo solo durante la regolazione
openclaw.json:
plugins.entries.active-memory.enabled: trueattiva il pluginconfig.agents: ["main"]abilita la memoria attiva solo per l’agentemainconfig.allowedChatTypes: ["direct"]mantiene la memoria attiva abilitata solo per impostazione predefinita per le sessioni in stile messaggio diretto- se
config.modelnon è impostato, la memoria attiva eredita prima il modello della sessione corrente config.modelFallbackPolicy: "default-remote"mantiene come impostazione predefinita il fallback remoto integrato quando non è disponibile alcun modello esplicito o ereditatoconfig.promptStyle: "balanced"usa lo stile di prompt predefinito per uso generale per la modalitàrecent- la memoria attiva viene comunque eseguita solo su sessioni di chat persistenti interattive idonee
Come vederla
La memoria attiva inserisce contesto di sistema nascosto per il modello. Non espone tag raw<active_memory_plugin>...</active_memory_plugin> al client.
Interruttore della sessione
Usa il comando del plugin quando vuoi mettere in pausa o riprendere la memoria attiva per la sessione di chat corrente senza modificare la configurazione:plugins.entries.active-memory.enabled, il targeting dell’agente o altre
configurazioni globali.
Se vuoi che il comando scriva la configurazione e metta in pausa o riprenda la memoria attiva per
tutte le sessioni, usa la forma globale esplicita:
plugins.entries.active-memory.config.enabled. Lascia
plugins.entries.active-memory.enabled attivo in modo che il comando resti disponibile per
riattivare la memoria attiva in seguito.
Se vuoi vedere cosa sta facendo la memoria attiva in una sessione in tempo reale, attiva la modalità
verbose per quella sessione:
- una riga di stato della memoria attiva come
Active Memory: ok 842ms recent 34 chars - un riepilogo di debug leggibile come
Active Memory Debug: Lemon pepper wings with blue cheese.
Quando viene eseguita
La memoria attiva usa due criteri:- Adesione esplicita nella configurazione
Il plugin deve essere abilitato e l’id dell’agente corrente deve comparire in
plugins.entries.active-memory.config.agents. - Idoneità rigorosa in fase di esecuzione Anche quando è abilitata e selezionata, la memoria attiva viene eseguita solo per sessioni di chat persistenti interattive idonee.
Tipi di sessione
config.allowedChatTypes controlla quali tipi di conversazioni possono eseguire la Memoria
attiva.
Il valore predefinito è:
Dove viene eseguita
La memoria attiva è una funzionalità di arricchimento conversazionale, non una funzionalità di inferenza valida per tutta la piattaforma.| Superficie | Esegue la memoria attiva? |
|---|---|
| Sessioni persistenti di chat in Control UI / web chat | Sì, se il plugin è abilitato e l’agente è selezionato |
| Altre sessioni di canale interattive sullo stesso percorso di chat persistente | Sì, se il plugin è abilitato e l’agente è selezionato |
| Esecuzioni headless one-shot | No |
| Esecuzioni heartbeat/background | No |
Percorsi interni generici agent-command | No |
| Esecuzione di sotto-agenti/helper interni | No |
Perché usarla
Usa la memoria attiva quando:- la sessione è persistente e rivolta all’utente
- l’agente ha una memoria a lungo termine significativa da cercare
- continuità e personalizzazione contano più del puro determinismo del prompt
- preferenze stabili
- abitudini ricorrenti
- contesto utente a lungo termine che dovrebbe emergere in modo naturale
- automazione
- worker interni
- attività API one-shot
- contesti in cui una personalizzazione nascosta sarebbe sorprendente
Come funziona
La forma di esecuzione è: Il sotto-agente di memoria bloccante può usare solo:memory_searchmemory_get
NONE.
Modalità di query
config.queryMode controlla quanta parte della conversazione vede il sotto-agente di memoria bloccante.
Stili di prompt
config.promptStyle controlla quanto il sotto-agente di memoria bloccante sia
propenso o rigoroso quando decide se restituire memoria.
Stili disponibili:
balanced: valore predefinito per uso generale per la modalitàrecentstrict: il meno propenso; ideale quando vuoi pochissima influenza dal contesto vicinocontextual: il più favorevole alla continuità; ideale quando la cronologia della conversazione dovrebbe contare di piùrecall-heavy: più disposto a far emergere memoria anche con corrispondenze meno forti ma comunque plausibiliprecision-heavy: preferisce in modo aggressivoNONEa meno che la corrispondenza non sia ovviapreference-only: ottimizzato per preferiti, abitudini, routine, gusti e fatti personali ricorrenti
config.promptStyle non è impostato:
config.promptStyle esplicitamente, quell’override prevale.
Esempio:
Criterio di fallback del modello
Seconfig.model non è impostato, la Memoria attiva prova a risolvere un modello in questo ordine:
config.modelFallbackPolicy controlla l’ultimo passaggio.
Valore predefinito:
resolved-only se vuoi che la Memoria attiva salti il recupero invece di usare
il valore predefinito remoto integrato quando non è disponibile alcun modello esplicito o
ereditato.
Meccanismi di uscita avanzati
Queste opzioni intenzionalmente non fanno parte della configurazione consigliata.config.thinking può sostituire il livello di thinking del sotto-agente di memoria bloccante:
config.promptAppend aggiunge istruzioni supplementari per l’operatore dopo il prompt predefinito della Memoria
attiva e prima del contesto della conversazione:
config.promptOverride sostituisce il prompt predefinito della Memoria attiva. OpenClaw
continua comunque ad aggiungere dopo il contesto della conversazione:
NONE
oppure un contesto compatto di fatti utente per il modello principale.
message
Viene inviato solo l’ultimo messaggio dell’utente.
- vuoi il comportamento più veloce
- vuoi il bias più forte verso il recupero di preferenze stabili
- i turni successivi non hanno bisogno del contesto conversazionale
- inizia intorno a
3000a5000ms
recent
Vengono inviati l’ultimo messaggio dell’utente più una piccola coda conversazionale recente.
- vuoi un miglior equilibrio tra velocità e ancoraggio conversazionale
- le domande di follow-up spesso dipendono dagli ultimi pochi turni
- inizia intorno a
15000ms
full
L’intera conversazione viene inviata al sotto-agente di memoria bloccante.
- la massima qualità del recupero conta più della latenza
- la conversazione contiene impostazioni importanti molto indietro nel thread
- aumentalo in modo significativo rispetto a
messageorecent - inizia intorno a
15000ms o più, a seconda della dimensione del thread
Persistenza della trascrizione
Le esecuzioni del sotto-agente di memoria bloccante della memoria attiva creano una vera trascrizionesession.jsonl durante la chiamata del sotto-agente di memoria bloccante.
Per impostazione predefinita, quella trascrizione è temporanea:
- viene scritta in una directory temporanea
- viene usata solo per l’esecuzione del sotto-agente di memoria bloccante
- viene eliminata immediatamente dopo la fine dell’esecuzione
config.transcriptDir.
Usalo con attenzione:
- le trascrizioni del sotto-agente di memoria bloccante possono accumularsi rapidamente nelle sessioni molto attive
- la modalità di query
fullpuò duplicare molto contesto conversazionale - queste trascrizioni contengono contesto nascosto del prompt e memorie recuperate
Configurazione
Tutta la configurazione della memoria attiva si trova in:| Chiave | Tipo | Significato |
|---|---|---|
enabled | boolean | Abilita il plugin stesso |
config.agents | string[] | ID agente che possono usare la memoria attiva |
config.model | string | Riferimento facoltativo al modello del sotto-agente di memoria bloccante; se non è impostato, la memoria attiva usa il modello della sessione corrente |
config.queryMode | "message" | "recent" | "full" | Controlla quanta parte della conversazione vede il sotto-agente di memoria bloccante |
config.promptStyle | "balanced" | "strict" | "contextual" | "recall-heavy" | "precision-heavy" | "preference-only" | Controlla quanto il sotto-agente di memoria bloccante sia propenso o rigoroso nel decidere se restituire memoria |
config.thinking | "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | Override avanzato del thinking per il sotto-agente di memoria bloccante; valore predefinito off per velocità |
config.promptOverride | string | Sostituzione avanzata completa del prompt; non consigliata per l’uso normale |
config.promptAppend | string | Istruzioni supplementari avanzate aggiunte al prompt predefinito o sostituito |
config.timeoutMs | number | Timeout rigido per il sotto-agente di memoria bloccante |
config.maxSummaryChars | number | Numero massimo totale di caratteri consentiti nel riepilogo di active-memory |
config.logging | boolean | Emette log della memoria attiva durante la regolazione |
config.persistTranscripts | boolean | Mantiene su disco le trascrizioni del sotto-agente di memoria bloccante invece di eliminare i file temporanei |
config.transcriptDir | string | Directory relativa delle trascrizioni del sotto-agente di memoria bloccante sotto la cartella delle sessioni dell’agente |
| Chiave | Tipo | Significato |
|---|---|---|
config.maxSummaryChars | number | Numero massimo totale di caratteri consentiti nel riepilogo di active-memory |
config.recentUserTurns | number | Turni utente precedenti da includere quando queryMode è recent |
config.recentAssistantTurns | number | Turni assistente precedenti da includere quando queryMode è recent |
config.recentUserChars | number | Numero massimo di caratteri per turno utente recente |
config.recentAssistantChars | number | Numero massimo di caratteri per turno assistente recente |
config.cacheTtlMs | number | Riutilizzo della cache per query identiche ripetute |
Configurazione consigliata
Inizia conrecent.
/verbose on nella
sessione invece di cercare un comando di debug separato per active-memory.
Poi passa a:
messagese vuoi una latenza inferiorefullse decidi che il contesto aggiuntivo vale un sotto-agente di memoria bloccante più lento
Debug
Se la memoria attiva non compare dove ti aspetti:- Conferma che il plugin sia abilitato in
plugins.entries.active-memory.enabled. - Conferma che l’ID dell’agente corrente sia elencato in
config.agents. - Conferma che il test avvenga tramite una sessione di chat persistente interattiva.
- Attiva
config.logging: truee osserva i log del gateway. - Verifica che la ricerca in memoria funzioni con
openclaw memory status --deep.
maxSummaryChars
- riduci
queryMode - riduci
timeoutMs - riduci il numero di turni recenti
- riduci i limiti di caratteri per turno