MessageHistory
MessageHistory 是一個 hybrid 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
Processor 識別符,設定為 'message-history'
name:
string
Processor 顯示名稱,設定為 'MessageHistory'
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>
將新訊息(用戶輸入及助理回應)持久保存至儲存空間,系統訊息除外
進階使用範例進階使用範例 的直接連結
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,
}),
],
})
行為行為 的直接連結
輸入處理輸入處理 的直接連結
- 從請求內容中擷取
threadId - 從儲存空間擷取歷史訊息(按建立日期降序排列)
- 篩除系統訊息(它們不應儲存在資料庫中)
- 將歷史訊息與傳入訊息合併,並按 ID 避免重複
- 為歷史訊息加入
source: 'memory'標籤
輸出處理輸出處理 的直接連結
- 從請求內容中擷取
threadId - 如記憶設定中已設定
readOnly,則略過持久保存 - 從訊息中篩除未完成的 Tool 呼叫
- 將新的用戶輸入及助理回應訊息持久保存至儲存空間
- 更新 Thread 的
updatedAt時間戳記