WorkingMemory
WorkingMemory est un Processor d'entrée qui injecte les données de la mémoire de travail sous la forme d'un message système. Il récupère les informations persistantes dans le stockage et les met en forme comme instructions pour le LLM, ce qui permet à l'Agent de conserver le contexte relatif aux utilisateurs d'une conversation à l'autre.
Exemple d'utilisationLien direct vers Exemple d'utilisation
import { WorkingMemory } from '@mastra/core/processors'
const processor = new WorkingMemory({
storage: memoryStorage,
scope: 'resource',
template: {
format: 'markdown',
content: `# User Profile
- **Name**:
- **Preferences**:
- **Goals**:
`,
},
})
Paramètres du constructeurLien direct vers Paramètres du constructeur
options:
Options
Options de configuration du Processor de mémoire de travail
Options
storage:
MemoryStorage
Instance de stockage permettant de récupérer les données de la mémoire de travail
template?:
WorkingMemoryTemplate
Modèle qui définit le format et la structure de la mémoire de travail
WorkingMemoryTemplate
format:
'markdown' | 'json'
Format du contenu de la mémoire de travail
content:
string
Contenu du modèle qui définit la structure des données de la mémoire de travail
scope?:
'thread' | 'resource'
Portée de la mémoire de travail. 'thread' la limite au thread actuel, tandis que 'resource' la partage entre tous les threads de la ressource
useVNext?:
boolean
Utilise le format d'instructions de nouvelle génération avec des recommandations améliorées
readOnly?:
boolean
Lorsque la valeur est true, la mémoire de travail est fournie comme contexte en lecture seule. Les données sont injectées dans la conversation, mais sans le Tool updateWorkingMemory ni les instructions de mise à jour. Utile pour les Agents qui doivent consulter la mémoire de travail sans la modifier.
templateProvider?:
{ getWorkingMemoryTemplate(args: { memoryConfig?: MemoryConfig }): Promise<WorkingMemoryTemplate | null> }
Provider de modèle dynamique pour la résolution du modèle lors de l'exécution
logger?:
IMastraLogger
Instance facultative du Logger pour une journalisation structurée
Valeur renvoyéeLien direct vers Valeur renvoyée
id:
string
Identifiant du Processor défini sur 'working-memory'
name:
string
Nom d'affichage du Processor défini sur 'WorkingMemory'
defaultWorkingMemoryTemplate:
string
Modèle Markdown par défaut utilisé lorsqu'aucun modèle personnalisé n'est fourni
processInput:
(args: { messages: MastraDBMessage[]; messageList: MessageList; abort: (reason?: string) => never; requestContext?: RequestContext }) => Promise<MessageList | MastraDBMessage[]>
Récupère la mémoire de travail et l’ajoute comme message système à la liste des messages
Exemple d'utilisation avancéeLien direct vers Exemple d'utilisation avancée
src/mastra/agents/personalized-agent.ts
import { Agent } from '@mastra/core/agent'
import { WorkingMemory, MessageHistory } from '@mastra/core/processors'
import { PostgresStorage } from '@mastra/pg'
const storage = new PostgresStorage({
connectionString: process.env.DATABASE_URL,
})
export const agent = new Agent({
id: 'personalized-agent',
name: 'personalized-agent',
instructions: 'You are a helpful assistant that remembers user preferences',
model: 'openai/gpt-5.6-sol',
inputProcessors: [
new WorkingMemory({
storage,
scope: 'resource',
template: {
format: 'markdown',
content: `# User Information
- **Name**:
- **Location**:
- **Preferences**:
- **Communication Style**:
- **Current Projects**:
`,
},
}),
new MessageHistory({ storage, lastMessages: 50 }),
],
outputProcessors: [new MessageHistory({ storage })],
})
Exemple au format JSONLien direct vers Exemple au format JSON
import { WorkingMemory } from '@mastra/core/processors'
const processor = new WorkingMemory({
storage: memoryStorage,
scope: 'resource',
template: {
format: 'json',
content: JSON.stringify({
user: {
name: { type: 'string' },
preferences: { type: 'object' },
goals: { type: 'array' },
},
}),
},
})
ComportementLien direct vers Comportement
Traitement de l'entréeLien direct vers Traitement de l'entrée
- Récupère
threadIdetresourceIddans le contexte de requête - Selon la portée, récupère la mémoire de travail depuis :
- Les métadonnées du thread (
scope: 'thread') - L'enregistrement de la ressource (
scope: 'resource')
- Les métadonnées du thread (
- Résout le modèle (à partir du Provider, des options ou de la valeur par défaut)
- Génère les instructions système selon le mode :
- Mode normal : inclut les recommandations pour stocker et mettre à jour les informations, la structure du modèle et les données actuelles
- Mode lecture seule (
readOnly: true) : inclut uniquement les données actuelles comme contexte, sans instructions de mise à jour
- Ajoute l'instruction comme message système avec le tag
source: 'memory'
Mises à jour de la mémoire de travailLien direct vers Mises à jour de la mémoire de travail
Les mises à jour de la mémoire de travail s'effectuent au moyen du Tool updateWorkingMemory fourni par la classe Memory, et non au moyen de ce Processor. Le Processor se charge uniquement d'injecter dans les conversations l'état actuel de la mémoire de travail.
Modèle par défautLien direct vers Modèle par défaut
Si aucun modèle n'est fourni, le Processor utilise un modèle Markdown par défaut avec des champs pour :
- Prénom, nom
- Lieu, profession
- Centres d'intérêt, objectifs
- Événements, faits, projets