Skip to main content
AG-Kit 中的短期记忆管理活动会话中的对话历史和上下文。它提供高效的存储和检索最近消息的功能,使 Agent 能够在具备上下文感知的情况下保持连贯的对话。

概述

短期记忆(也称为会话记忆或对话记忆)存储:
  • 最近的对话消息 - 用户和助手的交流
  • 工具调用历史 - 工具调用和结果的记录
  • 会话状态 - 自定义元数据和上下文信息
  • 时间上下文 - 基于时间的消息排序和过滤

记忆实现

AG-Kit 为不同的用例和部署场景提供多种短期记忆实现:

InMemoryMemory

易失性内存存储,适用于开发、测试和单实例部署。 特性:
  • 快速读写操作
  • 基于内容的相似度搜索
  • 令牌感知的消息修剪
  • 多会话支持
  • 零外部依赖
用例:
  • 开发和测试
  • 单服务器应用
  • 临时会话
  • 原型开发

TDAIMemory

通过 TDAI 服务提供生产级可扩展性的云端持久化存储。 特性:
  • 持久化云存储
  • 高级语义搜索
  • 分布式会话管理
  • 可选的本地缓存
  • 生产就绪的可靠性
用例:
  • 生产环境部署
  • 多服务器应用
  • 长期运行的会话
  • 企业应用

TypeORMMemory

支持多种数据库并具有可自定义 schema 的灵活 ORM 存储。 特性:
  • 多数据库支持(MySQL、PostgreSQL、SQLite 等)
  • 自定义实体定义
  • 文档转换系统
  • 分支和摘要架构
  • TypeScript 类型安全
  • 迁移支持
用例:
  • 自定义数据库 schema
  • 企业数据库集成
  • 复杂数据关系
  • 类型安全开发

MySQLMemory

扩展 TypeORMMemory 并具有 MySQL 特定功能的优化 MySQL 实现。 特性:
  • MySQL 特定优化
  • 连接池
  • 事务支持
  • 索引优化
  • 性能监控
用例:
  • 基于 MySQL 的应用
  • 高性能需求
  • 企业 MySQL 部署

MongoDBMemory

具有灵活 schema 和水平扩展能力的 NoSQL 文档存储。 特性:
  • 基于文档的存储
  • 灵活的 schema 设计
  • 自动连接设置 - 无需手动创建客户端
  • 连接字符串配置
  • 水平扩展
  • 聚合管道
  • GridFS 支持大数据
  • 连接池和选项
用例:
  • NoSQL 应用
  • 灵活的数据结构
  • 水平扩展需求
  • 面向文档的工作流
  • 最小设置的快速原型开发

CloudBaseMemory

腾讯云 CloudBase 集成,用于无服务器云存储。 特性:
  • 无服务器架构
  • 自动扩展
  • 腾讯云集成
  • 实时同步
  • 内置安全性
用例:
  • 腾讯云部署
  • 无服务器应用
  • 中国市场应用
  • 自动扩展需求

快速入门

使用 InMemoryMemory 的基本用法

import { InMemoryMemory } from '@ag-kit/agents';

// 创建记忆实例
const memory = new InMemoryMemory();

// 添加对话事件
await memory.add({
  message: {
    id: 'msg-1',
    role: 'user',
    content: 'What is the weather today?',
    timestamp: new Date()
  },
  state: { userId: 'user-123', location: 'San Francisco' }
});

// 添加助手响应
await memory.add({
  message: {
    id: 'msg-2',
    role: 'assistant',
    content: 'The weather in San Francisco is sunny, 72°F.',
    timestamp: new Date()
  },
  state: { userId: 'user-123' }
});

// 检索对话历史
const events = await memory.list({ limit: 10 });
console.log(events);
// [
//   { message: { id: 'msg-1', role: 'user', content: '...' }, state: {...} },
//   { message: { id: 'msg-2', role: 'assistant', content: '...' }, state: {...} }
// ]

在生产环境使用 TDAIMemory

import { TDAIMemory } from '@ag-kit/agents';

// 创建 TDAI 记忆实例
const memory = new TDAIMemory({
  sessionId: 'user-session-123',
  clientOptions: {
    apiKey: process.env.TDAI_API_KEY!,
    endpoint: 'https://api.tdai.example.com'
  },
  useCache: true // 启用本地缓存以提高性能
});

// 添加对话事件
await memory.add({
  message: {
    id: 'msg-1',
    role: 'user',
    content: 'Tell me about AG-Kit',
    timestamp: new Date()
  },
  state: { source: 'web-chat' }
});

// 列出最近的消息
const recentMessages = await memory.list({
  limit: 20,
  order: 'desc' // 最新的在前
});

使用带有自定义 Schema 的 TypeORMMemory

使用 MongoDBMemory

使用 CloudBaseMemory

统一架构

分支和摘要系统

现在所有记忆实现都支持统一的分支和摘要架构,能够实现:
  • 对话分支: 创建用于实验的替代对话路径
  • 自动摘要: 压缩长对话同时保留上下文
  • 上下文工程: 智能令牌管理和上下文窗口优化(了解更多)
  • 状态管理: 跨分支和摘要的持久化会话状态

自定义实体和文档转换

基于 TypeORM 的实现支持自定义实体定义和文档转换,以实现灵活的 schema 设计:

核心操作

添加事件

向记忆中添加单个或多个对话事件。

列出事件

使用过滤、分页和令牌限制检索事件。

搜索事件

基于内容相似度搜索事件。

删除事件

从记忆中删除特定事件。

清空记忆

从存储中删除所有事件。

多会话支持

两种记忆实现都支持多个隔离的会话。

令牌管理

AG-Kit 提供自动令牌计数和修剪以管理 LLM 上下文窗口。

与 Agent 集成

短期记忆与 AI Agent 无缝集成,实现自动上下文管理。 了解更多: 完整的 Agent 集成指南

会话分支

会话分支支持对话实验和时间旅行功能。创建实验性对话路径,测试不同响应并回滚到以前的状态。
会话分支目前由 InMemoryMemory 支持。如果调用分支方法,其他实现将抛出错误。

创建分支

创建实验性对话路径而不丢失原始内容:

使用事件检出进行时间旅行

检出到特定事件并删除其后的所有事件:

高级分支操作

高级模式

上下文窗口管理

使用智能阈值和令牌限制自动管理 LLM 上下文窗口。有关全面的上下文工程策略,请参阅上下文工程指南 上下文管理策略:
  1. 自动阈值(推荐) - 具有可配置阈值的智能压缩
  2. 固定令牌限制 - 使用 maxTokens 的简单硬限制
  3. 动态令牌分配 - 基于模型容量的计算限制
  4. 滑动窗口 - 带令牌约束的最近消息
自动阈值的工作原理:
  • 压缩阶段: 在 preRotThreshold 的 80% → 删除冗余/重复内容
  • 摘要阶段: 在 preRotThreshold 的 95% → 将较旧的消息压缩成摘要
  • 保留: 最近的消息(由 recentToKeep 指定)始终完整保留
  • 互补性: 可与 maxTokens 一起使用以提供额外保护
有关详细的上下文工程模式和高级阈值策略,请参阅上下文工程文档

工具调用历史

存储和检索工具调用历史。

自定义状态管理

为每个事件存储自定义元数据。

最佳实践

1. 选择正确的实现

  • 使用 InMemoryMemory 用于开发、测试和单实例应用
  • 使用其他实现 用于生产、分布式系统和持久化存储需求

2. 管理令牌限制

始终考虑 LLM 上下文窗口限制:

3. 一致地使用会话 ID

为多用户应用维护会话隔离:

4. 清理旧会话

定期清除不活跃的会话以管理内存:

5. 优雅地处理错误

性能考虑

InMemoryMemory

  • 快速: 所有操作都在内存中
  • 可扩展: 高效处理数千个事件
  • 限制: 进程重启时数据丢失
  • 内存使用: 随事件数量增长

TDAIMemory

  • 持久化: 数据在重启后保留
  • 分布式: 跨多个服务器工作
  • 缓存: 可选的本地缓存以提高性能
  • 网络: 需要对 TDAI 服务进行网络调用

实现对比

特性InMemoryTDAITypeORMMySQLMongoDBCloudBase
存储类型易失性云端数据库数据库NoSQL无服务器
持久化
性能最快快速快速最快快速良好
可扩展性单一中等很高自动
自定义 Schema
分支支持
摘要支持
多数据库
设置复杂度API Key中等中等很低中等
最适合开发/测试生产企业MySQL 应用NoSQL 应用腾讯云

下一步