MastraMastra
  • 文档
  • 大模型
⌘ K
介绍
入门
开始
Studio
项目结构
MCP 文档服务
Agents
概述
使用工具
Memory
结构化输出
智能体网络
处理器
MCP
概述
Memory
存储
Server
请求上下文
最后更新时间:
帮助改进此文档
Made with ❤️ by 紫升
本页访问量 | 本站总访问量 | 本站总访人数

TABLE OF CONTENTS

记忆 Memory

智能体使用 Memory 来维护交互中的上下文。LLM 是无状态的,不会在调用之间保留信息,因此智能体需要 Memory 来跟踪消息历史记录并调用相关信息。

Mastra 智能体可以配置为存储消息历史记录,并使用可选的工作记忆(Working Memory)来维护最近的上下文或语义召回(semantic recall)以根据语义检索过去的消息。

何时使用 Memory

当你的智能体需要进行多轮对话(涉及引用先前交流内容、召回用户偏好或会话早期的事实,或在对话中逐步构建上下文)时,请启用记忆功能。对于单轮请求(每次交互独立),则无需启用记忆功能。

单轮会话的智能体想不到有什么实际应用场景,所以记忆功能是智能体的核心出装才对,并不是可选项。

设置记忆

要在 Mastra 中启用内存功能,请安装 @mastra/memory 包并配置存储提供程序(provider)。

sh
npm install @mastra/memory @mastra/libsql

存储提供程序

memory 需要存储提供程序来持久化消息历史记录,包括用户消息和客服响应。有关可用提供程序以及 Mastra 中存储机制的详细信息,请参阅 存储 文档。

配置 Memory

1、通过创建一个 Memory 实例并将其传递给智能体的 memory 选项来启用:

ts
// src/mastra/agents/memory-agent.ts
import { Agent } from "@mastra/core/agent";
import { Memory } from "@mastra/memory";
export const memoryAgent = new Agent({
id: "memory-agent",
name: "Memory Agent",
memory: new Memory({
options: {
lastMessages: 20,
}
})
});

INFO

访问 Memory Class 获取完整的配置选项。

2、向你的主 Mastra 实例添加存储提供程序,以在所有已配置的智能体重启用内存功能:

ts
// src/mastra/index.ts
import { Mastra } from "@mastra/core";
import { LibSQLStore } from "@mastra/libsql";
export const mastra = new Mastra({
storage: new LibSQLStore({
id: "mastra-storage",
url: ":memory:"
}),
});

INFO

访问 libSQL Storage 获取完整的配置选项。

或者,可以将存储直接添加到智能体的 memory 中以保持数据分离,你也可以为每个智能体使用不同的提供程序:

ts
// src/mastra/agents/memory-agent.ts
import { Agent } from "@mastra/core/agent";
import { Memory } from "@mastra/memory";
import { libSQLStore } from "@mastra/libsql";
export const memoryAgent = new Agent({
id: "memory-agent",
name: "Memory Agent",
memory: new Memory({
storage: new LibSQLStore({
id: "mastra-storage",
url: ":memory:"
})
})
});

消息历史记录

同时包含一个 memory、resource 和 thread 对象,用于在智能体期间跟踪消息历史记录。

  • resource:用户或实体的稳定标识符
  • thread:用于隔离特定对话或会话的标识符。

这些字段告知智能体在何处存储或检索上下文,从而在整个对话过程中实现持久化、支持线程的记忆管理。

ts
const response = await memoryAgent.generate(
"Remember my favorite color is blue.",
{
memory: {
resource: "user-123",
thread: "conversation-123",
}
);

要调用存储在 memory 中的信息,请使用与原始对话相同的 resource 和 thread 值调用该智能体。

ts
const response = await memoryAgent.generate("What's my favorite color?", {
memory: {
resource: "user-123",
thread: "conversation-123",
}
})

要了解更多关于内存的信息,请参阅 Memory 文档。

使用 RequestContext

使用 RequestContext 访问请求特有的值。这使你能够根据请求上下文条件性地选择不同的 memory 或存储配置。

ts
// src/mastra/agents/memory-agent.ts
export type UserTier = {
"user-tier": "enterprise" | "pro";
}
const premiumMemory = new Memory();
const standardMemory = new Memory();
export const memoryAgent = new Agent({
id: "memory-agent",
name: "Memory Agent",
memory: ({ requestContext }) => {
const userTier = requestContext.get("user-tier") as UserTier["user-tier"];
return userTier === "enterprise" ? premiumMemory : standardMemory;
},
});