如何构建不会遗忘的 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));
}

关键洞见

代理的退化在变得代价高昂之前是不可见的。构建能够提前捕捉退化的记忆——而不是仅仅记录事后文档的日志。

这三层并不是为了存储更多,而是为了让每一次会话 感知模式,而不仅仅是感知提示。

你的代理缺失的记忆层是哪一层?

0 浏览
Back to Blog

相关文章

阅读更多 »