Appearance
Agent 核心架构
Agent 和普通 LLM 应用的本质区别:Agent 有循环,有工具,有状态。
这个模块是整条主线最重要的部分。框架可以换,但这里的概念是所有 Agent 系统的底层逻辑。
子课展开学习:
课次
课次 01 · Tool Use / Function Calling
核心问题: 模型怎么"调用"代码?
LLM 本身不能执行代码,只能生成文本。Tool Use 是一种约定:模型生成结构化的"我想调用什么工具、传什么参数",你的代码负责真正执行,再把结果塞回给模型。
你会学到:
- 工具定义格式(JSON Schema):name、description、parameters
- 工具调用的完整流程:请求 → 模型响应 → 执行 → 结果返回
- 参数校验:为什么模型给的参数不一定符合格式
- 错误处理:工具调用失败时怎么让模型重试或降级
实验: 用 Claude API 定义一个查天气的工具,跑通完整调用循环。
课次 02 · ReAct 循环
核心问题: 多步任务怎么让模型自主推进?
ReAct = Reasoning + Acting。模型在每一步先推理(该做什么),再行动(调用工具),看到结果后继续推理,直到任务完成。
你会学到:
- ReAct 的执行循环:Thought → Action → Observation → Thought...
- Scratchpad:让模型把推理过程写出来,提升准确率
- 停止条件:什么时候该停,避免无限循环
- 最大步数限制:生产环境必须加的安全阀
vs Plan-then-Execute: ReAct 是边想边做,Plan-then-Execute 是先规划再执行——各自的适用场景。
课次 03 · Memory 架构
核心问题: Agent 怎么"记住"东西?
LLM 本身无状态,每次调用独立。Agent 要有记忆,必须由开发者显式管理。
| 记忆类型 | 存在哪 | 适用场景 |
|---|---|---|
| In-context Memory | 当前对话的 messages 数组 | 短期、当次对话的上下文 |
| External Memory | 数据库 / 向量存储 | 跨会话的长期知识、历史记录 |
| Episodic Memory | 对话摘要 + 检索 | 超长任务的工作记忆管理 |
| Procedural Memory | 系统 prompt / 工具定义 | Agent 的角色、能力、行为约束 |
你会学到:
- 对话历史管理:滚动窗口、摘要压缩、重要信息提取
- 何时用 RAG 替代 in-context:检索比全量加载更经济
- 记忆写入时机:什么值得存,什么应该丢弃
课次 04 · Planning 模式
核心问题: 复杂任务怎么拆解?
不是所有任务都适合 ReAct 的动态规划。任务足够复杂时,需要先有全局计划,再逐步执行。
你会学到:
- Plan-then-Execute:先生成总体计划,再按步骤执行,适合确定性强的任务
- 动态重规划:执行中遇到意外时如何调整计划
- Sub-agent 分解:主 Agent 规划,子 Agent 执行——复杂任务的横向扩展
- DAG 任务图:有依赖关系的并行任务怎么建模
课次 05 · Agent 失败模式
核心问题: Agent 在哪里会出错,怎么防?
Agent 的失败不像普通程序那样会报错——它可能默默做错事,或者卡在循环里。
| 失败模式 | 表现 | 防御手段 |
|---|---|---|
| 幻觉工具调用 | 调用了不存在的工具 | 工具列表枚举、调用前校验 |
| 参数幻觉 | 参数字段名/格式不对 | JSON Schema 严格校验 |
| 无限循环 | 每步都重复相同动作 | 最大步数 + 循环检测 |
| 状态污染 | 上轮错误结果影响下轮 | 明确的错误状态处理 |
| 过度自信 | 不确定时不请求帮助 | 系统 prompt 明确「不确定时停下」 |
Human-in-the-loop: 什么情况下 Agent 应该暂停等待人工确认。
你做完这个模块能交付什么
一个可以自主执行多步任务的 Agent:
- 有至少 3 个工具(文件读写、搜索、代码执行)
- 有 ReAct 循环,能处理工具调用失败
- 有基本的记忆管理(历史压缩 + 关键信息持久化)
- 有安全阀(最大步数、循环检测、人工介入点)
