跳至主要內容

MessageHistory

MessageHistory 是一種混合式處理器,同時負責擷取及保存訊息記錄。處理輸入時,它會從儲存空間擷取歷史訊息,並將其加到對話前方。處理輸出時,它會將新訊息保存至儲存空間。

使用範例
「使用範例」的直接連結

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

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

建構函式參數
「建構函式參數」的直接連結

options:

MessageHistoryOptions
訊息記錄處理器的設定選項
MessageHistoryOptions

storage:

MemoryStorage
用於擷取及保存訊息的儲存空間執行個體

lastMessages?:

number
要擷取的歷史訊息數量上限。若未指定,則擷取所有訊息

回傳值
「回傳值」的直接連結

id:

string
設為 'message-history' 的處理器識別碼

name:

string
設為 '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,
}),
],
})

行為
「行為」的直接連結

輸入處理
「輸入處理」的直接連結

  1. 從請求內容中擷取 threadId
  2. 從儲存空間擷取歷史訊息(依建立日期降冪排列)
  3. 篩除系統訊息(這些訊息不應儲存在資料庫中)
  4. 將歷史訊息與傳入訊息合併,並依 ID 避免重複
  5. 為歷史訊息加入 source: 'memory' 標籤

輸出處理
「輸出處理」的直接連結

  1. 從請求內容中擷取 threadId
  2. 若記憶體設定中已設定 readOnly,則略過保存
  3. 從訊息中篩除未完成的 Tool 呼叫
  4. 將新的使用者輸入與助理回應訊息保存至儲存空間
  5. 更新討論串的 updatedAt 時間戳記