Skip to main content

概述

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

架构

四层记忆模型

Zeus 的记忆系统由四个生命周期不同的层级组成,从短暂的运行时状态到永久的用户画像,形成一个完整的认知体系。

三层数据架构 (memU)

Long-term Memory 采用 memU 启发的三层结构,将原始资源逐步抽象为结构化画像: 数据自下而上流动: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 在提取记忆时需选择正确的类型:

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(向量索引)交互。

关键方法

Memory Gate(门控)

门控层在记忆写入前执行多维验证,防止低质量、敏感或重复的信息进入记忆库: 门控配置支持环境变量覆盖:

Memory Tools

Agent 通过两个内置工具自主管理记忆: 工具通过 RunnableConfig 接收 user_idproject_idsession_id,在 Agent 模式下默认启用 (enable_memory=True)。

上下文集成

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

检索排序算法

多 scope 记忆检索后,通过加权评分进行合并排序: final_score = similarity × 0.5 + confidence × 0.3 + scope_priority × 0.2 其中 scope 优先级: 同类型记忆去重后保留分数最高的条目,最终返回 Top K 结果。

权限模型

项目级记忆具有细粒度的权限控制: visibility 字段进一步控制可见范围:
  • public:所有项目成员可见
  • members:项目成员可见(默认)
  • owner_only:仅创建者可见

向量存储

记忆的向量存储使用 PostgreSQL pgvector 扩展,与 RAG 知识库共享底层基础设施: 每位用户可以配置自己的 Embedding API(模型、Base URL、API Key),系统通过 create_embeddings(user_id) 自动加载对应配置。

Episodic Memory 与 Checkpoint

Episodic Memory 通过 LangGraph 的 PostgresSaver 实现,负责会话状态的持久化与恢复: Checkpoint 存储的内容: 此外,session_state_snapshot 表和 checkpoint_archive 表分别用于会话状态快照和过期 checkpoint 归档。