Skip to content

记忆系统

AgenticFORGE 提供统一的 MemoryManager,管理四种不同类型的记忆,每种针对不同的时间和语义角色设计。

记忆类型

类型作用域适用场景
working会话级当前任务上下文、近期消息
episodic长期、按时间索引历史事件、对话记录
semantic长期、按概念索引事实、偏好、领域知识
perceptual短期缓冲原始输入(图片、音频、文件)

基础用法

ts
import {MemoryManager} from "@agenticforge/memory/manager";

const memory = new MemoryManager({
  userId: "user-123",
  enableWorking: true,
  enableEpisodic: true,
  enableSemantic: true,
});

// 存储记忆
await memory.addMemory({
  content: "用户正在构建 TypeScript Agent 框架",
  memoryType: "semantic",
  importance: 0.9,
  metadata: {source: "对话", timestamp: new Date().toISOString()},
});

// 检索记忆
const results = await memory.retrieveMemories({
  query: "用户在做什么项目?",
  limit: 5,
  memoryTypes: ["semantic", "episodic"],
  minImportance: 0.5,
});

console.log(results.map((r) => r.content));

记忆操作

ts
// 更新
await memory.updateMemory({memoryId: "mem-abc", content: "新内容", importance: 0.95});

// 删除
await memory.removeMemory("mem-abc");

// 遗忘低重要性记忆
await memory.forgetMemories({strategy: "importance_based", threshold: 0.2});

// 将工作记忆归档为情节记忆
await memory.consolidateMemories({
  fromType: "working",
  toType: "episodic",
  importanceThreshold: 0.7,
});

接入 Qdrant 向量数据库

ts
const memory = new MemoryManager({
  enableSemantic: true,
  adapterConfigs: [
    {
      type: "vectorStore",
      backend: "qdrant",
      options: {
        url: process.env.QDRANT_URL ?? "http://localhost:6333",
        apiKey: process.env.QDRANT_API_KEY,
        collection: "agent-memory",
      },
    },
  ],
});

await memory.initialize();

用 Docker 启动 Qdrant + Neo4j

bash
# Qdrant
docker run -p 6333:6333 qdrant/qdrant

# Neo4j
docker run -p 7474:7474 -p 7687:7687 \
  -e NEO4J_AUTH=neo4j/password \
  neo4j:latest

Released under the CC BY-NC-SA 4.0 License.