Aller au contenu principal

MessageHistory

MessageHistory est un Processor hybride qui gère à la fois la récupération et la persistance de l’historique des messages. En entrée, il récupère les anciens messages depuis le stockage et les ajoute au début de la conversation. En sortie, il conserve les nouveaux messages dans le stockage.

Exemple d’utilisation
Lien direct vers Exemple d’utilisation

import { MessageHistory } from '@mastra/core/processors'

const processor = new MessageHistory({
storage: memoryStorage,
lastMessages: 50,
})

Paramètres du constructeur
Lien direct vers Paramètres du constructeur

options:

MessageHistoryOptions
Options de configuration du Processor d’historique des messages
MessageHistoryOptions

storage:

MemoryStorage
Instance de stockage utilisée pour récupérer et conserver les messages

lastMessages?:

number
Nombre maximal d’anciens messages à récupérer. Si cette valeur n’est pas indiquée, tous les messages sont récupérés

Valeur renvoyée
Lien direct vers Valeur renvoyée

id:

string
Identifiant du Processor défini sur 'message-history'

name:

string
Nom d’affichage du Processor défini sur 'MessageHistory'

processInput:

(args: { messages: MastraDBMessage[]; messageList: MessageList; abort: (reason?: string) => never; tracingContext?: TracingContext; requestContext?: RequestContext }) => Promise<MessageList | MastraDBMessage[]>
Récupère les anciens messages depuis le stockage et les ajoute à la liste de messages

processOutputResult:

(args: { messages: MastraDBMessage[]; messageList: MessageList; abort: (reason?: string) => never; tracingContext?: TracingContext; requestContext?: RequestContext }) => Promise<MessageList>
Conserve les nouveaux messages (entrée de l’utilisateur et réponse de l’assistant) dans le stockage, à l’exception des messages système

Exemple d’utilisation avancée
Lien direct vers Exemple d’utilisation avancée

src/mastra/agents/memory-agent.ts
import { Agent } from '@mastra/core/agent'
import { 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: 'memory-agent',
name: 'memory-agent',
instructions: 'You are a helpful assistant with conversation memory',
model: 'openai/gpt-5.6-sol',
inputProcessors: [
new MessageHistory({
storage,
lastMessages: 100,
}),
],
outputProcessors: [
new MessageHistory({
storage,
}),
],
})

Comportement
Lien direct vers Comportement

Traitement de l’entrée
Lien direct vers Traitement de l’entrée

  1. Récupère threadId depuis le contexte de requête.
  2. Récupère les anciens messages depuis le stockage, classés par date de création décroissante.
  3. Exclut les messages système, qui ne doivent pas être stockés dans la base de données.
  4. Fusionne les anciens messages avec les messages entrants en évitant les doublons d’ID.
  5. Ajoute les anciens messages avec le tag source: 'memory'.

Traitement de la sortie
Lien direct vers Traitement de la sortie

  1. Récupère threadId depuis le contexte de requête.
  2. Ignore la persistance si readOnly est défini dans la configuration de Memory.
  3. Exclut des messages les appels de Tools incomplets.
  4. Conserve dans le stockage les nouveaux messages d’entrée de l’utilisateur et de réponse de l’assistant.
  5. Met à jour l’horodatage updatedAt du fil de discussion.