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,
}),
],
})
行為「行為」的直接連結
輸入處理「輸入處理」的直接連結
- 從請求內容中擷取
threadId - 從儲存空間擷取歷史訊息(依建立日期降冪排列)
- 篩除系統訊息(這些訊息不應儲存在資料庫中)
- 將歷史訊息與傳入訊息合併,並依 ID 避免重複
- 為歷史訊息加入
source: 'memory'標籤
輸出處理「輸出處理」的直接連結
- 從請求內容中擷取
threadId - 若記憶體設定中已設定
readOnly,則略過保存 - 從訊息中篩除未完成的 Tool 呼叫
- 將新的使用者輸入與助理回應訊息保存至儲存空間
- 更新討論串的
updatedAt時間戳記