如何构建不会遗忘的 Agent Memory
发布: (2026年4月24日 GMT+8 23:54)
4 分钟阅读
原文: Dev.to
Source: Dev.to
问题
每个 AI 开发者都会遇到这个瓶颈:你的代理在第一天表现很好,随后悄然退化。它开始做出更糟的决策,使用的工具更少,且更自信地产生幻觉。你已经构建了可观测性,能够看到退化的过程——但你无法修复那些你记不住的东西。
真正的根本原因是?大多数代理记忆架构是为存储而设计的,而不是为连续性而设计的。
三层记忆修复
第 1 层:短暂上下文(你已经拥有的)
- 对话历史
- 工具调用追踪
- 系统提示
这就是你的 工作记忆。它在每个会话结束后会衰减。
第 2 层:行为指纹(大多数代理忽略的)
跟踪你的代理 真实的身份 随时间的变化:
- 工具使用模式(调用了哪些工具、调用频率、调用顺序)
- 信心轨迹(分数是上升还是下降?)
- 错误特征(哪些错误会重复出现?)
将这些存储为 身份指纹。在每次会话开始时先加载指纹——这代表的是你的代理过去的样子,而不仅仅是上一次说的话。
第 3 层:复合记忆(缺失的层)
不要只记录“发生了什么”,而是记录 发生了什么变化:
- 被剪枝的决策树
- 停止工作的工具组合
- 在特定条件下的策略转变
这种复合记忆会不断累积。每一次会话都变得更聪明,而不仅仅是信息更丰富。
实现(不足 50 行)
interface AgentFingerprint {
id: string;
toolDiversity: number; // Unique tools / total calls
confidenceTrend: number[]; // Last 10 scores
errorSignature: string[]; // Top error types
strategiesUsed: string[]; // What worked before
}
async function loadFingerprint(agentId: string): Promise {
const stored = await db.get(`fingerprint:${agentId}`);
return stored
? JSON.parse(stored)
: {
id: agentId,
toolDiversity: 1,
confidenceTrend: [],
errorSignature: [],
strategiesUsed: []
};
}
async function saveFingerprint(fp: AgentFingerprint) {
// Compact: keep last 30 days, not all history
fp.confidenceTrend = fp.confidenceTrend.slice(-10);
fp.errorSignature = fp.errorSignature.slice(-20);
await db.set(`fingerprint:${fp.id}`, JSON.stringify(fp));
}
关键洞见
代理的退化在变得代价高昂之前是不可见的。构建能够提前捕捉退化的记忆——而不是仅仅记录事后文档的日志。
这三层并不是为了存储更多,而是为了让每一次会话 感知模式,而不仅仅是感知提示。
你的代理缺失的记忆层是哪一层?