为本地 AI 智能体设计三级存储系统:STM / MTM / LTM 详解

作者
  • avatar
    姓名
    Nino
    职业
    Senior Tech Editor

构建一个能够真正“记住”用户的本地 AI 智能体(Agent)是当前大模型开发中的核心挑战。虽然像 n1n.ai 提供的各种高性能模型已经具备了极强的推理能力,但如何在跨会话的交互中保持事实的一致性,依然需要开发者在架构层面进行精细设计。本文将深入探讨我们如何通过模拟人类记忆巩固模式,为本地智能体 Androi 构建一套三级存储系统(STM/MTM/LTM),并实现 53 项测试 100% 通过率的实战经验。

初始设计的困境:为什么直接存储 LTM 会失败?

在最初的版本中,我们的逻辑非常简单:用户输入 -> LLM 提取键值对 -> 直接存入长期记忆(LTM)。这种“全量存储”策略在实际测试中暴露出严重问题。在 53 项端到端测试中,有 8 项持续失败,主要症状包括:

  • BMI 计算失败:由于内存中充斥着大量的无用信息(如“北京天气”、“当前时间”),导致真正的关键数据(身高、体重)在语义检索阶段被过滤掉。
  • 中文字符长度陷阱:原本为了过滤英文噪音设置了 len(key) < 2 的逻辑。然而在中文/韩文中,“키”(身高)或“年龄”等关键词仅占 1-2 个字符,导致这些核心数据被系统静默丢弃。
  • 陈旧数据干扰:当用户修改爱好时,系统往往会因为语义相近而同时提取出旧爱好和新爱好,导致逻辑冲突。

通过在 n1n.ai 上对不同模型(如 DeepSeek-V3 和 Claude 3.5)进行对比测试,我们意识到:智能体的记忆管理不仅是存储问题,更是过滤和权重的博弈。

三级存储架构:模拟人类大脑

我们参考了人类大脑从海马体(Hippocampus)到大脑皮层(Cortex)的记忆巩固机制,设计了以下三级体系:

1. 短期记忆 (STM - Short-Term Memory)

对应 LLM 的上下文窗口(Context Window)。它负责处理当前的对话流,是瞬时的、易失的。一旦会话结束,STM 就会被清空。

2. 中期记忆 (MTM - Mid-Term Memory)

这是我们的创新点。MTM 充当“记忆缓冲区”。新提取的事实不会直接进入 LTM,而是先进入 MTM。我们引入了“艾宾浩斯遗忘曲线”逻辑:

  • 重复增强:只有在多次对话中被提及或调用的信息,才会被“提拔”到 LTM。
  • 自动衰减:未被再次触达的临时信息(如“今天想吃拉面”)会在 MTM 中自然过期。

3. 长期记忆 (LTM - Long-Term Memory)

存储核心身份信息和持久化事实。为了保证检索精度,我们设定了动态阈值。当 LTM 条目少于 30 条时,采取全量注入(Full Injection)模式;超过 30 条后,开启余弦相似度(Cosine Similarity)大于 0.3 的语义检索。

核心实现:基于优先级的分类策略

我们将信息提取逻辑从“全量提取”改为“优先级分类”。通过在 n1n.ai 调用高逻辑推理能力的模型,我们将提取的信息分为三类:

优先级判定标准示例存储路径
高 (HIGH)不可变的内核身份姓名、生日、血型、过敏史直接写入 LTM
中 (MID)可变的个人偏好/状态爱好、职业、薪资、居住地进入 MTM 队列
低 (LOW)瞬时/一次性信息天气、新闻、当前时间戳不予提取

解决语义匹配的“盲区”

在测试中我们发现,即使使用了向量数据库,语义检索依然存在盲区。例如,用户问“计算我的 BMI”时,其向量与“体重: 72kg”的相似度可能并不高。

优化方案:

  1. 提升检索阈值:将 auto_retrieve 的触发上限从 15 提升至 30,确保小规模数据下信息不丢失。
  2. 多链引导(Multi-Chain Guidance):在系统提示词中加入引导,要求智能体在执行计算任务前,先执行“回忆相关属性”的步骤。这迫使模型主动从 LTM 中提取“身高”和“体重”到当前上下文中。

53 项测试的全通之路

经过四轮迭代,我们最终实现了 100% 的通过率。以下是各模块的覆盖情况:

  • 内存系统 (10/10):涵盖 CRUD、跨会话更新、隐式保存等。
  • 计算 + 存储 (5/5):包括个税计算、BMI、复利计算等需要结合记忆数据的任务。
  • 多链任务 (7/7):涉及 3 个以上工具链的复杂协作(如:查询天气 -> 存入日历 -> 发送邮件)。

开发者建议与总结

  1. 不要迷信语义搜索:对于小规模的个人记忆,直接将所有键值对放入 Prompt 的效果远好于 RAG。
  2. 关注多语言陷阱:在处理中日韩(CJK)字符时,务必移除针对英文设计的长度过滤逻辑。
  3. 工具命名要严谨:智能体有时会因为工具名称相近而产生幻觉。例如,将 schedule_task 改为 create_task 可以显著降低与日历工具的混淆率。

通过这套三级存储架构,本地 AI 智能体不仅变得更加“聪明”,而且更加“人性化”。如果您正在构建类似的 Agent 架构,推荐使用 n1n.ai 获取稳定的 API 支持,以便在开发阶段快速验证您的记忆分类逻辑。

n1n.ai 获取免费 API 密钥。