跳转到内容

Agent 自学习与模式识别

Agent 自学习与模式识别

学习目标

本章介绍 AI Agent 系统如何实现”从经验中学习”——不仅完成当前任务,还能将成功的模式存储下来,在未来的类似场景中快速复用,同时避免灾难性遗忘。

核心概念

为什么 Agent 需要自学习

静态 Agent 每次从零开始处理任务,即使之前遇到过完全相同的问题。自学习 Agent 通过以下三个层次积累经验:

  1. 模式匹配:识别”这个场景我以前见过”,直接复用成功的策略
  2. 轨迹学习:记录 Agent 的完整决策路径(做了什么 → 结果如何),从中提取可泛化的规则
  3. 神经适应:将经验编码为可调用的权重或向量,实现亚毫秒级的模式检索

通用学习范式:RETRIEVE → JUDGE → DISTILL → CONSOLIDATE

这是一个从任何 Agent 系统中抽象出的通用学习管线:

阶段职责类比
RETRIEVE从历史记忆中检索与当前任务相似的模式”这个问题我以前解决过吗?“
JUDGE评估 Agent 的决策结果是成功还是失败”上次的方法效果好吗?“
DISTILL从成功/失败中提取可复用的关键模式”上次做对了什么?做错了什么?“
CONSOLIDATE将新模式整合到长期记忆中,防止覆盖旧知识”怎么记住新知识的同时不忘旧知识?“

自学习的三种模式

1. 模式匹配(Pattern Matching)

最简单的形式:将成功经验存储为键值对或向量,下次遇到相似场景时检索。

关键组件

  • 模式存储:向量化(支持语义相似度检索)或键值存储(精确匹配)
  • 检索策略:向量相似度搜索(Top-K)、关键词匹配、标签过滤
  • 质量评分:对存储的模式进行质量打分,优先使用高评分模式

优势:实现简单,检索快速。 陷阱:模式过于具体时无法泛化到新场景。需要在”具体”与”通用”之间找到平衡。

2. 轨迹学习(Trajectory Learning)

不仅存储”答案”,还存储 Agent 的完整决策路径:

任务: "修复认证 bug"
→ 轨迹: [搜索 auth 模块] → [发现 TOCTOU 竞态] → [添加 Promise 缓存] → [通过测试]
→ 评判: success (score: 0.95)
→ 提炼: "TOCTOU 竞态 → 使用 Promise 缓存而非锁"

关键组件

  • 轨迹记录:每个 Agent 执行步骤的结构化日志
  • 结果关联:将轨迹与最终结果(成功/失败、耗时、质量评分)关联
  • 规则提取:从多条成功轨迹中归纳通用规则

优势:可以学习”怎么做”而不仅是”做什么”。 陷阱:轨迹数据量大,存储和检索成本高。需要定期压缩和淘汰低价值轨迹。

3. 神经适应(Neural Adaptation)

将经验编码为神经网络权重或向量嵌入,实现亚毫秒级检索:

  • LoRA(Low-Rank Adaptation):对大语言模型进行小规模微调,仅更新低秩矩阵
  • Elastic Weight Consolidation(EWC):在学习新知识时,对影响旧知识的权重施加惩罚,防止灾难性遗忘
  • Mixture of Experts(MoE):将不同领域的经验分配给不同的”专家”网络,按任务类型路由

优势:检索速度极快(<0.05ms),可以处理非结构化模式。 陷阱:训练成本高,需要足够的样本量。模型容量有限,专家数量受约束。

防止灾难性遗忘

这是自学习系统的核心挑战:学习新知识时,如何不遗忘旧知识?

策略对比

策略原理适用场景代价
EWC(弹性权重巩固)对重要权重施加保护,阻止大幅修改参数化模型需要 Fisher 信息矩阵
经验回放定期混合旧样本与新样本一起训练向量存储存储空间翻倍
模块化隔离不同领域的经验存储在不同模块中MoE 架构路由复杂度增加
渐进式暴露新知识以小剂量逐步融入在线学习学习速度慢

智能路由:三级模型选择

自学习系统还可以帮助选择最优的执行路径:

通过学习历史任务的复杂度与最优执行路径的映射关系,系统可以在新任务到来时快速判断应该使用哪种处理方式,避免过度消耗资源。

问题与规避

陷阱 1:模式过拟合

问题:存储的模式过于依赖特定场景的细节,无法泛化到新任务。

规避:在 DISTILL 阶段添加泛化检查——如果提取的模式包含具体文件名、变量名或特定值,则拒绝存储或要求重写为通用形式。

陷阱 2:遗忘曲线

问题:随着新模式不断写入,旧模式被覆盖或排名下降。

规避:使用 CONSOLIDATE 阶段定期进行记忆整理——合并相似模式、淘汰过时模式、提升高频使用模式的优先级。

陷阱 3:学习延迟

问题:新写入的模式需要”冷却期”才能生效,Agent 在学习后立即遇到相同场景时无法复用。

规避:在会话级别维护热缓存(hot cache),新学习立即对当前会话可见;后台异步写入持久存储。

陷阱 4:虚假模式

问题:偶然成功的策略被错误地记录为”可靠模式”。

规避:JUDGE 阶段要求多次验证——同一模式至少在 2-3 次独立场景中都成功,才标记为”可信”。

设计取舍

向量化 vs 键值存储

维度向量化存储键值存储
检索能力语义相似度,支持模糊匹配精确匹配
延迟依赖索引(HNSW 可达亚毫秒)O(1)
存储成本较高(384 维向量 × 条目数)
泛化能力

推荐:两者结合。高频精确匹配走键值路径,模糊场景走向量检索。

在线学习 vs 批量学习

维度在线学习(每次任务后立即学习)批量学习(定期整理后学习)
响应速度即时延迟
噪声抵抗弱(单次失败也会写入)强(多场景统计后决定)
资源消耗持续集中

推荐:在线学习写入热缓存(快速可见),批量学习写入持久存储(质量保证)。

参考来源


补充:Agno 的 LearningMachine 六存储协调器

来源:Agno libs/agno/agno/learn/machine.py,2026-05-30

六存储统一协调

Agno 的 LearningMachine 协调 6 种学习存储,每种独立配置:

存储捕获内容范围配置类型
User Profile结构化字段(姓名、偏好)每用户bool / Config / Store
User Memory非结构化观察每用户bool / Config / Store
Session Context目标、计划、进度、摘要每会话bool / Config / Store
Entity Memory外部事物事实、事件、关系可配置命名空间bool / Config / Store
Learned Knowledge可复用模式、最佳实践可配置命名空间bool / Config / Store
Decision Log决策追踪(为什么选了 A 而非 B)每用户/会话bool / Config / Store

每种存储接受三种配置输入:

  • boolTrue 启用默认配置,False 禁用
  • Config:自定义配置(如模型、提示词、数据库)
  • Store:完全自定义的 LearningStore 实例

一行启用全部学习

# 伪代码:最简学习 Agent
agent = Agent(
model=OpenAIResponses(id="gpt-4o"),
db=PostgresDb(db_url="..."),
learning=True, # 一行启用全部 6 种学习存储
)

Curator 记忆维护

Curator 负责后台记忆维护:

  • 合并重复记忆
  • 淘汰过期记忆
  • 去重和关联

自定义存储扩展

LearningMachine 支持 custom_stores 参数,接受任何实现 LearningStore 协议的类。这使得用户可以添加项目特定的学习存储类型,而不需要修改框架。

# 伪代码:自定义存储
class BugPatternStore(LearningStore):
def recall(self, query: str) -> str: ...
def process(self, messages: list) -> None: ...
def get_tools(self) -> list: ...