> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # MessageHistory `MessageHistory` は、メッセージ履歴の取得と永続化の両方を処理する **ハイブリッド Processor** です。入力時にはストレージから過去のメッセージを取得して会話の先頭に追加し、出力時には新しいメッセージをストレージに永続化します。 ## 使用例 ```typescript import { MessageHistory } from '@mastra/core/processors' const processor = new MessageHistory({ storage: memoryStorage, lastMessages: 50, }) ``` ## コンストラクターパラメーター **options** (`MessageHistoryOptions`): メッセージ履歴 Processor の設定オプション **options.storage** (`MemoryStorage`): メッセージの取得と永続化に使用するストレージインスタンス **options.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`): ストレージから過去のメッセージを取得し、メッセージリストに追加します **processOutputResult** (`(args: { messages: MastraDBMessage[]; messageList: MessageList; abort: (reason?: string) => never; tracingContext?: TracingContext; requestContext?: RequestContext }) => Promise`): System メッセージを除き、新しいメッセージ(ユーザー入力と Assistant の応答)をストレージに永続化します ## 詳細な使用例 ```typescript 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, }), ], }) ``` ## 動作 ### 入力処理 1. Request コンテキストから `threadId` を取得します 2. ストレージから過去のメッセージを取得します(作成日時の降順) 3. System メッセージを除外します(データベースに保存しないため) 4. ID の重複を避けながら、過去のメッセージと受信メッセージを統合します 5. 過去のメッセージに `source: 'memory'` タグを追加します ### 出力処理 1. Request コンテキストから `threadId` を取得します 2. Memory 設定で `readOnly` が指定されている場合は永続化をスキップします 3. メッセージから未完了の Tool 呼び出しを除外します 4. 新しいユーザー入力と Assistant の応答メッセージをストレージに永続化します 5. Thread の `updatedAt` タイムスタンプを更新します ## 関連項目 - [Guardrails](https://mastra.zisheng.pro/ja/docs/agents/guardrails)