Skip to main content

InMemoryMemory

易失性内存存储,适用于开发、测试和单实例部署。

导入

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

构造函数

constructor(config?: {
  sessionId?: string;
  enableContextManagement?: boolean;
  tokenizer?: ITokenizer;
  thresholds?: Partial<ContextThresholds>;
  summarizer?: (events: IMemoryEvent[]) => Promise<StructuredSummary>;
})

配置

config
InMemoryMemoryConfig
记忆和上下文工程的配置

基本用法

// 开发环境的简单设置
const memory = new InMemoryMemory();

// 带有上下文管理的生产就绪设置
const memory = new InMemoryMemory({
  sessionId: 'user-session-123',
  enableContextManagement: true,
  thresholds: {
    preRotThreshold: 8000,
    compactionTrigger: 0.8,
    summarizationTrigger: 0.95,
    recentToKeep: 10
  }
});

// 添加和检索事件
await memory.add({
  message: {
    id: 'msg-1',
    role: 'user',
    content: '你好,我需要帮助处理我的项目',
    timestamp: new Date()
  },
  state: { userId: 'user-123' }
});

const events = await memory.list({ limit: 10, maxTokens: 4000 });

核心接口方法

InMemoryMemory 继承自 BaseMemory,并实现了所有标准记忆接口方法,完全支持分支。有关包括 list()add()addList()delete()retrieve()clear()getCount()isEmpty() 和所有分支方法(branch()checkout()listBranches() 等)的完整 API 文档,请参阅 BaseMemory API 参考

多会话支持

InMemoryMemory 提供内置的会话隔离和管理工具:
// InMemoryMemory 特有的会话工具
const sessionIds = memory.getSessionIds(); // ['session-A', 'session-B']
const hasSession = memory.hasSession('session-A'); // true

// 这些方法是 InMemoryMemory 独有的
console.log('活跃会话:', sessionIds.length);

独特功能

  • 零依赖: 无需外部存储
  • 最快性能: 所有操作都在内存中
  • 完整分支支持: 完整的 Git 风格对话分支
  • 多会话管理: 内置会话隔离和工具
  • 开发优化: 无需配置即可立即设置

限制

  • 易失性存储: 进程终止时数据丢失
  • 单进程: 无法跨多个进程共享记忆
  • 内存增长: 内存使用随对话长度增加
  • 无持久化: 重要对话需要外部备份