
关于
记忆是智能 Agent 的基石。设计和实现 Agent 记忆系统,包括短期记忆、长期记忆、情节记忆和语义记忆。
name: agent-memory-systems description: "记忆是智能代理的基石。没有它,每次交互都从零开始。此技能涵盖代理记忆的架构:短期记忆(上下文窗口)、长期记忆(向量存储)以及组织它们的认知架构。" risk: safe source: vibeship-spawner-skills (Apache 2.0) date_added: 2026-02-27
代理记忆系统
记忆是智能代理的基石。没有它,每次交互都从零开始。此技能涵盖代理记忆的架构:短期记忆(上下文窗口)、长期记忆(向量存储)以及组织它们的认知架构。
关键洞察:记忆不仅仅是存储——它是检索。存储一百万个事实毫无意义,如果你找不到正确的那个。分块、嵌入和检索策略决定了你的代理是记住还是遗忘。
该领域术语不一致且碎片化。我们使用 CoALA 认知架构框架:语义记忆(事实)、情景记忆(经验)和程序记忆(操作知识)。
原则
- 记忆质量 = 检索质量,而非存储数量
- 为检索而分块,而非为存储
- 上下文隔离是记忆的敌人
- 为正确的信息选择正确的记忆类型
- 衰减旧记忆——不是所有东西都应该永久保存
- 生产前测试检索准确性
- 后台记忆形成优于实时处理
能力
- agent-memory
- long-term-memory
- short-term-memory
- working-memory
- episodic-memory
- semantic-memory
- procedural-memory
- memory-retrieval
- memory-formation
- memory-decay
范围
- vector-database-operations → data-engineer
- rag-pipeline-architecture → llm-architect
- embedding-model-selection → ml-engineer
- knowledge-graph-design → knowledge-engineer
工具
记忆框架
- LangMem (LangChain) - 适用场景:带持久记忆的 LangGraph 代理 备注:语义、情景、程序记忆类型
- MemGPT / Letta - 适用场景:虚拟上下文管理,操作系统式记忆 备注:分层记忆层级,自动分页
- Mem0 - 适用场景:用于个性化的用户记忆层 备注:专为用户偏好和历史设计
向量存储
- Pinecone - 适用场景:托管式,企业级规模(数十亿向量) 备注:最佳查询性能,最高成本
- Qdrant - 适用场景:复杂元数据过滤,开源 备注:基于 Rust,优秀的过滤能力
- Weaviate - 适用场景:混合搜索,知识图谱特性 备注:GraphQL 接口,适合关系型数据
- ChromaDB - 适用场景:原型开发,中小型应用 备注:开发者友好,100K 向量时 p50 约 20ms
- pgvector - 适用场景:已使用 PostgreSQL,更简单的设置 备注:适合 <1M 向量,熟悉的工具链
嵌入模型
- OpenAI text-embedding-3-large - 适用场景:最佳质量,3072 维 备注:$0.13/1M tokens
- OpenAI text-embedding-3-small - 适用场景:良好平衡,1536 维 备注:$0.02/1M tokens,便宜 5 倍
- nomic-embed-text-v1.5 - 适用场景:开源,本地部署 备注:768 维,质量良好
- all-MiniLM-L6-v2 - 适用场景:轻量级,快速本地嵌入 备注:384 维,最低延迟
模式
记忆类型架构
为不同信息选择正确的记忆类型
适用场景:设计代理记忆系统
记忆类型架构(CoALA 框架):
""" Three memory types for different purposes:
-
Semantic Memory: Facts and knowledge
- What you know about the world
- User preferences, domain knowledge
- Stored in profiles (structured) or collections (unstructured)
-
Episodic Memory: Experiences and events
- What happened (timestamped events)
- Past conversations, task outcomes
- Used for learning from experience
-
Procedural Memory: How to do things
- Rules, skills, workflows
- Often implemented as few-shot examples
- "How did I solve this before?" """
LangMem 实现
""" from langmem import MemoryStore from langgraph.graph import StateGraph
Initialize memory store
memory = MemoryStore( connection_string=os.environ["POSTGRES_URL"] )
Semantic memory: user profile
await memory.semantic.upsert( namespace="user_profile", key=user_id, content={ "name": "Alice", "preferences": ["dark mode", "concise responses"], "expertise_level": "developer", } )
Episodic memory: past interaction
await memory.episodic.add( namespace="conversations", content={ "timestamp": datetime.now(), "summary": "Helped debug authentication issue", "outcome": "resolved", "key_insights": ["Token expiry was root cause"], }, metadata={"user_id": user_id, "topic": "debugging"} )
Procedural memory: learned pattern
await memory.procedural.add( namespace="skills", content={ "task_type": "debug_auth", "steps": ["Check token expiry", "Verify refresh flow"], "example_interaction": few_shot_example, } ) """
记忆检索策略
选择正确的检索方法对记忆系统至关重要。常见策略包括:
- 语义搜索:基于嵌入相似度检索
- 时间衰减:最近的记忆权重更高
- 重要性评分:根据信息重要性排序
- 混合检索:结合多种策略