04-记忆系统
核对日期:2026-05-18
官方资料:Short-term memory https://docs.langchain.com/oss/javascript/langchain/short-term-memory;Long-term memory https://docs.langchain.com/oss/javascript/langchain/long-term-memory。
官方概念
短期记忆保存当前 conversation/thread 的状态,长期记忆跨 conversation/session 持久化用户画像、偏好、事实或技能记录。LangChain/LangGraph 文档会把短期记忆和 checkpointer、长期记忆和 store 联系起来。
机制
短期记忆解决“本轮对话状态”,长期记忆解决“跨会话可复用信息”。两者都需要更新策略和删除策略。
TypeScript 写法
本手册提供 InMemoryCheckpointer 和 InMemoryLongTermStore,对应案例:src/examples/05-memory.ts,综合项目:个人学习助手。
store.put(["users", userId], "profile", {
goal: "学习 LangChain",
preferredLanguage: "TypeScript",
});
Python 差异
Python 文档中经常能看到 checkpointer/store 与 LangGraph 集成的示例。TypeScript 学习时要关注 API 名称和包名,但概念仍是 namespace、key、JSON document、thread state。
工程边界
- 记忆不是聊天记录仓库,应该结构化、可删除、可审计。
- 用户画像必须有来源、更新时间和置信边界。
- 敏感记忆不能默认进入 prompt,需要策略过滤。
常见反模式
| 反模式 | 后果 |
|---|---|
| 自动记住所有用户输入 | 隐私风险和 prompt 污染 |
| 长期记忆不分 namespace | 多用户、多租户数据串扰 |
| 把摘要当事实 | 模型总结错误会被长期放大 |
练习任务
- 运行个人学习助手 eval,确认
profile被写入 memory。 - 为长期记忆增加
source字段,并写测试确认来源存在。 - 设计一条“不得写入长期记忆”的敏感信息规则。