跳到主要内容

MessageHistory

MessageHistory 是一个混合 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>
将新消息(用户输入和 assistant 响应)持久化到存储中,system 消息除外

扩展用法示例
扩展用法示例的直接链接

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. 从 request context 中检索 threadId
  2. 从存储中获取历史消息(按创建日期降序排列)
  3. 筛除 system 消息(它们不应存储在数据库中)
  4. 将历史消息与传入消息合并,并按 ID 避免重复
  5. 为历史消息添加 source: 'memory' 标签

输出处理
输出处理的直接链接

  1. 从 request context 中检索 threadId
  2. 如果 memory 配置中设置了 readOnly,则跳过持久化
  3. 从消息中筛除未完成的 Tool 调用
  4. 将新的用户输入和 assistant 响应消息持久化到存储中
  5. 更新线程的 updatedAt 时间戳