MessageHistory
MessageHistory は、メッセージ履歴の取得と永続化の両方を処理する ハイブリッド Processor です。入力時にはストレージから過去のメッセージを取得して会話の先頭に追加し、出力時には新しいメッセージをストレージに永続化します。
使用例使用例への直接リンク
import { MessageHistory } from '@mastra/core/processors'
const processor = new MessageHistory({
storage: memoryStorage,
lastMessages: 50,
})
コンストラクターパラメーターコンストラクターパラメーターへの直接リンク
options:
MessageHistoryOptions
メッセージ履歴 Processor の設定オプション
MessageHistoryOptions
storage:
MemoryStorage
メッセージの取得と永続化に使用するストレージインスタンス
lastMessages?:
number
取得する過去のメッセージの最大数。指定しない場合はすべてのメッセージを取得します
戻り値戻り値への直接リンク
id:
string
'message-history' に設定された Processor の識別子
name:
string
'MessageHistory' に設定された Processor の表示名
processInput:
(args: { messages: MastraDBMessage[]; messageList: MessageList; abort: (reason?: string) => never; tracingContext?: TracingContext; requestContext?: RequestContext }) => Promise<MessageList | MastraDBMessage[]>
ストレージから過去のメッセージを取得し、メッセージリストに追加します
processOutputResult:
(args: { messages: MastraDBMessage[]; messageList: MessageList; abort: (reason?: string) => never; tracingContext?: TracingContext; requestContext?: RequestContext }) => Promise<MessageList>
System メッセージを除き、新しいメッセージ(ユーザー入力と Assistant の応答)をストレージに永続化します
詳細な使用例詳細な使用例への直接リンク
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,
}),
],
})
動作動作への直接リンク
入力処理入力処理への直接リンク
- Request コンテキストから
threadIdを取得します - ストレージから過去のメッセージを取得します(作成日時の降順)
- System メッセージを除外します(データベースに保存しないため)
- ID の重複を避けながら、過去のメッセージと受信メッセージを統合します
- 過去のメッセージに
source: 'memory'タグを追加します
出力処理出力処理への直接リンク
- Request コンテキストから
threadIdを取得します - Memory 設定で
readOnlyが指定されている場合は永続化をスキップします - メッセージから未完了の Tool 呼び出しを除外します
- 新しいユーザー入力と Assistant の応答メッセージをストレージに永続化します
- Thread の
updatedAtタイムスタンプを更新します