Agent 工作原理:感知→规划→行动→反思
Agent 不是魔法。它是一个循环:看情况 → 想办法 → 干活 → 看结果 → 再调整。理解这个循环,你就理解了所有 Agent。
🔄 核心循环:OOO Loop
Agent 的本质是一个观察-行动-观察循环(Observe-Orient-Act Loop),更完整的版本是:
感知(Perceive) → 规划(Plan) → 行动(Act) → 反思(Reflect)
↑ ↓
└────────────────────────────────────────────────────┘这不是理论模型,而是所有 Agent 的实际运行方式——从 Claude Code 到 AutoGPT,都在做这个循环。
🧠 三件套:LLM + 记忆 + 工具
Agent 由三个核心组件构成,缺一不可:
1. LLM(大脑)
作用:理解、推理、决策、生成
关键能力:
- 理解用户意图("帮我重构这个模块" → 拆解为具体步骤)
- 规划执行路径(先读代码 → 分析结构 → 制定方案 → 逐步修改)
- 生成行动指令(调用哪个工具、传什么参数)
- 处理执行结果(代码跑通了?有报错?需要调整?)
2026 年趋势:
- 推理模型(o3、DeepSeek-R1)让规划更准确
- 长上下文(200k+ tokens)让 Agent 看到更多项目代码
- 多模态理解让 Agent 能"看"截图、UI、图表
2. 记忆(经验)
作用:存储历史信息,避免每次从零开始
| 类型 | 存什么 | 生命周期 | 示例 |
|---|---|---|---|
| 短期记忆 | 当前对话上下文 | 单次会话 | "用户要求用 Python" |
| 工作记忆 | 当前任务的中间状态 | 任务期间 | "已修改 3 个文件,还差 2 个" |
| 长期记忆 | 项目知识、用户偏好 | 永久 | "这个项目用 FastAPI + PostgreSQL" |
记忆管理的关键问题:
- 容量:上下文窗口有限,需要压缩和筛选
- 检索:如何从大量记忆中找到相关信息(向量检索 vs 关键词检索)
- 更新:什么时候写入新记忆、什么时候清理旧记忆
- 优先级:哪些信息更重要,不能被压缩掉
深入学习:记忆管理设计模式 →
3. 工具(手脚)
作用:执行具体行动,连接外部世界
常见工具类型:
| 类别 | 工具 | 做什么 |
|---|---|---|
| 代码 | 终端执行、文件读写 | 写代码、跑测试 |
| 搜索 | 网页搜索、知识库检索 | 查信息、找文档 |
| 数据 | 数据库查询、API 调用 | 取数据、做分析 |
| 浏览器 | 网页操作、截图 | 看页面、做 QA |
| 通信 | 邮件、消息推送 | 发通知、协同 |
工具调用的关键问题:
- 选择:Agent 怎么知道该用哪个工具?(靠 LLM 推理 + 工具描述)
- 参数:怎么传正确的参数?(靠 JSON Schema 描述 + LLM 生成)
- 错误:工具调用失败了怎么办?(重试、降级、人工介入)
- 安全:Agent 能执行真实操作,需要权限控制
深入学习:工具使用设计模式 → | MCP 协议 →
📐 四种推理模式
Agent 怎么"想"?有四种主流模式:
1. CoT(Chain of Thought)— 分步推理
问题: "这个函数为什么报错?"
思考:
1. 先看报错信息 → TypeError: 'NoneType' object is not subscriptable
2. 找到出错行 → line 42, data['key']
3. 分析原因 → data 可能是 None
4. 查上游 → 函数 get_data() 在某些情况下返回 None
5. 结论 → 需要加 None 检查适用:需要逻辑推理的任务(调试、分析、规划)
2. ReAct(Reasoning + Acting)— 边想边干
思考: 需要查看项目结构 → 行动: ls 项目目录
观察: 看到 src/, tests/, config/ → 思考: 先看 src/ 下的文件
行动: cat src/main.py → 观察: 发现用了 FastAPI
思考: 需要看路由定义 → 行动: cat src/routes.py
...适用:需要与环境交互的任务(代码修改、信息检索)
3. Plan-and-Execute — 先规划后执行
规划阶段:
1. 分析需求 → 需要加用户认证
2. 制定计划 → [设计模型 → 写路由 → 加中间件 → 写测试]
3. 确认计划 → 用户同意后开始
执行阶段:
1. 执行步骤1 → 创建 User 模型
2. 执行步骤2 → 写 /auth 路由
3. ...适用:复杂、多步骤的任务(项目开发、系统重构)
4. Reflection — 做完回头看
执行: 写了一段代码
反思: 这段代码有什么问题?
1. 性能 → 查询没有索引,可能慢
2. 安全 → 没有输入验证
3. 可维护 → 硬编码了配置值
改进: 加索引、加验证、提取配置适用:需要质量保证的任务(代码审查、方案优化)
⚠️ Agent 会犯什么错
理解 Agent 的工作原理,也要理解它的失败模式:
| 错误类型 | 原因 | 例子 | 防御 |
|---|---|---|---|
| 幻觉 | LLM 生成不存在的信息 | 编造一个不存在的 API | 交叉验证、工具确认 |
| 循环 | 规划出错,反复尝试同一方案 | 连续 5 次用同样的方法修 bug | 设置最大迭代次数 |
| 工具误用 | 选错工具或传错参数 | 用搜索工具去查本地文件 | 清晰的工具描述 + Schema |
| 上下文溢出 | 记忆太多,丢失关键信息 | 忘了用户最初的需求 | 上下文压缩、优先级管理 |
| 过度自主 | 自行做高风险决策 | 直接删除生产数据库 | 人类审批、权限边界 |
关键认知:Agent 的可靠性 = LLM 质量 × 工具可靠性 × 人类把关程度。三者缺一,Agent 就不可靠。
🔗 延伸阅读
- Agent 类型全景 → — 不同 Agent 擅长什么
- MCP 与工具集成 → — Agent 怎么连接外部世界
- Agent 框架选型 → — 用什么框架造 Agent
- Agent 设计模式完整教程 → — 21 个设计模式深入