Classe Memory
La classe Memory fournit dans Mastra un système fiable de gestion de l'historique des conversations et du stockage des messages par thread. Elle permet de conserver les conversations, d'effectuer des recherches sémantiques et de récupérer efficacement les messages. Vous devez configurer un Provider de stockage pour l'historique des conversations. Si vous activez le rappel sémantique, vous devrez également fournir un stockage vectoriel et un modèle d'embedding.
Exemple d'utilisationLien direct vers Exemple d'utilisation
src/mastra/agents/test-agent.ts
import { Memory } from '@mastra/memory'
import { Agent } from '@mastra/core/agent'
export const agent = new Agent({
id: 'test-agent',
name: 'test-agent',
instructions: 'You are an agent with memory.',
model: 'openai/gpt-5.6-sol',
memory: new Memory({
options: {
workingMemory: {
enabled: true,
},
},
}),
})
remarque
Pour activer workingMemory sur un Agent, un Provider de stockage doit être configuré sur votre instance Mastra principale. Pour en savoir plus, consultez la classe Mastra.
Paramètres du constructeurLien direct vers Paramètres du constructeur
storage?:
MastraCompositeStore
Implémentation de stockage permettant de conserver les données de la mémoire. Utilise par défaut
new DefaultStorage({ config: { url: "file:memory.db" } }) si elle n'est pas fournie.vector?:
MastraVector | false
Stockage vectoriel destiné aux fonctionnalités de recherche sémantique. Définissez cette valeur sur
false pour désactiver les opérations vectorielles.embedder?:
EmbeddingModel<string> | EmbeddingModelV2<string>
Instance du modèle d'embedding pour les embeddings vectoriels. Obligatoire lorsque le rappel sémantique est activé.
options?:
MemoryConfig
Options de configuration de Memory.
lastMessages?:
number | false
Nombre de messages les plus récents à inclure dans le contexte. Définissez cette valeur sur
false pour désactiver entièrement la fonctionnalité d'historique des messages (les messages ne sont ni chargés dans le contexte ni enregistrés). Utilisez Number.MAX_SAFE_INTEGER pour récupérer tous les messages sans limite. Pour charger des messages sans en enregistrer de nouveaux, utilisez l'option readOnly.readOnly?:
boolean
Lorsque la valeur est true, empêche la mémoire d'enregistrer de nouveaux messages et fournit la mémoire de travail comme contexte en lecture seule (sans le Tool updateWorkingMemory). Utile pour les opérations en lecture seule telles que les aperçus, les Agents de routage internes ou les sous-Agents qui doivent consulter la mémoire sans la modifier.
semanticRecall?:
boolean | { topK: number; messageRange: number | { before: number; after: number }; scope?: 'thread' | 'resource' }
Active la recherche sémantique dans l'historique des messages. Peut être un booléen ou un objet contenant des options de configuration. Lorsque cette fonctionnalité est activée, le stockage vectoriel et le modèle d'embedding doivent être configurés. La valeur par défaut de topK est 4 et celle de messageRange est {before: 1, after: 1}.
workingMemory?:
WorkingMemory
Configuration de la fonctionnalité de mémoire de travail. Peut être
{ enabled: boolean; template?: string; schema?: ZodObject<any> | JSONSchema7; scope?: 'thread' | 'resource' } ou { enabled: boolean } pour la désactiver.observationalMemory?:
boolean | ObservationalMemoryOptions
Active Observational Memory pour la mémoire agentique à contexte long. Définissez cette valeur sur
true pour utiliser les valeurs par défaut, ou transmettez un objet de configuration pour personnaliser les budgets de tokens, les modèles et la portée. Pour en savoir plus sur la configuration, consultez la référence d'Observational Memory.generateTitle?:
boolean | { model: DynamicArgument<MastraLanguageModel>; instructions?: DynamicArgument<string> }
Contrôle la génération automatique du titre du thread à partir de la transcription de la conversation. Peut être un booléen ou un objet contenant un modèle et des instructions personnalisés.
Valeur renvoyéeLien direct vers Valeur renvoyée
memory:
Memory
Nouvelle instance Memory avec la configuration indiquée.
Exemple d'utilisation avancéeLien direct vers Exemple d'utilisation avancée
src/mastra/agents/test-agent.ts
import { Memory } from '@mastra/memory'
import { Agent } from '@mastra/core/agent'
import { LibSQLStore, LibSQLVector } from '@mastra/libsql'
export const agent = new Agent({
name: 'test-agent',
instructions: 'You are an agent with memory.',
model: 'openai/gpt-5.6-sol',
memory: new Memory({
storage: new LibSQLStore({
id: 'test-agent-storage',
url: 'file:./working-memory.db',
}),
vector: new LibSQLVector({
id: 'test-agent-vector',
url: 'file:./vector-memory.db',
}),
options: {
lastMessages: 10,
semanticRecall: {
topK: 3,
messageRange: 2,
scope: 'resource',
},
workingMemory: {
enabled: true,
},
generateTitle: true,
},
}),
})
PostgreSQL avec configuration de l'indexLien direct vers PostgreSQL avec configuration de l'index
src/mastra/agents/pg-agent.ts
import { Memory } from '@mastra/memory'
import { Agent } from '@mastra/core/agent'
import { ModelRouterEmbeddingModel } from '@mastra/core/llm'
import { PgStore, PgVector } from '@mastra/pg'
export const agent = new Agent({
name: 'pg-agent',
instructions: 'You are an agent with optimized PostgreSQL memory.',
model: 'openai/gpt-5.6-sol',
memory: new Memory({
storage: new PgStore({
id: 'pg-agent-storage',
connectionString: process.env.DATABASE_URL,
}),
vector: new PgVector({
id: 'pg-agent-vector',
connectionString: process.env.DATABASE_URL,
}),
embedder: new ModelRouterEmbeddingModel('openai/text-embedding-3-small'),
options: {
lastMessages: 20,
semanticRecall: {
topK: 5,
messageRange: 3,
scope: 'resource',
indexConfig: {
type: 'hnsw', // Use HNSW for better performance
metric: 'dotproduct', // Optimal for OpenAI embeddings
m: 16, // Number of bi-directional links
efConstruction: 64, // Construction-time candidate list size
},
},
workingMemory: {
enabled: true,
},
},
}),
})