进阶
给 AI Agent 装一个长期记忆:腾讯 TencentDB-Agent-Memory 实战
你有没有发现:很多 AI 助手「聊完就忘」,下次见面又像初次谋面?这是因为它们没有长期记忆。2026 年腾讯开源了 TencentDB-Agent-Memory——一个完全本地运行、不调外部 API 的 Agent 记忆系统。本教程手把手教你把它接进自己的智能体,让 AI 真正记住跨会话的偏好与上下文。
🧠 本教程适合:想给自建 Agent(Python/Node 项目)加上「记忆」的开发者;关心数据隐私、不愿把记忆传到第三方云的人。需要基础编程能力。
先搞懂:长期记忆解决什么问题?
普通对话把历史塞进上下文窗口,窗口一满就丢,会话一关就忘。长期记忆是把重要信息存进外部数据库,下次会话按需取回。
| 方案 | 优点 | 缺点 |
|---|---|---|
| 纯上下文(无记忆) | 零成本 | 窗口满即失忆 |
| 第三方记忆云服务 | 接入快 | 数据出本地、有合规风险 |
| TencentDB-Agent-Memory | 本地运行、可检索、开源 | 需自己部署数据库 |
它不是「把聊天记录全存下来」:好记忆系统会做「抽取—压缩—索引」,只存有价值的事实(用户偏好、关键结论),而不是堆原始对话。否则检索时会淹没在噪声里。
Step 1:准备运行环境
1 装依赖 + 起一个本地库
# 需要 Python 3.10+ 和一个本地向量/关系库
# 官方推荐用本地 SQLite + 向量扩展,零外部依赖
pip install tencentdb-agent-memory
# 确认安装
python -c "import tencentdb_agent_memory; print('ok')"
💡 它的亮点是「完全本地运行,不需要调外部 API」。对金融、医疗、企业内部 Agent 尤其友好——记忆数据不出本机。
Step 2:初始化记忆存储
2 给 Agent 一个「大脑仓库」
from tencentdb_agent_memory import MemoryStore
# 用本地文件做存储(默认 SQLite,可换 PostgreSQL)
store = MemoryStore(
backend="sqlite",
path="./agent_memory.db",
user_id="user_001" # 每个用户独立记忆空间
)
store.init() # 首次会建表 / 建索引
务必按 user_id 隔离:多人共用一个 Agent 时,记忆必须按用户分空间,否则 A 的偏好会被错喂给 B。这是隐私和正确性的底线。
Step 3:写入一条记忆
3 让 Agent 学会「记下来」
# 在对话处理完后,抽取事实写入
store.add(
content="用户偏好用简体中文回复,语气偏简洁。",
type="preference", # 偏好类
importance=0.8 # 重要度,用于检索排序
)
# 也可以存关键结论
store.add(
content="本次确认项目用 FastAPI + PostgreSQL 技术栈。",
type="fact",
importance=0.9
)
🔑 关键技巧:别在每句话后都写记忆。只在「出现稳定偏好 / 关键事实 / 用户纠正」时写,并给 importance 打分。记忆越精炼,检索越准。
Step 4:检索相关记忆喂给模型
4 每次回复前先「回想」
# 新会话开始 / 新消息到来时,先检索
related = store.search(
query="用户希望我怎么回复他?",
top_k=5
)
# related 是命中的记忆列表,拼进 system prompt
context = "\n".join(r.content for r in related)
# 把 context 塞进给大模型的提示词
💡 这一步相当于「每次开口前先翻小本本」。检索到的记忆让模型表现得像「记得你」的老搭档,而不是每次重新认识。
Step 5:更新与遗忘(记忆生命周期)
5 记忆也要新陈代谢
# 用户改了偏好 → 更新而非新增重复项
store.update(
memory_id="xxx",
content="用户现在偏好英文回复。",
importance=0.8
)
# 过期信息 → 显式遗忘,避免污染检索
store.forget(memory_id="yyy")
# 或按重要度 + 时间自动清理低价值记忆
store.prune(keep_above_importance=0.3)
不清理的记忆会变成噪音:同一件事反复记、旧结论不删,检索时模型会被矛盾信息搞晕。给记忆设生命周期,定期 prune(修剪)低重要度条目。
Step 6:接进你的 Agent 主循环
6 串成一个会记住你的 Agent
def chat(user_msg):
# 1. 回想
mem = store.search(user_msg, top_k=5)
prompt = build_prompt(user_msg, mem)
# 2. 调模型
reply = llm(prompt)
# 3. 抽取并落库(用个小模型或规则判断要不要记)
facts = extract_facts(user_msg, reply)
for f in facts:
store.add(**f)
return reply
🔁 这就是「感知—决策—执行—记忆」闭环的最小实现。配合本中心《OpenClaw 记忆系统》《多智能体协作》一起看,你能搭出既有个性又有协作能力的 Agent。
Step 7:隐私与性能避坑
7 把记忆用对、用稳
隐私:
· 敏感字段(身份证/密码)绝不进记忆
· 存储文件权限设为仅当前用户可读
· 多用户严格按 user_id 隔离
性能:
· top_k 控制在 3-8,过多会稀释注意力
· importance 阈值 + prune 定期瘦身
· 量大了再换 PostgreSQL 后端,别一上来就重
核心结论:TencentDB-Agent-Memory 让「会记住用户的 Agent」从大厂专属变成开源可自部署。它本地运行、不调外网,是隐私敏感场景的优选。记住三件事——按用户隔离、只记有价值的事实、定期修剪,你的 Agent 就能从「金鱼脑」进化成「老搭档」。
常见问题速查
| 你遇到的现象 | 大概率原因 & 解决 |
|---|---|
| 检索不到相关记忆 | 写入时 importance 太低或被 prune 掉 |
| 记忆串到别人身上 | 没按 user_id 隔离,检查初始化 |
| 回复越来越乱 | top_k 太大或记忆有矛盾,先 prune |
| 想换数据库 | backend 改 postgresql,配连接串即可 |