AI Agent

AI Agent(人工智能代理)是一个能够感知环境、自主决策并采取行动以完成目标的软件系统。

与普通程序不同,AI Agent 的核心特征是自主性:它不只是被动地响应单次输入,而是能够:

  • 制定多步骤计划
  • 调用外部工具(搜索、代码执行、API 调用等)
  • 根据执行结果动态调整策略
  • 持续循环直到目标完成

AI Agent 的定义

从学术角度,Agent 的经典定义来自 Russell & Norvig(《人工智能:一种现代方法》):

Agent 是任何能够通过传感器感知环境、并通过执行器对环境采取行动的事物。

在 LLM 时代,AI Agent 的定义更具体:

AI Agent 是以大语言模型为核心推理引擎,能够自主规划任务、调用工具、与外部系统交互,并通过反馈循环完成复杂目标的自治系统。

Agent 的四个核心要素

要素 说明
感知(Perception) 接收输入:多模态用户指令、工具返回结果、系统状态、历史记忆
规划(Planning) 将目标分解为可执行的子任务序列
行动(Action) 调用工具、执行代码、调用 API、操作文件等
记忆(Memory) 短期记忆(上下文窗口)+ 长期记忆(向量数据库等)

感知的来源

感知不只是用户输入那一句话,Agent 每次推理前收到的完整上下文都属于"感知":

来源 说明
多模态输入 用户的文本指令(最常见)、图片、音频、视频等
工具返回结果 搜索结果、API 响应、代码执行输出、数据库查询结果
系统状态 文件内容、环境变量、当前任务进度
历史记忆 短期记忆(上下文窗口中的对话历史)+ 长期记忆(从向量数据库检索)

这四类来源最终都会被拼装进 LLM 的上下文窗口,LLM 基于这个完整上下文做出下一步决策。因此,感知本质上是构建 LLM 输入上下文的过程

上下文窗口:感知的硬性约束

能放入上下文的信息量取决于模型的上下文窗口大小(以 token 计):

模型 上下文窗口
GPT-4o 128K tokens
Claude 3.5 Sonnet 200K tokens
Gemini 1.5 Pro 1M tokens

超出窗口的内容会被截断,因此 Agent 需要主动管理上下文。常见策略如下(各框架实现不一,没有统一标准):

策略 做法 代表实现
直接截断 丢掉最早的对话轮次,只保留最近 N 轮 各类简单 Agent
压缩摘要 定期用 LLM 把历史对话总结成摘要替换原始记录 LangChain 默认记忆
滑动窗口 + 固定锚点 永远保留 System Prompt + 初始目标,中间内容滑动淘汰 Claude Code、Cursor
重要性评分过滤 给每条记录打分,优先保留高分内容(如报错信息) OpenAI Assistants API
分层存储 近期内容留在上下文,较早内容写入 RAG,需要时检索回来 MemGPT / Letta

为什么各家实现不一样:这是精度与成本的权衡——压缩越精细,LLM 调用越多,成本越高。不同场景对"记住什么"的要求也完全不同:编程 Agent 需要记住文件结构和报错,客服 Agent 需要记住用户偏好,任务执行 Agent 需要记住已完成步骤。

  • 工具结果截断:搜索返回内容太长时,只取摘要或关键片段

上下文窗口大小是设计复杂 Agent 时必须考虑的核心约束之一。

记忆系统:短期记忆与长期记忆

Agent 的记忆分两层:

记忆类型 实现方式 特点
短期记忆 上下文窗口 当前对话可见,会话结束后消失
长期记忆 RAG、键值存储、数据库等 跨会话持久化,按需取用

RAG 是长期记忆最主要的实现手段,核心思路是:把 Agent 需要"记住"的信息存到外部知识库,推理前按需检索相关片段放入上下文,让 Agent 表现得像"记得住"一样。

RAG 解决的核心问题

  • 私有信息:公司文档、个人笔记等根本不在训练数据里,没有 RAG 用户只能每次手动粘贴
  • 最新信息:训练数据有截止日期,通过 RAG 知识库可以随时更新——不需要重新训练模型
  • 容量限制:上下文窗口装不下所有背景信息,RAG 的知识库可以无限大,按需取用

RAG 不一定用向量数据库:向量数据库是最常见的实现,但本质上只要能"检索相关内容"都算 RAG:

检索方式 原理 适用场景
向量数据库 语义相似度检索 大规模、语义模糊的查询
全文搜索(BM25) 关键词匹配 精确词匹配、日志检索
直接读文件(Markdown/txt) 把文件全文塞进上下文 文件少且短
混合检索 向量 + 关键词结合 生产级系统

长期记忆的完整全景:

Agent 的记忆系统
├── 短期记忆(上下文窗口)← 当前对话历史、工具结果
└── 长期记忆
    ├── RAG(向量数据库等)← 文档、知识库
    ├── 键值存储           ← 用户偏好、配置
    └── 结构化数据库       ← 任务状态、历史记录

规划:把目标拆解成可执行的步骤

规划是 LLM 收到目标后,将其分解为一系列有序子任务的过程。

示例:目标是"调研竞品,写分析报告并发邮件给老板",LLM 会规划出:

1. 搜索竞品 A 的信息
2. 搜索竞品 B 的信息
3. 对比分析差异
4. 生成报告文本
5. 发送邮件

规划的几个关键点

  • 分解:把复杂目标拆成 LLM/工具能处理的小步骤
  • 排序:有依赖关系的步骤不能颠倒
  • 动态调整:执行中途遇到意外,LLM 会重新规划
  • 隐式发生:规划往往融合在每次 LLM 推理里,不是单独的一步

规划能力的来源:规划是 LLM 训练出来的潜在能力(训练数据中大量包含"分析问题 → 拆解步骤 → 逐步解决"的示例),Agent 的 System Prompt 是激活和规范化这个能力的开关——光靠训练能力不加引导,行为不稳定;有了引导,分解更系统、更可预期。

规划 vs 决策:规划着眼全局(“要走哪几步”),决策着眼当下(“这一步调哪个工具、传什么参数”)。类比到人:规划是列待办清单,决策是现在做哪件事、怎么做。

自主决策:Agent 的核心运行循环

Agent 的运行过程本质上是一个不断累积上下文、反复调用 LLM 做决策的循环:

初始上下文 = 系统指令 + 用户期望目标
   发给 LLM 推理
   LLM 决策:调用工具 X,参数 Y
   Agent 执行工具,获得结果
   追加工具结果到上下文(累积,不替换)
   再发给 LLM 推理
  (循环,直到 LLM 判断目标已达成)

关键细节:每次迭代中,LLM 看到的不是"最新一条工具结果",而是完整的累积上下文——初始目标 + 历次工具调用 + 历次工具结果全部追加在一起。LLM 凭借这份完整的执行轨迹,才能判断当前进展、决定下一步。

LLM 每轮的输出只有三种可能:

LLM 输出 含义
工具调用指令 需要更多信息或执行操作,继续循环
直接文本回复 目标已达成,终止循环
追问用户 信息不足,等待用户补充后继续

自主性的来源:如果每一步的决策都是人提前写死的 if-else 规则,循环再多次也只是普通程序。正是因为 LLM 具备推理能力,每轮都能根据累积的上下文动态判断下一步该做什么、遇到问题该怎么调整,循环才有了"自主性"。

自主性 = LLM 的动态推理 + 无需人介入的多步骤循环

AI Agent 与 LLM 的关系

LLM 是 Agent 的"大脑"

LLM(大语言模型)和 AI Agent 是组件与系统的关系:

  • LLM 是一个语言模型,本质上是"输入文本 → 输出文本"的函数,擅长理解、推理和生成文本
  • AI Agent 是一个完整系统,以 LLM 作为核心推理引擎,并在外部集成工具、记忆、规划等模块

LLM 不只在规划阶段起作用,而是作为推理引擎贯穿整个"思考-决策"过程

阶段 LLM 的作用
规划 将目标拆解为子任务,决定执行顺序
决策 判断下一步该调用哪个工具、传什么参数
观察理解 解读工具返回的结果,判断是否达到目标
生成输出 将执行结果整理成自然语言回复用户
实际执行 ❌ 调用 API、写文件等由工具负责,不是 LLM

类比来说:LLM 像人的大脑,工具像人的手。大脑在每一步都在工作(理解、规划、判断),手只在需要具体操作时才动。

用户目标
AI Agent
├── LLM(推理 / 规划 / 决策)
├── 工具(搜索、代码执行、数据库查询...)
├── 记忆(上下文 + 长期存储)
└── 执行器(实际调用外部系统)
完成目标

关键区别

维度 LLM AI Agent
本质 语言模型(函数) 自治系统
交互方式 单次问答 多步骤循环
工具使用 不能主动调用工具 能调用外部工具
自主性 被动响应 主动规划和执行
记忆 仅限上下文窗口 可有持久化记忆
目标完成 单次回答 持续执行直到完成

LLM 的局限性与 Agent 的补充

LLM 本身有明显局限:

  • 知识截止日期:训练数据有截止日期,无法获取最新信息
  • 无法执行操作:只能输出文字,不能真正操作系统或调用 API
  • 上下文长度限制:复杂任务超出单次上下文能力
  • 无状态:每次对话独立,没有跨会话记忆

AI Agent 通过外部模块弥补这些局限:

  • 工具调用(Tool Use):赋予 LLM 搜索网络、执行代码、读写文件的能力
  • RAG(检索增强生成):从外部知识库检索最新或私有信息
  • 持久化记忆:跨会话记住用户偏好和历史状态
  • 多步骤规划:将复杂任务拆解,逐步完成

Agent 的典型运行循环(ReAct 模式)

思考(Thought)→ 行动(Action)→ 观察(Observation)→ 思考...
目标:查询北京今天的天气并发送邮件

Thought: 我需要先查询天气,再发送邮件
Action: search_weather(city="北京")
Observation: 北京今天晴,25°C

Thought: 获得了天气信息,现在发送邮件
Action: send_email(to="user@example.com", content="北京今天晴,25°C")
Observation: 邮件发送成功

Thought: 任务完成

Agent 的直观类比:人也是 Agent

Russell & Norvig 的定义适用于任何行为主体——包括人。每个人、每个同事都可以抽象成一个 Agent:

Agent 要素 对应到人
感知 眼睛、耳朵等感官接收外部信息
规划 接到任务后列出执行步骤
决策 大脑根据目标和当前状态判断下一步
行动 说话、写作、操作工具等
记忆 短期记忆(工作记忆)+ 长期记忆(经验、知识)

这个视角也解释了Multi-Agent 系统的意义:就像团队里每个人负责不同专长、相互协作,多个 AI Agent 各自专注一个子任务、互相传递结果,比单个 Agent 单打独斗更高效。

常见 AI Agent 框架

  • LangChain / LangGraph — Python,功能全面,生态丰富
  • CrewAI — 多 Agent 协作框架
  • AutoGen — 微软出品,支持多 Agent 对话
  • OpenAI Assistants API — 官方托管的 Agent 能力

参考