Ch14 Agent原理

Agent 原理与 ReAct

一句话理解

Agent = 感知 (Perceive) + 思考 (Think) + 行动 (Act) + 观察 (Observe) 的自主循环系统。Agent 不是”被程序控制的工具”,而是”能自主决策和执行的数字实体”——它感知环境、推理下一步、执行动作、观察结果,然后根据观察调整策略,持续循环直到完成任务。

核心概念

Agent 的定义

Agent 是一个能够自主感知环境、做出决策、执行动作并从结果中学习的系统。与传统的程序不同,Agent 的决策者不是”人预先编写的逻辑”,而是”模型在运行时的推理”。

Agent 的四个核心能力

能力英文说明本 Vault 中的实现
感知Perceive获取环境信息:文件系统、API响应、用户输入读取 .md 文件、导航文件夹结构
思考Think推理下一步:分析信息、分解任务、制定计划分析摘要、判断需要哪些全文
行动Act执行动作:调用工具、读写文件、发送消息读取文件、创建笔记、调用 MCP 工具
观察Observe评估结果:检查输出、验证正确性、调整策略检查读取结果、判断信息是否足够

ReAct 循环的完整工作流

ReAct (Reasoning + Acting) 是 Agent 的核心执行模式。它不是简单的”推理→行动”,而是”推理→行动→观察→推理→行动→观察→…”的持续循环。

ReAct 循环的四个阶段

┌──────────────────────────────────────────────────┐
│                    ReAct 循环                      │
│                                                    │
│  ┌──────────┐      ┌──────────┐                    │
│  │ Perceive │─────→│  Think   │                    │
│  │ 感知环境  │      │ 推理下一步│                    │
│  └──────────┘      └──────────┘                    │
│       ↑                  │                         │
│       │                  ↓                         │
│  ┌──────────┐      ┌──────────┐                    │
│  │ Observe  │←─────│   Act    │                    │
│  │ 观察结果  │      │ 执行动作  │                    │
│  └──────────┘      └──────────┘                    │
│       │                  │                         │
│       └──── 任务完成? ───┘                         │
│              否 → 继续循环                          │
│              是 → 输出结果                          │
└──────────────────────────────────────────────────┘

每个阶段详解

Perceive(感知)

Agent 通过多种渠道感知环境:

  • 用户输入(自然语言指令)
  • 文件系统(读取文件、列出目录)
  • API 响应(工具调用返回的结果)
  • 对话历史(之前的交互记录)
  • 系统状态(时间、内存、上下文窗口使用情况)

Think(思考)

Agent 基于感知到的信息进行推理:

  • 分析用户意图:用户真正想要什么?
  • 分解任务:复杂任务可以拆分为哪些子任务?
  • 制定计划:执行顺序是什么?有哪些依赖?
  • 选择工具:需要调用哪些工具?
  • 评估风险:这个行动可能有什么后果?

Act(行动)

Agent 执行具体的动作:

  • 调用工具(MCP Tool Call)
  • 读写文件
  • 发送消息
  • 搜索知识库
  • 执行代码

Observe(观察)

Agent 检查行动的结果:

  • 工具调用成功了吗?
  • 返回的数据符合预期吗?
  • 信息足够回答用户了吗?
  • 需要调整策略吗?
  • 发现错误需要修正吗?

ReAct 循环示例

用户提问:“帮我整理本周的会议纪要”

循环 1:
  Perceive: 用户想整理本周会议纪要
  Think: 需要先获取本周的会议列表
  Act: 调用日历 API 获取本周会议
  Observe: 获取到 5 个会议,3 个有纪要链接

循环 2:
  Perceive: 5 个会议,3 个有纪要
  Think: 需要获取 3 个会议的纪要内容
  Act: 调用妙记 API 获取 3 个纪要
  Observe: 3 个纪要获取成功,长度分别为 2000、1500、3000 字

循环 3:
  Perceive: 3 个纪要内容在手
  Think: 需要汇总关键信息,按主题分类
  Act: 分析纪要内容,提取关键决策和行动项
  Observe: 提取出 8 个关键决策,12 个行动项

循环 4:
  Perceive: 信息已整理完毕
  Think: 任务完成,可以输出最终报告
  Act: 生成结构化报告
  Observe: 报告已生成,用户确认满意

循环结束 → 输出报告

Agent vs 传统程序

维度传统程序Agent
决策者人(开发者预先定义逻辑)模型(运行时推理和决策)
执行方式确定性流程(if-else, for, while)动态推理(根据观察调整策略)
错误处理开发者预先定义 try-catch自我观察、自我纠错
灵活性只能处理预定义的情况能处理未预见的开放情况
工具使用代码中硬编码调用动态选择和组合工具
任务范围封闭的、可预见的开放的、需要推理的
可解释性代码逻辑可追溯推理过程(Thought)可追溯
开发方式编写代码逻辑设计环境和约束

Agent 的关键组件

规划 (Planning)

Agent 需要将复杂任务分解为可执行的步骤。规划能力决定了 Agent 处理复杂任务的上限。

规划策略:

  • ReAct 风格:边推理边行动,适合探索性任务
  • Plan-and-Execute 风格:先制定完整计划,再逐步执行,适合确定性任务
  • 分层规划:高层目标 + 低层子任务,适合复杂多层次任务

记忆 (Memory)

Agent 的记忆系统分为两个层次:

记忆类型存储内容生命周期实现方式
短期记忆当前对话历史、最近的操作结果当前会话上下文窗口中的消息
长期记忆用户偏好、领域知识、学习到的经验跨会话向量数据库、文件系统、笔记

工具使用 (Tool Use)

Agent 通过工具与外部世界交互。工具是 Agent 能力的延伸。

工具类型示例本 Vault 中的工具
信息检索搜索引擎、数据库查询文件搜索、WikiLink 追踪
数据处理计算、分析、转换文本处理、表格生成
外部操作发送邮件、创建文档、执行代码创建笔记、写文件
知识管理读写笔记、搜索知识库读取摘要、加载全文

反思 (Reflection)

反思是 Agent 区别于简单 Tool Calling 的关键能力。Agent 在执行每个动作后,观察结果并反思:

  • 这个结果符合预期吗?
  • 需要调整策略吗?
  • 发现了什么新信息?
  • 当前路径是否还正确?

ReAct 的局限与演进

局限说明解决方案
无限循环Agent 可能陷入循环无法终止设置最大步数、时间限制
错误累积早期错误导致后续一系列错误反思机制、定期自我检查
上下文膨胀每步都追加到上下文,窗口耗尽上下文压缩、摘要历史
工具选择错误选择了错误的工具导致失败多工具候选、失败后重试
缺乏全局规划边做边想可能缺乏全局视角Plan-and-Execute 模式

相关笔记

来源

关联10

知识图谱

局部图谱 · 点节点跳转