记忆其实有三种含义
Agent 可能需要记住用户偏好、从持续变化的知识库检索事实,或者跨多轮对话保存工作状态。Mem0、Graphiti 和 Letta 解决的是相关问题,却暴露了不同抽象。Mem0 相对是可以接入应用的记忆层;Graphiti 相对关注随时间变化的实体关系图;Letta 相对把有状态 Agent 和记忆操作纳入运行时。把它们都叫作“记忆插件”,会掩盖真正的架构选择,也会让团队误以为加一个数据库就完成了记忆设计。
相对出众的地方与适用场景
Mem0 相对适合不重做整个 Agent 运行时,只想直接存取用户或应用记忆的团队。Graphiti 相对适合时间、实体和关系变化重要的场景,例如项目历史或需要跨事件追踪的运维知识。Letta 相对适合愿意采用完整 Agent 运行时,把记忆管理、工具和自主状态变化放进同一系统的团队。真正的差异是你愿意采用多大的架构表面积,以及团队是否能长期维护这套状态。
边界与责任
持久化记忆会改变 Agent 的隐私和正确性边界。要明确哪些内容可以记住、用户如何查看或删除、过时事实如何纠正,以及哪些来源优先级更高。检索到一条记忆不等于它是真的。需要时保存来源、时间和置信度,把记忆数据库当作用户数据保护,并测试试图把误导性指令写入未来上下文的提示注入路径。还要定义记忆写入失败时 Agent 是否继续工作,避免错误内容悄悄成为长期事实。对于真实用户,还要设计数据导出、删除确认、租户隔离和管理员审计;如果系统无法回答“这条记忆从哪里来、谁改过、何时失效”,就不适合直接依赖它做高风险决策。
建议执行的对比实验
使用同一个助手和固定的十轮对话,包含偏好更新、矛盾信息、纠正、删除请求、项目交接和带时间变化的事实。分别记录是否找回正确记忆、旧值是否被删除或取代、来源能否解释,以及操作员需要多少人工控制。重启后重复一次,再用两个事实有交集的用户重复一次。这个实验测的是记忆行为,不只是安装速度;如果无法解释为什么记住或忘记,就不应该直接接入真实用户数据。再模拟数据库损坏、索引为空、记忆服务超时和用户要求彻底清除历史,观察 Agent 是否会安全降级,而不是继续把旧上下文当成可靠事实。最后把测试报告连同版本、配置和原始对话保存下来,避免换一次模型后无法解释结果变化。