
最近折腾 AI Agent 的长期记忆系统,踩了几个坑,这篇把问题说清楚。
一开始大家都觉得长期记忆必须得上向量数据库,得搭 RAG 管道。但看了一圈真正扛住大流量的 Agent 产品,发现它们不约而同选了更简单的方案:纯文本文件。
这不是技术退步,反而是个更强的工程选择。文件可追溯、可对比、可迁移,还能直接 Git 版本管理。
不过光有一堆文本还不够,想让这种方案真正 work,必须把存储和搜索彻底分开。
Agent 记忆系统中最高杠杆的决策,就是把存储层和搜索索引彻底解耦。
在这个架构下,所有搜索索引都被当作可丢弃的临时产物。你可以随时删掉向量嵌入数据库或重建实体图,底层记忆零损失。
这带来了三个优势:
cp),而不是一场数据库迁移大战。检索质量是写入质量的下游。一个检索简单但记忆干净的结构化系统,往往比在嘈杂记忆上跑复杂 RAG 管道效果更好。
要实现这一点,每条记忆必须在写入时就结构化。文件优先运行时的一条典型记忆文件长这样:
---
id: mem_7c10e3
created: 2026-07-02T16:40:00Z
source: user_message
durability: durable
confidence: high
tags: [preference, deployment]
entities: [tekmemo, staging-env]
supersedes: mem_4f2a91
---
User now prefers staging deploys on any weekday, since the team added
automated rollback and no longer needs the Friday buffer.
通过强制执行结构化的 frontmatter 模式:
supersedes 字段。如果用户偏好变了,我们从不原地编辑文件,而是写一个新文件并关联旧文件。旧文件从活跃搜索索引中排除,但保留在 Git 历史里,审计链完整保留。因为存储层是安全的磁盘文件,检索层可以激进调优。不依赖单一的原始向量相似度(这玩意儿在精确关键词匹配和时间查询上很拉胯),而是构建一个可丢弃的混合索引。
一个健壮的读路径使用多信号融合(Multi-Signal Fusion):
entities 数组建立轻量级索引。用互惠排名融合(Reciprocal Rank Fusion,RRF)把这三个信号合并成一个统一排名列表:
RRF_Score(d) = Σ 1 / (k + rank of document d in each retrieval method)
其中 rank 是文档 d 在某检索方法中的排名,k 是常数(通常设为 60)。这解决了直接把余弦相似度得分和 BM25 得分做平均的量纲不兼容问题。
诚实的架构必须直面自己的局限。文件优先记忆的两个主要挑战:
文件是单写人的绝佳真相来源。但当多个 Agent 或并行进程试图同时写入时就麻烦了。
如果 Agent 能读取不可信的外部来源(网页、第三方邮件),攻击者可以注入恶意文本,让它被索引为"持久记忆"。后续查询召回这个被污染的记录,Agent 行为就被劫持了。
source 标签是关键。不可信来源必须以低置信度标签写入记忆,并通过信任阈值分类器审核后才能进入主搜索索引。这正是我们在 TekMemo 要解决的问题。我们正在构建一个生产就绪的、文件优先的 AI Agent 长期记忆运行时,内置写入端智能、多信号融合和自动 Git 原生审计。
即将发布。如果你想构建持久、可审计、有韧性的 Agent 记忆,而不用折腾复杂的外部向量数据库,保持关注。