智能体范式与认知基础 / Agent Paradigms and Cognitive Foundations
智能体范式与认知基础
> Agent Paradigms and Cognitive Foundations
"什么是 Agent?" 这个看似简单的问题,在 2023 年之后的 AI 工程社区里被反复提出,却始终没有形成统一答案。问题的根源在于:Agent 是一个跨越哲学、认知科学、计算机科学与软件工程四个学科的概念,每个学科都从自己的视角给出过定义。当 LLM(Large Language Model,大语言模型)把 Agent 重新推上技术风口时,理解这些定义之间的历史脉络与差异,就成为搭建生产级智能体系统的前提。本章给出的回答不是又一份新的术语清单,而是一个可操作的统一抽象:Agent = Planner + Memory + Toolset + Executor。沿着这条主线,你可以用一句话定义 Agent,并用四元组模型描述任意已知 Agent 系统。
1.1 从哲学到认知科学:Agent 概念的源头
智能体并非工程领域的发明,而是有着清晰的学术血脉。理解这条血脉,能帮助我们在 LLM 时代更准确地把握 Agent 的本质,而不只是停留在"会调用 API 的 LLM"这种功能层面的描述。
第一条源头是哲学中的意向性(intentionality)理论。 19 世纪心理学家弗朗兹·布伦塔诺(Franz Brentano)指出,心理现象的独特之处在于它们总是"关于某物的"——当我们思考、怀疑、相信时,总是在思考、怀疑、相信某个对象。这种"关于性"被命名为意向性。1987 年,哲学家丹尼尔·丹尼特(Daniel Dennett)在《意向立场》(*The Intentional Stance*)中进一步提出:当一个系统的行为可以通过赋予它信念、欲望和理性来可靠地预测时,我们就有理由把它视为意向系统。这一立场后来成为人工智能研究者讨论"Agent 性"(agenthood)时的隐含基准——一个能根据目标选择行动、并对环境变化做出反应的系统,就具备了意向性的工程含义。
第二条源头是认知科学中的物理符号系统假设(Physical Symbol System Hypothesis, PSSH)。 1976 年,Allen Newell 和 Herbert A. Simon 在论文 *Computer Science as Empirical Inquiry: Symbols and Search* 中提出:物理符号系统具备产生智能行为的充分必要条件。这一假设催生了早期 AI 的整个符号主义范式,也为 Agent 设计提供了第一个工程模板:知识被表示为符号,推理被实现为符号操作,行动被实现为符号触发的外部效应。
第三条源头是 AI 工程中的"智能体"形式化定义。 1995 年,Michael Wooldridge 和 Nicholas Jennings 在 *Intelligent Agents: Theory and Practice* 中给出被广泛引用的工作定义:智能体是处于特定环境之中、能够自主行动以实现设计目标的计算机系统。这一定义剥离了哲学上的"意向性"含义,把 Agent 落实为环境(environment)、自主性(autonomy)、反应性(reactivity)、主动性(pro-activeness)四个属性。后续的 Agent 研究几乎都建立在这四个属性之上。
第四条源头是行为主义路径。 1986 年,Rodney Brooks 在论文 *Intelligence Without Representation* 中提出包容架构(subsumption architecture),主张智能不必依赖中心化的符号推理,而是通过分层的行为模块与环境的直接耦合涌现出来。这条路径虽然与符号主义对立,但它提示了一种重要设计哲学:Agent 的复杂度应该分配在环境交互中,而不是集中在内部推理器里。
沿着这四条源头,AI 工程史上出现了一系列标志性系统。1966 年的 ELIZA 用极少的规则模仿心理治疗师对话,是 Agent 思想的早期演示。1968 年的 SHRDLU(Terry Winograd)证明:受限领域内的语言理解与行动规划可以同时实现。1972 年的 SHAKEY 机器人(Stanford Research Institute)首次把感知、规划、动作三个环节整合到同一系统中——它已经隐约呈现出我们今天所说的四元组结构。1983 年,John Laird 启动 SOAR(State, Operator, And Result)项目,把 Newell 的人类认知架构思想落地为可运行的智能体框架;1976 年由 John Anderson 提出的 ACT-R(Adaptive Control of Thought—Rational)则从人类记忆模型出发,强调陈述性记忆与程序性记忆的分离。这两个认知架构至今仍是学术界研究 Agent 推理的标准参照系。
理解这段历史的关键在于:LLM 之前的 Agent 之所以难以规模化,根本原因是知识必须被手工编码为符号或规则,系统的认知能力上限取决于工程师的工作量。SOAR 在虚拟任务中表现出色,但每迁移到一个新领域就要重写大量产生式规则;ACT-R 模拟人类记忆精准,但在工程实用性上进展缓慢。这些系统的失败不是理论失败,而是"知识供给"瓶颈。
1.2 LLM 时代的范式转移:从规则驱动到能力驱动
LLM 的出现改变了 Agent 的实现路径,但并未改变 Agent 的目标结构。我们仍然需要能够感知环境、自主决策、调用工具、完成任务的系统——这部分定义自 1995 年以来基本稳定。真正改变的是 Agent 内部组件的实现方式:从硬编码的规则与符号,变成了从大规模文本中涌现出的能力。
第一个转变是知识表征的转变。 GPT-4、Claude、Gemini 等模型把世界知识、常识推理、工具使用说明乃至代码生成能力压缩到几百 GB 的参数中。Agent 不再需要维护一个由工程师手工维护的知识库,模型本身就承担了大部分"知道什么"的责任。
第二个转变是规划与推理能力的获得。 Chain-of-Thought(Wei et al., 2022)、ReAct(Yao et al., 2022)、Tree of Thoughts(Yao et al., 2023)等提示策略的涌现证明:仅仅通过提示结构的变化,LLM 就能展现出多步推理、回溯与分支搜索能力。这些能力过去需要 SOAR 这种专门的认知架构才能实现,现在变成了一次推理调用。
第三个转变是工具接口的标准化。 OpenAI 在 2023 年 6 月推出的 function calling、Anthropic 推出的 tool use、2024 年由 Anthropic 发起的 MCP(Model Context Protocol)协议,逐步把"模型如何与外部世界对话"统一为一种类似 API 调用的标准接口。这让 Agent 的工具集不再需要为每个模型单独适配。
第四个转变是自然语言作为通用协议。 过去 Agent 各模块之间需要结构化消息传递;现在,自然语言本身充当了组件间的通信媒介——Planner 用自然语言写出子目标,Executor 用自然语言描述工具调用结果,Memory 用自然语言检索相关上下文。
但范式转移并不等同于术语统一。2024-2025 年间,主要参与者对"Agentic AI"的定义仍存在显著差异:
- **Anthropic** 在 *Building Effective Agents*(2024)中区分了"workflow"(使用 LLM 但路径固定的系统)和"agent"(能自主决定路径的系统),强调真正的 Agent 必须能在执行中调整策略。
- **OpenAI** 在 *A Practical Guide to Building Agents*(2025)中把 Agent 定义为"用 LLM 替代固定控制流"的系统,重点强调 LLM 作为决策中枢。
- **DeepMind** 的研究更偏向强化学习语境,把 Agent 视为在环境中通过试错学习策略的目标导向系统。
- **学术界**(Princeton, Stanford 等)则倾向从"具备信念-欲望-意图(BDI)结构"的认知架构视角定义 Agent。
这些定义并非互斥,而是各自强调了不同属性。本书的立场是:工程上的 Agent 不需要哲学意义上的意向性,但需要可观察的自主决策能力——即在没有人为预先指定每一步动作的前提下,根据环境反馈动态决定下一步行动。这一定义避开了"是否有意识"这类无法验证的争论,聚焦于可验证的行为特征。
1.3 四元组抽象:Agent = Planner + Memory + Toolset + Executor
为了把上述讨论落到工程层面,本书提出一个统一的四元组抽象。任何 Agent 系统都可以被分解为四个核心组件:
``` Agent = ⟨ P, M, T, E ⟩ = Planner + Memory + Toolset + Executor ```
四者通过"感知-行动闭环"与环境交互。下面这张图刻画了闭环结构:
```mermaid flowchart LR subgraph Agent["Agent 智能体"] direction TB P["Planner 规划器<br/>目标分解 / 路径选择 / 重规划"] M["Memory 记忆<br/>短期上下文 / 长期检索 / 工作记忆"] E["Executor 执行器<br/>动作调度 / 异常恢复"] end T["Toolset 工具集<br/>函数 / API / MCP / 浏览器"] Env["External<br/>Environment<br/>外部环境"]
Env -->|"Observation 感知信号"| P P <-->|"Read / Write 读写"| M P -->|"Plan Step 计划步"| E E -->|"Tool Call 调用"| T T -->|"Side Effect 副作用"| Env E -->|"Result Trace 结果追踪"| M ```
下面逐个组件展开。
Planner(规划器)是 Agent 的"理性中枢"。 它负责把高层目标分解为可执行子目标,并在执行过程中根据反馈调整路径。规划能力可以以多种形式出现:最朴素的形式是 LLM 直接生成步骤列表(CoT),进阶形式是 ReAct 风格的"思考-行动"循环,更复杂的形式是 Tree of Thoughts 式的多分支搜索,或者基于蒙特卡洛树搜索(MCTS)的 LATS(Language Agent Tree Search)。在生产系统中,Planner 通常不是单一组件,而是由"目标解析器 + 步骤生成器 + 重规划触发器"组成的子系统。重规划(replanning)是衡量 Planner 成熟度的关键——它决定了 Agent 在工具失败、信息不足、目标冲突等异常情况下的恢复能力。
Memory(记忆)决定 Agent 能保留多少上下文。 LLM 本身是无状态的,每一次调用都是独立的。记忆系统的任务是把跨时间的相关信息组织起来。一般把记忆划分为三个层级:
- **短期记忆(Short-Term Memory, STM)**对应 LLM 的上下文窗口,受限于 token 上限。它的管理策略包括滑动窗口、摘要压缩、关键信息提取。
- **长期记忆(Long-Term Memory, LTM)**通常由向量数据库(vector store)、结构化数据库或文件系统实现,通过检索增强生成(RAG)模式按需注入短期记忆。MemGPT(Stanford, 2023)是这一思路的代表性工作,它借鉴操作系统虚拟内存的思想,让 LLM 自主决定哪些信息从 RAM 换出到磁盘。
- **工作记忆(Working Memory)**是当前任务执行过程中的临时状态,例如当前规划的子目标、已完成的步骤、待处理的异常。在实现上,它可以是一个简单的列表、字典或专用数据结构。
成熟的 Agent 不会把全部历史塞进上下文窗口,而是通过记忆分层实现"看似无所不知,实际只读取必要片段"的效果。记忆系统是后续章节的核心议题之一。
Toolset(工具集)扩展 Agent 的物理边界。 LLM 本身只能生成文本,不能查数据库、发邮件、操作浏览器、控制 IDE。工具集把这些外部能力以函数或协议的形式暴露给 Planner 和 Executor。工具的形式有三种:
- **内置函数(function)**:模型直接生成的参数化调用,例如 `search(query)`、`read_file(path)`。
- **远程 API**:通过 HTTP/gRPC 调用的外部服务,往往通过 OpenAPI 规范描述并包装为函数。
- **复合协议**:MCP(Model Context Protocol)这类统一协议允许工具以标准方式跨进程、跨主机暴露能力,2024 年起正在被快速采纳。
工具集的设计哲学直接决定 Agent 的能力边界。一个只有"文本输入输出"的 Agent 实际上只是一个对话系统;一个拥有"数据库查询 + 浏览器操作 + 代码执行 + 文件系统"的 Agent 才具备完成真实任务的能力。但工具越多,Planner 的选择空间越大,错误率也越高——这构成了工具集设计中的"能力-可靠性"张力。
Executor(执行器)是把决策变成现实的桥梁。 它接收 Planner 输出的动作描述,解析参数,调用对应的工具,捕获返回值,并把结果反馈给 Planner 和 Memory。一个设计良好的 Executor 至少要处理以下问题:参数校验(类型、必填项)、超时控制、重试与退避(retry & backoff)、错误语义映射(HTTP 500、网络超时、权限不足分别应该怎么处理)、副作用管理(一个写操作是否可回滚)。在生产环境中,Executor 往往是 Agent 系统中代码量最大、稳定性要求最高的部分。
四者通过感知-行动闭环协同工作:环境给出 Observation,Planner 结合 Memory 中的上下文生成 Plan Step,Executor 调用 Toolset 中的工具产生 Side Effect,结果再次写入 Memory 并触发下一轮规划。这个循环会一直持续,直到 Planner 判定目标完成或系统达到终止条件(最大步数、超时、显式失败)。
需要强调的是:这四个组件并非必须由 LLM 实现。Planner 可以是规则引擎,Memory 可以是 SQL 数据库,Executor 可以是传统程序。但在 LLM 时代,最自然的实现方式是把 Planner 设为 LLM(作为决策中枢),把 Memory 设为向量数据库与 KV 存储的组合,把 Toolset 设为标准化的函数集合,把 Executor 设为带错误处理的胶水代码。这个"LLM-driven"配置是后续 14 章绝大多数讨论的默认假设。
1.4 Agentic 与 Agentless:能力光谱与选型决策
四元组抽象描述了 Agent"是什么",但工程上更关键的问题是"什么时候需要 Agent"。把 Agent 当成万能解药是 2023-2024 年间最常见的反模式,结果往往是构建了一个脆弱、昂贵、难以调试的系统,却用 95% 的工作量完成了原本 5% 的工作就能完成的脚本。
我们需要建立一个能力光谱(capability spectrum),从最弱的"无 LLM"到最强的"完全自主 Agent",依次排列:
1. Hardcoded Pipeline:纯代码实现,行为完全确定。适用于业务规则清晰、不容许 LLM 幻觉的场景,例如金融清结算。 2. Single LLM Call:一次 LLM 调用完成分类、抽取、改写、生成等任务。适用于单步转换、无需外部信息的场景,例如邮件摘要。 3. Chained LLM Calls:多个 LLM 调用按固定顺序串联,每一步输出作为下一步输入。适用于结构化流水线,例如"提取需求 → 生成代码 → 静态分析 → 文档化"。 4. RAG Pipeline:在 Chained 基础上加入检索步骤,从知识库动态注入上下文。适用于问答、客服、文档分析。 5. Workflow Agent(带 LLM 的工作流):LLM 参与决策但路径相对固定。Anthropic 称之为 "workflow"。典型模式是 routing(路由到不同处理分支)、parallelization(并行执行多个子任务后聚合)、orchestrator-workers(编排器-工人模式)。 6. Autonomous Agent(自主 Agent):LLM 自主决定每一步动作,没有预定义的图结构。Anthropic 称之为 "agent"。典型模式是 ReAct、Reflexion、LATS 等。
在这个光谱里,前三类是 Agentless 的,后三类才是 Agentic 的。一个常见的设计误区是把 Workflow Agent 误当成 Autonomous Agent 来设计——给一个"提取 → 改写 → 分类"的固定流程加上重规划循环,结果既没有获得自主性带来的灵活性,又引入了不必要的复杂度和不确定性。
选型决策可以归纳为以下三个判断问题:
- **环境是否确定?** 如果任务的每一步输入输出都可以被精确建模,用 Pipeline;如果存在未知输入或动态环境,用 Agent。
- **是否需要回溯?** 如果错误可以事先枚举并通过重试解决,用 Pipeline;如果错误类型未知、需要根据上下文调整策略,用 Agent。
- **是否有可验证的成功标准?** 如果目标可以用规则清晰表达("这段代码必须通过单元测试"),Agent 在这种强反馈信号下表现良好;如果目标模糊("写一篇有深度的分析"),即使是 Agent 也难以可靠达成。
更直接地说:当一个 LLM 调用 + 后处理脚本就能解决 80% 的问题时,不要构建 Agent。Agent 应该是经过严格论证后剩下的最后手段,而不是默认选项。这一观点贯穿本书后续章节。
1.5 2023-2025 代表系统横评:用四元组看真实 Agent
抽象定义需要落到具体系统上才能被验证。本节用四元组模型横评五个具有代表性的 Agent 系统,揭示每个系统在 Planner / Memory / Toolset / Executor 四个维度上的实现选择,以及这些