这是一篇关于 AI Agent 的学习笔记,内容总结自一个从零打造简化版 Claude Code 的视频教程。本文将整理和归纳教程中的核心概念,包括 Agent 是什么、最主流的 ReAct 构建模式,以及一种更高级的 Plan-and-Execute 模式。
一、 什么是 AI Agent?
1. 从大模型 (LLM) 的局限性说起
我们熟悉的大语言模型(如 GPT-4o)虽然逻辑和回答能力很强,但它们存在一个核心限制:无法感知或改变外部世界。
- 无法改变环境:模型可以生成代码,但无法将代码自动写入文件或执行它。这个过程需要用户手动操作。
- 无法感知环境:如果我们想让模型基于现有代码进行修改,必须手动将代码复制给模型。模型无法主动读取本地文件。
2. Agent:连接大模型与现实世界的桥梁
为了解决这个问题,我们可以为大模型配备 “工具 (Tools)”。这些工具就像是模型的“感官”和“四肢”,它们可以是:
- 读写文件的函数
- 运行终端命令的函数
- 网络搜索的 API
Agent 就是将一个大模型(大脑)和一系列工具(感官与四肢)组装起来,形成的一个能够感知和改变外部环境的智能程序。 它能够独立、自动化地完成任务,就像一个真正的机器人。
3. Agent 实例
- Cursor:一个强大的编程 Agent,可以根据用户需求自动编写和修改代码。
- Manus:一个研究型 Agent,可以根据用户问题(如比较手机性能)自动规划任务、搜索网页、整理信息并生成报告。
二、 Agent 的核心运行模式:ReAct
ReAct 是目前应用最广泛的一种 Agent 运行模式,它的名字是 Reasoning and Acting(思考与行动) 的缩写。
1. ReAct 的核心流程
ReAct 的运行流程是一个循环,直到任务完成。其核心步骤如下:
- Thought (思考):Agent 首先分析任务,思考下一步需要做什么。
- Action (行动):根据思考结果,决定调用哪个工具,并传入相应参数。
- Observation (观察):执行工具后,将返回的结果(如文件写入成功、API 返回的数据等)作为观察内容。
- 重复循环:Agent 基于新的观察结果,继续进行下一轮的“思考 -> 行动 -> 观察”循环。
- Final Answer (最终答案):当 Agent 判断任务已完成,不再需要调用工具时,便会输出最终答案,流程结束。

2. 实现 ReAct 的奥秘:系统提示词 (System Prompt)
Agent 的这种精密行为模式并非来自模型训练,而是通过一个精心设计的 系统提示词 来引导的。这个提示词相当于给模型下达的“剧本”或“操作手册”。
一个典型的 ReAct 系统提示词通常包含以下几个部分:
- 职责描述:明确告知模型需要遵循“思考 -> 行动 -> 观察”的 ReAct 流程来解决问题。
- 示例 (Examples):提供一两个完整的 ReAct 对话示例,让模型学习返回格式。
- 可用工具 (Tools):列出所有可供模型调用的工具及其功能描述。
- 注意事项:规定一些必须遵守的规则。
- 环境信息:提供当前环境的上下文信息,如操作系统、当前目录、文件列表等。
3. 从零构建一个 ReAct Agent (代码实现思路)
教程中演示了一个简化版的代码 Agent,其核心实现逻辑如下:
-
主程序 (
agent.py):- 定义可用的工具函数(如
read_file,write_to_file,run_command)。 - 实例化核心的
ReActAgent类,传入工具列表、模型(如 GPT-4o)和项目目录。 - 接收用户任务,并调用
agent.run()方法启动 Agent。
- 定义可用的工具函数(如
-
ReActAgent类的核心逻辑:run(task)方法:这是 Agent 的主循环。- 初始化消息列表:将渲染好的“系统提示词”和用户的“任务”作为初始消息。
- 进入
while循环:- 调用模型:将当前消息列表发送给大模型,获取响应。
- 解析响应:从模型返回的文本中提取出
thought和action(或final_answer)。 - 判断与执行:
- 如果响应包含
final_answer,则说明任务完成,跳出循环并返回结果。 - 如果响应包含
action,则解析出工具名称和参数。
- 如果响应包含
- 调用工具:执行对应的工具函数,并获取返回结果 (
observation)。 - 更新消息列表:将
observation追加到消息列表中,以便模型在下一轮循环中知道上一步工具的执行结果。
这个流程清晰地展示了 Agent 主程序、大模型、工具三者之间是如何协同工作的。主程序负责调度,模型负责思考和决策,工具负责与外部世界交互。
三、 更高级的构建模式:Plan-and-Execute
除了 ReAct,还存在其他构建模式,其中“先规划,再执行”是另一种常见思路。LangChain 提出的 Plan-and-Execute 模式是其中的一个典型实现。
1. Plan-and-Execute 的核心组件
这种模式将 Agent 的功能进一步拆分,包含以下几个关键角色:
- Agent 主程序:负责串联整个流程的总调度器。
- Plan 模型:一个专门负责接收用户任务并生成详细执行计划 (Plan) 的大模型。
- Execution Agent (执行 Agent):一个负责执行计划中单个步骤的 Agent。这个 Agent 本身可以是一个 ReAct Agent。
- Re-Plan 模型:在每一步执行后,根据最新的执行结果动态调整和优化后续计划的模型。
2. Plan-and-Execute 的运行流程
以“查询今年澳网男子冠军的家乡是哪里?”为例:
-
规划 (Plan):用户提交任务后,Agent 主程序将其发送给 Plan 模型。Plan 模型生成一个初步计划:
- 步骤 1:查询当前日期,确定年份。
- 步骤 2:根据年份,搜索澳网男子冠军的名字。
- 步骤 3:根据冠军的名字,搜索他的家乡。
-
执行 (Execute):主程序将计划的第一步(“查询当前日期”)交给 Execution Agent 去执行。Execution Agent(可能通过 ReAct 模式调用搜索工具)完成任务,并返回结果(例如,“2025年9月14日”)。
-
重新规划 (Re-Plan):主程序将原始问题、完整计划和第一步的执行记录,全部发送给 Re-Plan 模型。Re-Plan 模型会生成一个更新后的计划:
步骤 1:查询当前日期(已完成)- 新步骤 1:搜索 2025年澳网男子冠军的名字。(计划被具体化了)
- 步骤 2:根据冠军的名字,搜索他的家乡。
-
循环执行与重新规划:主程序重复第 2 和第 3 步,依次执行更新后的计划,直到所有步骤完成。
-
得出最终答案:当 Re-Plan 模型发现所有步骤都已完成,用户的问题可以回答时,它将不再返回新的计划,而是直接生成最终答案。主程序将此答案返回给用户,流程结束。
这种模式通过将规划和执行解耦,并在每一步后动态调整计划,使得 Agent 在处理复杂、多步骤的任务时表现得更加稳健和灵活。