在构建AI Agent系统时,核心挑战始终是如何在有限的上下文窗口与无限增长的任务信息之间取得平衡。本教程将深入剖析四种经典Agent设计范式,帮助你理解它们各自的运作机制、优缺点、适用场景以及选型思路,从而突破上下文限制,构建更强大的AI应用。
0. 背景:内存枷锁与Agent架构的演化
LLM(大语言模型)与Agent的核心矛盾在于:
“任务所需信息量” > “模型可持有上下文窗口”
当LLM的上下文窗口有限(如1M tokens),Agent系统必须通过外部“上下文管理策略”来弥补记忆短板。四大范式正是为此而生。
一、 单体线性循环:极简可靠的工匠范式
1.1 系统轮廓
+------------------------------------------------+
| Global Context (全局上下文) |
| 用户输入 / 思考串 / 工具调用 / 工具结果 ... |
+------------------------------------------------+
↓ 读 & 写
+------------------+ 调用 +--------------+
| LLM 大脑 | ───────▶ | Tool 执行器 |
+------------------+ 结果 +--------------+
- 唯一存储:
GlobalContext - 循环核心:ReAct(Reason → Act → Observe)
- 所有历史:线性追加,LLM每次都读全量
1.2 机制详解
- 每轮循环,LLM读取全部历史,输出“思考”与“工具调用”。
- 工具执行后,结果追加回上下文,供下一轮推理。
- 任务完成由
FinishTool显式标记。
1.3 内部伪代码
ctx = ["用户: 做一杯咖啡"]
for _ in range(10):
output = llm(ctx)
thought, tool, params = parse(output)
ctx += [f"思考: {thought}"]
if tool == "Finish": return params["result"]
obs = executor(tool, params)
ctx += [f"观察: {obs}"]
1.4 亮点 & 缺陷
| ✅ 亮点 | ❌ 缺陷 |
|---|---|
| 决策一致性最高,调试简单 | ctx膨胀,超窗口即死 |
| 架构最小,实现≤100行 | 无并行,LLM空转等待 |
| 适合短链路脚本生成 | Token浪费严重 |
适用场景:短链路、强一致性任务、教学演示。
