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,
}),
],
})
行为行为的直接链接
输入处理输入处理的直接链接
- 从 request context 中检索
threadId - 从存储中获取历史消息(按创建日期降序排列)
- 筛除 system 消息(它们不应存储在数据库中)
- 将历史消息与传入消息合并,并按 ID 避免重复
- 为历史消息添加
source: 'memory'标签
输出处理输出处理的直接链接
- 从 request context 中检索
threadId - 如果 memory 配置中设置了
readOnly,则跳过持久化 - 从消息中筛除未完成的 Tool 调用
- 将新的用户输入和 assistant 响应消息持久化到存储中
- 更新线程的
updatedAt时间戳