🧠 Agent Memory Systems(Agent记忆系统)详解

"世界上有一种记忆叫做 Agent Memory,它不活在神经元里,而活在向量数据库中。每次对话结束,它都在等待下次被唤醒..."

Agent Memory Systems 是让 AI Agent 拥有「记忆」的技术架构。没有记忆的 Agent 就像金鱼——每次对话都是崭新的开始;有记忆的 Agent 才能记住你的偏好、历史对话、长期目标,提供连贯的服务体验。

💡 核心观点:Agent Memory 不是简单的「存储对话」,而是一个多层次的记忆系统,包括短期记忆(对话上下文)、工作记忆(当前任务状态)、长期记忆(持久化知识)。

记忆的三层架构

⚡ 短期记忆

作用:当前对话上下文

存储:对话历史(最近N轮)

生命周期:会话期间

示例:「你刚才说的那个工具叫什么?」

🎯 工作记忆

作用:当前任务状态

存储:任务进度、中间结果

生命周期:任务期间

示例:「已完成3/5步骤,下一步执行Y」

💾 长期记忆

作用:持久化知识

存储:向量数据库/知识库

生命周期:永久

示例:「用户偏好Python,讨厌PHP」

记忆系统的工作原理

1. 记忆编码(Encoding)

// 将对话内容编码为向量存储
async function encodeMemory(conversation) {
  // 提取关键信息
  const keyInfo = extractKeyInformation(conversation);
  
  // 转换为向量嵌入
  const embeddings = await embed(keyInfo);
  
  // 存储到向量数据库
  await vectorDB.store({
    id: generateId(),
    embedding: embeddings,
    metadata: {
      timestamp: Date.now(),
      type: 'user_preference',
      importance: calculateImportance(keyInfo)
    }
  });
}

2. 记忆检索(Retrieval)

// 基于当前查询检索相关记忆
async function retrieveMemory(query) {
  // 查询向量化
  const queryEmbedding = await embed(query);
  
  // 向量相似度搜索
  const results = await vectorDB.search({
    vector: queryEmbedding,
    topK: 10,
    filter: { importance: { $gte: 0.5 } }
  });
  
  // 重排序(时间衰减 + 相关性)
  return rerank(results, { 
    timeDecay: 0.1,    // 时间衰减系数
    relevanceWeight: 0.7 
  });
}

3. 记忆整合(Integration)

// 将检索到的记忆整合到上下文
function integrateMemory(context, memories) {
  const memoryContext = memories.map(m => 
    `[${m.type}] ${m.content} (${formatTime(m.timestamp)})`
  ).join('\n');
  
  return {
    ...context,
    systemPrompt: context.systemPrompt + 
      `\n\n## 相关记忆\n${memoryContext}`
  };
}

OpenClaw 记忆系统实战

1. 内置记忆管理

// OpenClaw 的记忆管理工具
await tdai_memory_search({
  query: "用户对AI工具的偏好",
  type: "persona",      // persona/episodic/instruction
  limit: 5
});

// 搜索历史对话
await tdai_conversation_search({
  query: "上次讨论的OpenClaw配置",
  limit: 10
});

2. 记忆类型划分

类型 用途 示例
persona 用户身份与偏好 "用户是Python开发者,喜欢简洁代码"
episodic 事件与活动 "2026-04-20 完成了网站重构"
instruction 用户规则与指令 "所有输出使用Markdown格式"

3. Scene Blocks 场景记忆

OpenClaw 还支持 Scene Blocks 场景级记忆,用于记录特定领域的上下文:

// 场景记忆结构
{
  "scene_blocks/OpenClaw玩法资讯网站运营.md": {
    "热度": 133,
    "更新": "2026-04-20T16:11:01.227Z",
    "Summary": "RSS聚合系统成熟:定时任务稳定覆盖第32期至132期..."
  }
}

// 读取场景详情
await read({
  path: "/root/.openclaw/memory-tdai/scene_blocks/OpenClaw玩法资讯网站运营.md"
});

记忆系统的挑战

挑战 1: 记忆过载

问题:记忆太多会降低检索效率,增加成本。

解决方案

挑战 2: 记忆冲突

问题:用户偏好可能变化,新旧记忆冲突。

解决方案

挑战 3: 隐私安全

问题:记忆存储敏感信息。

解决方案

最佳实践

1. 分层记忆策略

const memoryStrategy = {
  // 高频访问 - 保持在上下文
  shortTerm: {
    windowSize: 20,       // 最近20轮对话
    compression: "none"   // 不压缩
  },
  
  // 中频访问 - 工作记忆
  workingMemory: {
    maxItems: 100,
    compression: "summarize"  // 定期摘要
  },
  
  // 低频访问 - 长期记忆
  longTerm: {
    storage: "vectorDB",
    retrieval: "semantic",    // 语义检索
    decay: 0.1                // 时间衰减
  }
};

2. 记忆注入时机

// 在关键节点注入记忆
const memoryTriggers = {
  "session_start": "加载用户偏好和历史上下文",
  "new_task": "检索任务相关记忆",
  "user_preference_mentioned": "更新persona记忆",
  "task_completed": "记录episodic记忆",
  "error_encountered": "记录失败经验"
};
"记忆让 Agent 从「每一次都是第一次」进化为「每一次都是延续」。它不再是冰冷的机器,而是记得你的老朋友——这才是真正的智能。"