LLM 学习笔记 Day 5:Agent 核心组件——Planner、Memory 与 Reflection

第一部分:Planner------Agent 的决策大脑

1.1 Planner 是什么?

最常见的误解 :Planner 就是"任务拆解"。

真正的定义 :Planner 的本质是决策(Decision Making),而不是简单的拆分。它负责回答"当前应该做什么"。

Planner vs Executor

Planner Executor
职责 决定下一步做什么 真正去执行
输出 任务计划(Task List) 执行结果(Observation)
比喻 大脑思考 手脚行动

1.2 为什么 Workflow 不能代替 Planner?

Workflow 和 Graph 的根本局限:路径是预设的。

  • Workflow:流程固定,遇到未预设的需求会走错路
  • Graph:支持条件分支,但分支逻辑仍需提前定义
  • Planner:动态理解用户意图,生成全新的执行计划

对比示例

用户说:"帮我生成简历,再帮我模拟面试,再给职业建议。"

这是一个复合任务,Workflow 无法同时处理三条完全不同的执行路径。Planner 却能动态规划出三个 Task 序列。

1.3 Planner 规划的是 Task,不是 Tool

Task(任务) Tool(工具)
是什么 要完成的一个语义步骤 执行任务的具体能力
谁决定 Planner Executor
例子 "分析 JD" jd_analysis() 函数

分层流程

复制代码
Planner → 生成 Task 列表
Executor → 为每个 Task 选择对应的 Tool
Tool → 执行具体操作

1.4 为什么 Planner 一定要 LLM?

Planner 不是 Router,是 Reasoner。

Router Reasoner
根据关键词选分支 理解意图后推理
固定规则(if...else) 动态生成
只能处理见过的场景 能处理全新场景

关键词匹配 只会触发相关流程。

LLM Planner 能理解

1.5 Planner 分层设计(以简历生成 Agent 为例)

复制代码
Planner(制定跨 Skill 计划)
  ↓
Tool Router(将 Task 映射到 Tool)
  ↓
Workflow/Graph(控制单个 Skill 内部流程)
  ↓
Node(完成具体功能)
  ↓
Tool(调用外部能力)

关键设计原则

  • Planner 放最外层:它是唯一能理解用户全局意图的模块
  • Workflow 只负责一个 Skill:各 Skill 流程独立,避免"超级分支树"
  • Skill 内部用 Graph 而非 Planner:固定流程不需要动态决策
  • Node 不能决定调用 Skill:士兵不能决定打仗策略
  • Reflection 放 Planner 后:评估的是整体质量,不是局部正确性

第二部分:Memory------Agent 的记忆系统

2.1 Context ≠ Memory(面试第一问)

Context Memory
生命周期 单次会话 跨会话持久存在
存储方式 拼在 Prompt 里 存在数据库/向量库
类比 看着聊天记录回答 记住了一个朋友的名字

Context:每次把完整聊天记录拼进 Prompt,模型是"重新看了一遍",不是"记住了"。

Memory:昨天说你叫小明,今天新开窗口,Agent 依然知道。这才是真正的记忆。

2.2 Agent 的四层 Memory

第一层:Conversation Memory(对话记忆)
  • 本质:最近几轮的原始对话记录
  • 作用:维持多轮对话的连贯性
  • 存储:保留最近 k 轮,存在 Session 中
第二层:Summary Memory(摘要记忆)
  • 本质:用 LLM 对长对话做阶段性总结
  • 作用:降低 Token 成本,保留关键信息
  • 触发:对话轮次超阈值或遇到自然断点时压缩
第三层:Profile Memory(用户画像记忆)
  • 本质:长期不变的用户基本信息(学历、技能、偏好)
  • 作用:建立长期用户画像,支撑个性化服务
  • 更新:极少更新,半年不变
第四层:Retrieval Memory(检索记忆)
  • 本质:基于向量相似度的语义记忆(RAG 的思想基础)
  • 作用:为 Agent 提供海量外部知识的动态检索
  • 存储:向量数据库

2.3 Workflow State ≠ Memory

Workflow State Agent Memory
生命周期 Workflow 执行期间 Agent 整个生命周期
可见范围 当前 Skill 内部 所有 Skill 共享
持久化 流程结束即回收 跨会话持久保存

关键设计原则:Memory 属于 Agent 层,由 Memory Manager 统一管理,不应下沉到 Workflow。

2.4 Memory 工程设计要点

写入时机:重要信息触发写入(新用户属性、对话轮次超阈值),而非每轮强制存储。

读取时机:Planner 规划前统一读取 Profile + Summary,Skill 按需拉取 Retrieval。

避免膨胀

  • 淘汰策略:Conversation 只保留最近 N 轮
  • 压缩策略:Summary 替代原始长对话
  • 去重策略:Profile 更新时合并相同属性

百万用户隔离方案

组件 技术选型 隔离方式 作用
Session Redis session_id 临时对话,TTL 过期
持久存储 PostgreSQL user_id Profile、Summary
向量检索 Milvus/Pinecone Namespace 按用户隔离知识库
热缓存 Redis user_id 频繁访问数据加速

第三部分:Reflection------Agent 的自我意识

3.1 为什么需要 Reflection?

LLM 的根本矛盾:会生成,不会判断。

LLM 的本质是预测下一个 token,它的核心能力是"造句"而非"答题"。第一次生成的内容只是一个"候选答案",不是"最终答案"。

Reflection 补上了"判断"的缺失------让 Agent 能在生成后审视不足,定点修正。

人类的工作模式 :打草稿 → 检查 → 修改

Agent 的工作模式:Generate → Reflect → Refine

3.2 Retry vs Reflection(面试高频)

维度 Retry Reflection
核心动作 重新执行 先评价,再决定如何重新执行
是否改变策略
适用场景 临时性系统故障 输出质量不满足要求
本质 工程容错 智能闭环优化

一句话区分

  • Retry:不改变策略,只是"再试一次"
  • Reflection:先分析"为什么错",再"换种方式做"

3.3 Reflection 的三层粒度

层级 检查范围 行动
Node Reflection 单个步骤的输出 重做当前步骤
Workflow Reflection 单个 Skill 的整体结果 回退到 Skill 内部某步骤
Planner Reflection 整个任务计划的合理性 重新规划全局任务

分层优势

  • Node 层快速拦截单步错误
  • Workflow 层定点修复流程问题
  • Planner 层调整全局策略

3.4 Reflection 检查的四个维度

维度 含义 示例
Completeness 有没有遗漏? JD 要求 Docker,简历没写
Correctness 有没有错误? 用户做 Java,简历写 Python
Consistency 前后是否一致? 第一页 Java,第二页 Python
Quality 表达是否专业? 口语化、重复啰嗦

3.5 为什么 Reflection 不能无限循环?

  1. 成本爆炸:每次 Reflection 都是一次 LLM 调用
  2. 收益递减:第一次改进最明显,第三次可能更差
  3. 跑偏风险:过度修改可能偏离原始目标

工程实践:设置最大循环次数(如 2 次)、质量阈值(超 8 分停止)、Token 预算超限强制终止。

第四部分:三者协作------Agent 的完整闭环

现代 Agent 的 PDCA 循环

PDCA Agent 对应
Plan Planner 制定任务计划
Do Executor/Workflow 执行
Check Reflection 评估输出质量
Act 重新 Planner 或 Workflow,定点修复

完整数据流

复制代码
用户输入
  ↓
Planner ←────────── Memory(规划前读取画像和历史)
  ↓
Workflow(Skill 内部流程)
  ↓
Node(具体功能执行)
  ↓
Result
  ↓
Reflection(多层评估)
  ↓
Memory Update(重要信息持久化)
  ↓
Planner(根据 Reflection 结果决定下一步)

核心关系总结

  • Planner 是大脑:决定做什么
  • Memory 是海马体:记住该记住的,忘掉该忘掉的
  • Reflection 是自我意识:审视自己,修正错误
  • 三者缺一不可:没有 Planner 是盲目的,没有 Memory 是健忘的,没有 Reflection 是鲁莽的
相关推荐
risc1234561 小时前
“解决了什么痛点”与“为什么有这个东西”的关系?
笔记
hj2862512 小时前
Docker 容器化技术标准化笔记
java·笔记·docker
hyhsandy18032 小时前
STM32F103 TIM学习笔记
笔记·stm32·学习
栈溢出了2 小时前
Redis 消息队列笔记:List 与 Pub/Sub
redis·笔记·list
GuHenryCheng2 小时前
【ESP32】ESP-IDF开发环境搭建(cursor)
git·stm32·单片机·学习
鹰影473 小时前
一款AI笔记助手和远程同步的markdown笔记idea-note
人工智能·笔记·rust·typescript·react
编程圈子3 小时前
电机驱动开发学习18. SVPWM空间矢量调制算法详解与实现
驱动开发·学习·算法
Kobebryant-Manba3 小时前
学习注意力的seq2seq
学习
AI科技星3 小时前
基于32维Cayley_Dickson超复数的全域拓扑统一场论——反重力、真空自持供能、维度瞬移与星际宇宙脑秩序体系
人工智能·学习·算法·机器学习·数据挖掘