跳到主要内容

Memory

File-based Agent 从默认导出 Memory 实例的 memory.ts 文件获取 memory。本页介绍基于文件的约定;有关消息历史、语义召回、storage 和处理器,请参阅 memory 文档。

如果没有 memory.tsconfig.memory,Agent 默认没有 memory。除非你自行传入先前的上下文,否则每次 generate()stream() 调用开始时都不会记住对话状态。

快速开始
快速开始的直接链接

在 Agent 的 config.ts 旁创建 memory.ts

src/mastra/agents/weather/memory.ts
import { Memory } from '@mastra/memory'

export default new Memory()

导出的实例将成为 Agent 的 memory。如果你的应用在主 Mastra 实例上配置了 storage Provider,memory 数据会存储在那里。有关更多信息,请参阅 storage

调用 Agent 时使用相同的 resourcethread 值,即可继续对话:

src/app/weather-chat.ts
const response = await weatherAgent.generate('Remember that I prefer Celsius.', {
memory: {
resource: 'user-123',
thread: 'weather-chat',
},
})

配置 memory
配置 memory的直接链接

如果默认行为无法满足需求,请向 new Memory() 传入选项。

src/mastra/agents/weather/memory.ts
import { Memory } from '@mastra/memory'

export default new Memory({
options: {
lastMessages: 20,
workingMemory: {
enabled: true,
scope: 'resource',
},
},
})

有关构造函数选项,请查看 Memory 参考。以下页面介绍相关的 memory 功能:

  • Storage:配置 memory 数据的持久化。
  • 语义召回:按语义检索相关的过往消息。
  • Memory 处理器:在 memory 将消息添加到模型上下文之前,对消息进行筛选、裁剪或转换。

与 config 的优先级
与 config 的优先级的直接链接

config.memory 优先于 memory.ts。如果两者都不存在,组装后的 File-based Agent 将没有 memory。有关完整的合并表,请参阅 config.ts 优先级