写在前面
先提前叠个甲:本人6年前端开发,分享文章仅是我个人心得,就当看个乐呵。可能适合已有几年开发经验转行AI Agent的同学做参考,每个人基础、学习节奏不一样,不唯一、不绝对,大家有不同看法也可以友好交流,不喜勿喷。
第一章 LLM 和 Agent 区别
1.1 一句话区别:LLM 能"说"也能"被约束",Agent 多的是"循环 + 动态工具 + 上下文缓存"
- LLM 本身:同样可以接收 prompt、加约束(角色 / 格式 / 规则 / few-shot),一次问答出个结果就结束
- Agent 在 LLM 之上多出的三样东西:
- 循环:能跑多轮、边想边干,不是一问一答就完
- 动态调工具:运行时自己决定调哪个 API / 函数,而不是你写死
- 上下文缓存:把中间结果、记忆塞回上下文,带着历史继续干
顺带一句:简单、可预测的活千万别请 Agent 来添乱(什么时候该上、什么时候该用固定流程,后面「Workflow 与 Agent 」那章专门聊)
第二章 一张架构图看懂 Agent 项目
2.1 逐块拆(从左到右、从外到里)
- 初始化:入口、配置加载
- 路由分发型智能体:按意图把任务分给不同智能体 / 工具(工具路由)
- 提示词工程:设定角色、指令、输出格式
- 工具调用:Function Calling / Tools Calling / MCP
- RAG 知识库:向量库检索、LlamaIndex、数据块交互
- 输出约束:
-
- 提示词约束(规则 / 示例 / 工具返回)
- 类型·协议约束(C# .NET
<T>/ Python pydantic / TypeScript zod)
- 人在回路 HITL:人工干预节点
- 最终结果输出
2.2 藏在右边的"核心主体"(Agent 本体)
- 记忆功能(短 / 长期、会话持久化、数据体交互)
- 消息层 Message(角色、数据体)
- 前端交互(SSE / WebSocket 流式、错误重试)
- 流程编排(LangGraph:节点 / 分支 / 循环 / 多智能体协作)
- 可观测性与监控跟踪(langfuse / langSmith)
- 安全与权限治理
- 配置与版本管理
第三章 Agent 的心脏:ReAct 循环
3.1 Thought → Action → Observation,循环到出答案
- Thought:模型想下一步干啥
- Action:真去调工具 / 查知识库
- Observation:拿到返回,再想
- 直到模型觉得能答了 → 输出最终答案
一个最小例子:让 Agent 查天气
- 用户:"北京今天适合跑步吗?"
- Thought:我得查天气 → Action:call_weather(北京) → Observation:晴 26℃ → Thought:适合 → 答案
3.2 循环的边界与反思(埋钩子)
- 反思 Reflection:每次 Observation 拿到结果后,先让模型自评一句"这结果对吗?要不要换工具 / 重试 / 补信息?"——这是最简单的自我纠正,也是后面 RAG 3.0、Code Agent 自验证的雏形
- 最大步数、重复检测:避免"死循环烧钱"
- 钩子:后面"循环死锁避坑"会展开
第四章 Workflow ↔ Agent 光谱:什么时候该上 Agent
4.1 一半需求根本不用上 Agent(判定 + 提醒)
- 很多需求:输入固定、步骤固定、结果可预测 → 用 if/else + 模板就够,别硬上 Agent
- 判定清单(要不要上 Agent):
-
- 结果可预测吗?→ 是 → 用 Workflow
- 需要调外部工具 / 查实时数据吗?→ 否 → 直接 prompt
- 步骤多且不确定、要自主决策?→ 是 → 上 Agent
- 别为了用 Agent 而用 Agent:成本、延迟、可控性都更贵更不可控,Agent 是重武器不是螺丝刀
4.2 光谱三档
-
- 固定 Workflow:纯确定性编排(0 LLM 或极少 LLM)
-
- 半自动:LLM 做部分决策(如分类、抽取),主体还是流程
-
- 自主 Agent:ReAct 循环 + 工具 + 记忆,自己决定怎么干
小结 + 预告
- 收束:Agent 不是黑魔法,就是「一张架构图(骨架)+ 一个 ReAct 循环(心脏)+ 一条 Workflow↔Agent 光谱(分寸)」三件套
- 预告下一篇(系列 ②) :《Agent 的手和脚:工具 / MCP 与 Skills》—— Function Calling 怎么跑、MCP 协议是啥、Skills 怎么让 Agent 渐进加载能力
- 钩子回收:循环死锁、RAG、编排、驾驭工程,后面逐篇来