选记忆方案之前,先区分你要保存的是当前任务进度、跨会话偏好、可检索文档,还是带时间关系的实体知识。这些需求可以组合,但不应全部用向量数据库或“长期记忆”一个词解决。
本文在 LearnAgent 原文基础上修订,产品和价格资料核验于 2026-10-03。这里的方案建议不包含独立检索质量基准。
先按信息类型分层
| 需求 | 可以先试的方案 | 主要限制 |
|---|---|---|
| 项目规则、操作说明 | 版本化文件或显式上下文 | 需要加载到模型;不能替代强制权限 |
| 一个任务的中间状态 | 会话存储、checkpointer | 线程状态不自动成为跨用户知识 |
| 跨会话用户偏好 | 结构化数据库或 KV,带用户命名空间 | 需要更新、删除、访问控制和冲突处理 |
| 大量文档语义检索 | 向量检索加关键词/元数据过滤 | embedding、分块、权限过滤与召回质量 |
| 多实体和时序关系 | Graphiti、Zep 等图记忆方案 | 抽取准确性、图维护、时序与运维成本 |
多 Agent 共享几个业务字段时,一个带权限和命名空间的数据库可能已经足够。只有需要复杂关系、自动抽取或时序推理时,再评估更重的图记忆架构。
文件记忆与会话状态
Claude Code 的记忆包含显式规则文件和自动积累的记忆。CLAUDE.md 是进入上下文的指导材料,不是不可绕过的访问控制。文件应避免秘密和无关个人数据,也要有更新与清理机制。Claude Code memory
LangGraph 的 checkpointer 面向线程内状态;跨线程长期信息应按 Store 等机制另行设计。把所有历史消息永久保留在当前提示里,会增加上下文负担,也可能保留已经失效或互相冲突的信息。持久化、添加记忆
压缩历史宜按 token 预算、输出预留、关键信息和消息结构触发,不能简单规定“20 轮摘要、100 轮换数据库”。摘要需要保留任务约束和有效的工具调用/结果关系,并检查是否把失败结果写成事实。
向量检索不是记忆的全部
向量数据库适合按相似性找候选片段,但最终回答还需要权限过滤、版本、来源、去重和冲突判断。用户删除某条信息时,应明确原文、向量、缓存及派生摘要是否一起删除。
Chroma 的本地持久化使用 PersistentClient 等明确配置;完整示例至少需要建立 collection、设置 embedding、写入数据,再执行查询。只展示一个未定义的 collection.query 不能代表可运行程序。本地客户端适合开发试验,生产部署应根据官方架构选择服务端方式并配置备份。Chroma Python client
本文不再保留缺少初始化和 embedding 前提的代码片段。试用时固定版本,用非敏感数据建立小型验收集,再测新增、查询、删除、重启和隔离。
Zep 与 Graphiti 要分开
Zep 当前的服务形态包括 Cloud 和企业 BYOC;旧 Community Edition 已弃用,不能继续把它作为受支持的当前自托管产品推荐。希望使用开源图记忆时,可以另行评估 Graphiti,但需要自行承担部署、维护及抽取模型成本。Zep FAQ
当日 Zep 价格页列出 Free 每月 10,000 credits,Flex $125/月含 50,000 credits,Flex Plus $375/月含 200,000 credits。预算还要看额外 credits、自动充值和具体 episode 消耗,企业方案另询价。金额为美元,未作地区、税费及合同报价保证。Zep 定价
不能把“每月多少次对话”直接当成 credits,因为 episode 的内容与处理方式也会影响消耗。先用真实样本看账单,再外推负载。
托管向量库与自建方案的成本
Pinecone 当日价格页列出 Starter 免费档、Builder $20/月固定档,Standard 最低 $50/月和 Enterprise 最低 $500/月的相应安排。实际费用仍取决于用量和所选服务;embedding、rerank、Assistant 等项目也要按适用说明另查。Pinecone 定价
本地文件和开源软件没有单独的软件许可费,也不等于运行成本为零。读取记忆占用上下文,摘要和抽取需要模型调用;自建 Chroma、数据库或图系统还需要硬件、存储、备份和维护。
用同一个预算模型比较:存储与查询 + embedding/抽取 + 模型上下文 + 运维 + 数据治理。数据量、维度、更新频率和访问并发不同,方案的成本排序也可能不同。
质量与安全验收
准备一组包含过期偏好、相似姓名、权限差异、否定信息和用户删除请求的样本。分别验证系统能否找回正确内容、拒绝跨用户读取、更新旧事实,并在删除后停止引用。
对自动抽取的记忆保留来源和时间,不把推测写成确定事实。把“模型说应该记住”与真正存储的权限分开,允许用户或业务流程纠正错误。
如果使用 Letta,应按当前产品文档和 SDK 版本评估,而不是把早期 MemGPT 论文中的机制等同于所有当前产品能力。Letta SDK
选择建议
先从能满足最小需求的存储开始:规则用文件,任务用会话状态,明确字段用数据库。检索规模和关系复杂度确实增长时,再引入向量或图记忆。把可删除、可解释和可隔离当作必需能力,与召回效果一起验收。