系统梳理 AI Agent 的核心概念、工作机制、架构组成、工具调用、Memory、RAG、MCP、多智能体、LangChain/LangGraph、评测、安全与工程化实践。
AI Agent
Agent 的本质是:让 LLM 进入一个“观察 → 决策 → 执行 → 再观察”的控制循环,并通过 Tool 与外部环境交互。
可以粗略抽象为:
Agent = LLM + Tools + State + Control Loop工程化系统通常还会加入:
Prompt / Instructions
Memory
Planning
Guardrails
Observability
Checkpoint
Human-in-the-loop1. Agent 与 Workflow
普通 LLM:
Input → LLM → OutputAgent:
Task
↓
LLM
↓
Decision
├─ Answer
└─ Tool Call
↓
Observation
↓
LLM核心区别不是“有没有调用工具”,而是模型是否参与下一步行为的动态决策。
Workflow 的执行路径通常提前定义:
A → B → CAgent 的执行路径则根据当前状态动态决定。
因此工程中通常:
确定性任务 → Workflow
开放 / 不确定任务 → Agent实际项目往往采用混合方式:
Workflow
↓
Agent Node
↓
Workflow这类架构也常被称为 Agentic Workflow。
2. Tool Calling
Tool Calling 是 Agent 最重要的基础能力之一。
模型并不直接执行函数,而是根据提供的 Tool Schema 生成结构化调用:
{
"name": "get_weather",
"arguments": {
"city": "Harbin"
}
}程序执行:
result = get_weather("Harbin")再把 Tool Result 交回模型继续推理。
完整过程:
User
↓
LLM
↓
Tool Call
↓
Application
↓
Tool
↓
Observation
↓
LLM
↓
Final AnswerTool 本质是 Agent 能调用的原子能力,例如:
Search
Database
Shell
Python
Browser
File System
GitHub
Email
API单纯调用一次 Tool 不一定算完整 Agent。
典型 Agent 通常还具有:
多步执行
状态维护
动态工具选择
错误恢复
任务终止判断3. Agent 的控制模式
ReAct
经典模式:
Reasoning → Action → Observation → Reasoning → ...核心思想是:
推理和行动交替,而不是一次性规划完所有步骤。
Planning
复杂任务通常会先进行任务拆解:
Planner
↓
Tasks
↓
Executor
↓
Result执行过程中可以重新规划。
典型 Plan-and-Execute:
Plan → Execute → Evaluate → ReplanPlanner 和 Executor 甚至可以使用不同模型:
Planner → 强模型
Executor → 小模型用于降低成本。
Reflection / Feedback
模型生成结果后进行检查,再根据反馈修改:
Generate
↓
Evaluate
↓
Fail?
├─ Yes → Revise
└─ No → Finish代码 Agent 中:
Edit → Test → Error → Analyze → Edit测试结果本身就是 External Feedback。
4. State
Agent 必须维护当前任务状态:
state = {
"task": "...",
"plan": [],
"current_step": 0,
"tool_results": [],
"context": [],
"final_answer": None
}从状态机角度可以理解为:
State → Node → New StateAgent 的循环、分支、重试和恢复,本质上都依赖 State。
这也是 LangGraph 使用 Graph 描述 Agent 的原因:
A → B
B → C
B → D
D → B相比普通线性 Chain,Graph 更适合表达:
Branch
Loop
Retry
Parallel
Interrupt5. Memory
Agent Memory 可以粗略分为:
| 类型 | 内容 |
|---|---|
| Conversation Memory | 当前或历史对话 |
| Semantic Memory | 用户信息、事实、知识 |
| Episodic Memory | 曾经发生的事件与经历 |
| Procedural Memory | 如何完成某类任务 |
Memory 不等于单纯把所有历史消息塞进 Context。
实际系统通常会结合:
Context Window
Database
Vector Database
Summary
Profile
Retrieval长期记忆本质上是:
Write → Store → Retrieve → Inject Context6. Agent + RAG
普通 RAG:
Query
↓
Retriever
↓
Documents
↓
LLMAgentic RAG 则将 Retriever 作为 Tool:
Agent
↓
Need Knowledge?
↓
Retriever Tool
↓
Documents
↓
Agent进一步可以加入:
Query Rewrite
Search
Rerank
Evaluate
Retry形成 Retrieval Loop。
所以:
RAG = 检索增强
Agentic RAG = Agent 控制检索过程7. MCP 与 Skills
MCP
MCP(Model Context Protocol)用于统一 AI 应用连接外部工具和数据源的方式。
AI Host
↓
MCP Client
↓
MCP Server
↓
External ServiceMCP Server 内部仍然可以调用:
REST API
Database
Local Program
Filesystem因此:
MCP ≠ API 的替代品
MCP ≈ AI 应用的统一适配层Skill
Tool 通常是原子能力:
get_weather()
search_web()
run_shell()Skill 是更高层的任务能力:
Research
Deploy
Travel Planning
Code ReviewSkill 内部可以组合:
Prompt
Tools
Workflow
Knowledge
Rules因此:
Tool = 原子能力
Skill = 任务级能力8. Multi-Agent
Multi-Agent 是将复杂系统拆成多个职责独立的 Agent。
例如:
Supervisor
├─ Research Agent
├─ Coding Agent
└─ Reviewer Agent适合处理:
工具很多
Context 很长
职责明显不同
任务可以并行
不同步骤需要不同模型常见协作方式:
Supervisor
Supervisor
├─ Agent A
├─ Agent B
└─ Agent CSupervisor 负责调度。
Agent as Tool
一个 Agent 被另一个 Agent 当作工具调用:
Main Agent → Research Agent → Result主 Agent 始终保持控制权。
Handoff
Agent A → Handoff → Agent B任务控制权直接转交。
Sequential
Research → Writer → ReviewerParallel
┌→ Agent A
Task ──┼→ Agent B
└→ Agent C
↓
MergeMulti-Agent 并不是越多越好。
Agent 数量增加会带来:
成本
延迟
错误传播
上下文同步
调试复杂度如果:
1 Agent + Tools可以解决问题,就没必要拆成 Multi-Agent。
9. LangChain 与 LangGraph
LangChain 更像 LLM 应用开发工具箱,提供:
Models
Prompts
Tools
Retrievers
Vector Stores
Agents
Output ParsersLangGraph 更偏向:
Agent Runtime / Orchestration适合处理:
State
Graph
Loop
Branch
Checkpoint
Human-in-the-loop
Multi-Agent可以简单理解为:
LangChain → 组件
LangGraph → 编排与运行二者通常配合使用,而不是二选一。
10. Checkpoint 与 Human-in-the-loop
Checkpoint
复杂 Agent 运行时间较长时,需要保存状态:
State
↓
Checkpoint
↓
Crash
↓
Restore本质:
Checkpoint = Agent State SnapshotHuman-in-the-loop
高风险操作不应该完全交给 Agent:
删除文件
发送邮件
付款
生产环境部署
服务器重启典型流程:
Agent proposes action
↓
Interrupt
↓
Human approval
↓
Execute11. Guardrails
Guardrails 用于限制 Agent 行为。
通常分为:
Input Guardrail
Output Guardrail
Tool Guardrail其中 Tool Guardrail 尤其重要,例如:
Agent → delete_file("/")
Guardrail → DENY生产级 Agent 通常不会单纯依赖 Prompt 来限制危险操作,而会在程序层增加:
Permission
Validation
Confirmation
Sandbox
Allowlist12. Agent 工程化
实际项目关注的重点不只是模型效果。
还包括:
Cost
Latency
Reliability
Observability
Retry
Timeout
Permission
Logging
EvaluationAgent 通常需要多次 LLM Call 和 Tool Call,因此成本与延迟明显高于普通 Chat。
优化方式通常包括:
小任务使用小模型
减少无意义 Agent Loop
限制最大步骤
缓存 Tool Result
Context 压缩
并行执行
Workflow 替代不必要的 Agent生产系统的重要原则:
能用确定性代码解决的,就不要让 LLM 猜。
13. 一个典型 Agent 架构
User
↓
API / UI
↓
Agent Runtime
↓
┌─────────┴─────────┐
↓ ↓
LLM State
↓
Tool Decision
↓
┌──────┼───────┐
↓ ↓ ↓
Search Shell Database
└──────┼───────┘
↓
Observation
↓
LLM
↓
Response复杂一些:
User
↓
Router
↓
Supervisor
├─ Research Agent
├─ Coding Agent
└─ Data Agent
↓
Shared State / Memory
↓
Judge
↓
Result14. 实际理解
Agent 并不是某个特定框架或者某种固定实现。
它更像一种系统设计方式:
LLM
+ Tools
+ State
+ Feedback Loop能力逐渐增加时:
LLM
↓
LLM + Tool Calling
↓
Agentic Workflow
↓
Single Agent
↓
Multi-Agent System实际工程不追求“Agent 化程度越高越好”,而是根据任务选择最简单可靠的结构。
最终判断可以浓缩成一句:
确定的部分交给程序,不确定的部分交给 LLM;让 LLM 决策,让工具负责真正执行。
