跳转到主要内容

概述

Zeus 的记忆系统为 Agent 提供跨会话的用户认知能力。通过从对话中提取、存储并检索关键信息,Agent 能够持续积累对用户和项目的理解,从而提供个性化、有上下文连贯性的交互体验。 记忆系统解决三个核心问题:
  • 个性化:记住用户偏好(编程风格、语言、工具链),无需每次重复说明
  • 上下文连续性:跨会话保持对项目背景、技术决策的认知
  • 智能推理:基于历史记忆做出更准确的判断和建议

架构

四层记忆模型

Zeus 的记忆系统由四个生命周期不同的层级组成,从短暂的运行时状态到永久的用户画像,形成一个完整的认知体系。
层级生命周期存储职责
Working Memory单次 Agent 调用内存任务执行的临时上下文:todo_list、tool_calls、推理状态
Short-term Memory单个会话PostgreSQL (message 表)当前会话的对话历史,通过 SummarizationMiddleware 自动压缩
Long-term Memory永久(用户可管理)PostgreSQL + pgvector跨会话的用户/项目信息,支持语义检索
Episodic Memory可恢复PostgreSQL (checkpoint 表)会话状态快照,支持页面刷新、中断后继续、错误重试

三层数据架构 (memU)

Long-term Memory 采用 memU 启发的三层结构,将原始资源逐步抽象为结构化画像:
层级名称内容说明
Layer 1Resource LayerChat 对话、Knowledge Base 文档、Project Resource原始数据来源 — 记忆提取的原始素材
Layer 2Memory Item Layerpreference、fact、skill、habit、event、context、constraint、decision从原始数据中提取的结构化记忆条目,按类型分类
Layer 3Profile LayerUser Profile(全局偏好、专业背景)、Project Profile(技术栈、约束、决策)由记忆条目聚合而成的画像,直接注入系统提示词
数据自下而上流动:Layer 1 原始资源被提取为 Layer 2 记忆条目,再聚合为 Layer 3 画像。

数据模型

Memory Item

记忆条目是系统的核心数据单元,每条记忆包含内容、分类、作用域和元数据。主要字段包括:
  • content:记忆内容文本
  • memory_type:记忆类型分类
  • scope / scope_id:作用域(user / project / session)及对应 ID
  • source / source_id:来源(user / ai / knowledge_base / project_resource)及关联 ID
  • confidence:置信度(0.0 ~ 1.0)
  • visibility:可见范围(public / members / owner_only),仅 project scope 生效
  • status:状态(active / archived / superseded)
  • last_used_at:最后被检索的时间

Memory Type

每种类型对应不同性质的信息,Agent 在提取记忆时需选择正确的类型:
Type语义示例
preference用户偏好喜欢简洁代码、偏好深色主题
fact事实信息用户是前端工程师、名字叫张三
skill技能水平熟悉 React、精通 TypeScript
habit使用习惯常用 VS Code、习惯用 Git Flow
event重要事件完成了项目 A 的上线
context项目上下文当前在开发支付模块
constraint约束条件项目必须支持 PostgreSQL 16
decision决策记录选择了 Next.js 而不是 Remix

Memory Scope

作用域决定记忆的可见范围和生命周期:

User Profile

用户画像聚合了用户的全局特征,在每次对话时注入到系统提示词。主要字段包括:
  • username:用户名
  • background:用户背景描述
  • profession:职业
  • communication_style:沟通风格(concise / detailed / technical)
  • response_format:响应格式偏好(markdown / plain / code)
  • language_preference:语言偏好(zh-CN / en / ja 等)
  • characteristics:个性特征
  • content:自定义指令(Custom Instructions)
  • expertise_areas:专业领域
  • programming_languages:编程语言
  • frequently_used_tools:常用工具

Project Profile

项目画像记录团队共享的项目上下文。主要字段包括:
  • project_goal:项目目标
  • tech_stack:技术栈
  • constraints:约束条件
  • key_decisions:关键决策(含决策内容、原因和时间)
  • team_conventions:团队规范
  • current_phase:当前阶段

核心组件

MemoryService

MemoryService 是记忆系统的核心服务,统一管理记忆的读写和检索。它同时与 PostgreSQL(元数据)和 pgvector(向量索引)交互。

关键方法

方法职责
add_explicit_memory()保存记忆 — 门控验证 → pgvector 写入 → PostgreSQL 写入
search_memories()语义检索 — 多 scope 搜索 → 合并排序 → 返回 Top K
validate_memory()内容验证 — 置信度、敏感信息、内容长度
check_duplicate()去重检测 — pgvector 相似度 ≥ 0.85 判定为重复
check_rate_limit()速率限制 — 每 session 每 24h 最多 3 次提取
get_profile_for_agent()获取用户/项目画像,用于注入系统提示词
format_memories_for_prompt()将记忆格式化为 prompt 可读文本

Memory Gate(门控)

门控层在记忆写入前执行多维验证,防止低质量、敏感或重复的信息进入记忆库: 门控配置支持环境变量覆盖:
参数默认值环境变量
最低置信度0.7MEMORY_MIN_CONFIDENCE
去重阈值0.85MEMORY_DUPLICATE_THRESHOLD
速率限制3 次/session/24hMEMORY_MAX_EXTRACTIONS
最小内容长度5 字符MEMORY_MIN_LENGTH
最大内容长度2000 字符MEMORY_MAX_LENGTH

Memory Tools

Agent 通过四个内置工具自主管理记忆:
工具触发场景参数
memory_save用户说「记住」「帮我记住」「我是…」等content, memory_type, scope
memory_searchAgent 需要回忆用户信息query, k, memory_type, scope
memory_delete用户要求删除过时信息memory_id
memory_stats查看记忆统计
工具通过 RunnableConfig 接收 user_idproject_idsession_id,在 Agent 模式下默认启用 (enable_memory=True)。

上下文集成

记忆通过两种机制参与 Agent 的上下文(Context)
  1. 被动注入:在系统提示词组装阶段,系统自动获取用户/项目画像和语义相关的记忆条目,以结构化文本追加到提示词末尾
  2. 主动提取:在 Agent 执行阶段,Agent 主动调用 memory_save 提取并持久化重要信息
被动注入流程:在上下文组装阶段,_init_context() 调用 _fetch_profile() 获取用户/项目画像,调用 _fetch_relevant_memories() 进行语义检索获取 Top K 记忆条目,两者格式化后追加到系统提示词末尾。 主动提取流程:在 Agent 执行阶段,Agent 调用 memory_save 工具,经 Gate 门控验证后,同时写入 pgvector(向量索引)和 PostgreSQL(元数据)。 完整的系统提示词组装流程参见系统提示词,更广泛的上下文组装参见上下文

检索排序算法

多 scope 记忆检索后,通过加权评分进行合并排序: final_score = similarity × 0.5 + confidence × 0.3 + scope_priority × 0.2 其中 scope 优先级:
Scope优先级权重说明
session1.0当前会话最相关
project0.8项目上下文次之
user0.6全局信息基础
同类型记忆去重后保留分数最高的条目,最终返回 Top K 结果。

权限模型

项目级记忆具有细粒度的权限控制:
角色读取创建编辑删除
Owner全部全部全部全部
Admin全部全部全部全部
Editor全部全部仅自己创建仅自己创建
Viewer全部不可不可不可
visibility 字段进一步控制可见范围:
  • public:所有项目成员可见
  • members:项目成员可见(默认)
  • owner_only:仅创建者可见

向量存储

记忆的向量存储使用 PostgreSQL pgvector 扩展,与 RAG 知识库共享底层基础设施:
配置项默认值说明
Embedding Modeltext-embedding-3-small支持用户自定义模型
Vector Dimensions1536与模型对应
Similarity MetricCosine余弦相似度
Collection Namememory记忆专用集合
每位用户可以配置自己的 Embedding API(模型、Base URL、API Key),系统通过 create_embeddings(user_id) 自动加载对应配置。

Episodic Memory 与 Checkpoint

Episodic Memory 通过 LangGraph 的 PostgresSaver 实现,负责会话状态的持久化与恢复: Checkpoint 存储的内容:
数据说明
messages完整消息历史
agent_stateAgent 内部状态(todo_list、推理上下文)
tool_states工具执行状态
pending_tool_calls待用户审批的操作 (HITL)
此外,session_state_snapshot 表和 checkpoint_archive 表分别用于会话状态快照和过期 checkpoint 归档。