본문으로 건너뛰기

메시지 기록

그만큼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. Memory 구성에 readOnly가 설정되어 있으면 유지를 건너뜁니다.
  3. 메시지에서 불완전한 Tool 호출을 필터링합니다.
  4. 새 사용자 입력 및 어시스턴트 응답 메시지를 스토리지에 유지합니다.
  5. 스레드의 updatedAt 타임스탬프를 업데이트합니다.