AI Agent 完整运行详细流程
AI Agent(智能体)核心本质:带记忆、规划、工具调用、反思闭环的大语言模型,不是单纯问答;能感知目标 → 拆解任务 → 调用能力 → 执行 → 校验结果 → 迭代直到任务完成。
经典架构:感知模块 → 记忆模块 → 规划模块 → 动作/工具模块 → 反思评估模块,形成循环。
一、整体总流程(宏观5大阶段)
- 任务接收与用户意图解析(感知)
- 记忆检索,加载上下文(记忆)
- 任务拆解、制定执行计划(规划)
- 执行动作:LLM推理 / 调用外部工具(动作)
- 结果校验、反思、循环迭代或输出最终答案(反思)
循环:如果结果不满足目标 → 回到规划/工具调用,重新执行;达标则终止,返回结果。
二、逐阶段详细拆解(内部完整步骤)
阶段1:任务接收 + 用户意图解析(感知层)
输入来源:用户Prompt、API事件、系统消息、传感器/业务数据
- 原始输入清洗
- 去除无效字符、过滤噪声,区分用户指令、约束条件、格式要求、禁止事项。
- 识别输入类型:自然语言、结构化JSON、文件、图片OCR文本等。
- 意图识别 & 目标提取
LLM理解:用户最终目标是什么,附带约束(时间、预算、输出格式、权限限制)。
> 示例:用户:帮我统计9月订单,排除退款,输出Excel。
> 目标:统计9月有效订单;约束:剔除退款,输出Excel。 - 目标可行性判断
- 判断任务是否需要外部工具(数据库查询、代码执行、联网搜索、文件读写);
- 判断是否缺少必要信息 → 主动向用户追问缺失参数。
- 若任务超出Agent能力范围,直接拒绝并说明原因。
阶段2:记忆模块加载上下文
AI Agent记忆分为三类:短时记忆、长时记忆、实体记忆
- 短时记忆(对话上下文窗口)
本次会话历史,保存在Prompt窗口内,本轮推理直接喂给LLM;有token上限,超长会截断。 - 长时记忆(向量数据库)
历史会话、过往任务、知识库,通过向量相似度检索召回相关历史信息,压缩后加入上下文,突破窗口限制。 - 实体记忆
保存实体信息:用户偏好、业务常量、账号参数、历史结论。
动作:把【用户目标 + 召回记忆 + 系统角色Prompt】合并,组成Agent的上下文Prompt,送入规划模块。
阶段3:规划模块 —— 任务拆解,生成执行计划
规划是Agent最核心能力,区分普通LLM和Agent。常见规划算法:链式思考CoT、思维树ToT、任务分解(Sub-task)、ReAct框架。
- 整体目标拆分为多个子任务(子步骤)
把大任务拆成串行/并行小任务,确定执行顺序、每个子任务的输入输出。
例:统计订单- 子任务1:连接订单数据库
- 子任务2:筛选9月订单
- 子任务3:过滤退款记录
- 子任务4:计算汇总指标
- 子任务5:生成Excel文件
- 子任务能力匹配
对每个子任务判断:- 仅LLM推理就能完成?
- 需要调用外部工具(搜索、SQL、Python代码、API)?
- 规划校验
检查计划是否存在逻辑冲突、缺少参数、权限不足;如果计划不可行,重新调整或者询问用户。
✅ 输出产物:执行计划(Task List),包含子任务列表、依赖关系、每个步骤预期结果。
阶段4:动作执行模块(LLM推理 + 工具调用)
主流框架:ReAct(Reason+Act,思考一步,行动一步),不是一次性跑完所有计划。
循环执行单个子任务:
- 根据当前子任务,生成Action(动作指令)
Agent思考:当前这一步要做什么,构造工具调用参数(function call)。
工具类型举例:- 搜索工具:联网查询实时信息
- Code Interpreter:运行Python、数据处理
- SQL工具:查询数据库
- 文件工具:读写文档、PDF解析
- API调用:调用第三方业务接口
- 工具调度器执行调用
- 参数校验:检查工具入参格式、类型是否合法;
- 发起工具请求,等待外部返回结果;
- 捕获异常:网络超时、接口报错、权限错误。
- 工具返回结果格式化
将工具原始返回(JSON、日志、表格)整理成自然语言/结构化文本,写入当前上下文。
两种分支:
① 子任务可以LLM直接推理完成 → LLM生成文本结果,不调用工具;
② 必须外部能力 → function call调用工具,拿到返回数据。
阶段5:反思 & 评估模块(Self-Reflection,闭环)
拿到子任务执行结果之后,Agent做自检,这是闭环关键。
- 结果校验
对照【子任务目标】检查:本次输出是否满足预期?数据是否完整?有没有错误?
校验维度:完整性、正确性、格式、是否符合约束条件。 - 反思推理(Self-critique)
LLM自我批评:- 本次结果有没有漏洞?
- 是否缺少信息?工具调用参数是否选错?
- 有没有更好执行路径?
- 分支判断(最重要的分支)
- ✅ 子任务完成:保存结果,进入下一个子任务;
- ❌ 结果错误/不足:
- 方案A:修正参数,重新调用工具;
- 方案B:修改执行计划,重新拆解任务;
- 方案C:信息不足,向用户提问获取更多信息;
- 🚫 任务失败:终止,返回失败原因。
- 全部子任务完成 → 汇总最终结果
合并所有子任务输出,按照用户要求格式整理、润色。 - 记忆写入
将本次任务关键结论、重要信息写入长时向量库,供后续Agent会话召回。
阶段6:输出交付,任务结束
把最终答案返回用户,附带引用来源、说明备注;
任务结束标记:Agent判定整体目标已经达成,终止循环。
三、经典ReAct框架 最简运行示例(直观感受)
ReAct = Thought(思考) → Action(动作) → Observation(观察工具返回) → Loop
用户提问:2026年国内新能源汽车销量前三名是哪些?
- Thought:我没有实时最新数据,需要联网搜索。
- Action:调用搜索工具,query="2026国内新能源汽车销量排名"
- Observation:搜索返回对应数据。
- Thought:拿到数据,整理前三名,核对来源。
- Action:不需要工具了,整理答案。
- Observation:结果满足用户需求。
- Finish:输出答案。
四、Agent内部关键组件清单
| 模块 | 作用 |
|---|---|
| LLM核心大脑 | 意图理解、任务规划、反思、文本生成 |
| 记忆系统 | 短时上下文窗口 + 向量库长时记忆 |
| 工具/Function Call | 外部能力扩展:搜索、代码、数据库、API |
| 规划器Planner | 任务拆解,生成执行步骤 |
| 反思器Reflector | 校验结果,发现错误,迭代修正 |
| 调度器 | 控制任务流转、循环、异常捕获 |
| 安全/权限模块 | 校验工具调用权限,防止越界、有害指令 |
五、Agent运行中的常见终止条件
- 所有子任务全部完成,目标达成(正常结束)
- Agent判定任务无法完成(缺少信息、无可用工具)
- 达到最大迭代轮次限制(防止无限死循环)
- Token耗尽、系统超时、安全拦截触发
- 用户主动终止任务
六、简易流程图文本版
用户输入
↓
意图解析 + 可行性判断 →【信息缺失?→ 询问用户】
↓
记忆检索(召回历史信息)
↓
规划器:拆解任务,生成执行计划
↓
循环(逐个子任务执行)
├─ Thought:思考当前步骤怎么做
├─ Action:LLM推理 / FunctionCall调用工具
├─ Observation:获取工具返回结果
└─ Reflect:评估结果是否达标
├─不达标 → 修改计划/重试工具/询问用户,回到循环
└─达标 → 保存结果,执行下一个子任务
↓
全部子任务完成 → 汇总结果
↓
写入长时记忆
↓
输出最终答案给用户
七、补充:多Agent运行流程(扩展)
多Agent系统:多个Agent分工协作(规划Agent、工具Agent、校验Agent、写作Agent)
- 主Agent(调度Agent)接收总任务,拆分并分配子任务给子Agent
- 各个子Agent独立执行自己的流程
- 子Agent返回结果给主Agent
- 主Agent汇总、校验冲突信息,协调修正
- 主Agent输出最终结果
如果你需要,我可以进一步输出:
- 可直接导入Obsidian的Markdown版本;
- Python伪代码实现这个完整Agent流程;
- 对比 ReAct / ToT / AutoGPT / Plan-and-Solve 不同Agent范式差异;
- 绘制Mermaid流程图。