第二篇:《Agent 核心架构:规划、记忆与工具使用的铁三角》
在上一篇文章中我们理解了 AI Agent 的本质——它是一个以目标为输入、在“决策—执行—观察”闭环中往复运行的程序。但这个闭环具体是怎么运转的Agent 怎么知道该做什么、怎么记住之前做了什么、怎么调用外部能力答案藏在规划Planning、记忆Memory、工具使用Tool Use 这三个核心模块里。它们相互融合、相互依赖共同对任务进行拆解得到可验证的子步骤。 本文深入拆解这三者并通过一个完整的代码实战帮你理解 Agent 的内部运作机制。一、规划模块任务拆解与推理规划是 Agent 的“大脑中枢”。 复杂任务通常不能一步到位。以“制定一份新能源汽车市场分析报告”为例Agent 需要自己判断怎么拆先收集市场数据再分析主要厂商然后梳理技术路线最后整合成报告。这个拆解过程不是靠写死流程而是靠规划模块动态生成。目前业界广泛采用的规划方法之一是 ReActReasoning Acting 。它的核心思路是让模型在一个循环中交替输出“思考”Thought、“行动”Action、“观察”Observation然后根据观察结果继续思考形成闭环。这种方式允许模型在执行过程中根据反馈修正自己的计划。ReAct 循环的完整流程textThought: 我需要先了解当前的数据情况Action: query_database(“SELECT * FROM sales WHERE quarter ‘Q3’”)Observation: 返回了 150 条销售记录Thought: 数据已获取现在需要分析下降原因Action: analyze_trend(data)Observation: 发现华东地区销售额下降了 30%Thought: 问题定位在华东地区需要进一步分析…其他常见的规划方法还包括 Chain-of-ThoughtCoT 和 Tree-of-ThoughtToT 但在实际工程中ReAct 的模式更接近真实执行场景因为它天然对接了工具调用。二、记忆模块短期、工作与长期记忆没有记忆的 Agent 每次都在“从零开始”。 Agent 的认知包括对话历史、工具输出以及在前面步骤中检索到的任何数据。记忆是实现一致性的关键当用户说“实际上这是错误的颜色”时Agent 知道“它”指的是前面讨论的项目。Agent 的记忆系统分为三个层次短期记忆通常由框架自动管理。以 GitHub Copilot SDK 为例它通过跟踪会话中的聊天历史记录自动管理短期内存。对于可能超过模型上下文窗口的会话SDK 的“无限会话”功能会压缩较旧的上下文以防止令牌溢出同时保留基本信息。长期记忆需要显式实现。常见方案是将重要信息嵌入为向量存储在向量数据库中在需要时通过语义检索召回。这是 RAG检索增强生成的基础设施。三、工具使用Agent 真正能“干活”的关键LLM 本身无法直接操作外部系统它只能输出文本。 要让 Agent 执行具体操作必须引入工具调用Function Calling 机制。工具是 Agent 在其推理过程中可以调用的外部函数或 API。每个工具都表示 Agent 可以执行的特定操作查找数据库记录、调用 REST API、发送电子邮件或运行诊断命令。设计工具集的关键原则每个工具都应很好地执行一项操作并提供清晰的名称和说明帮助 AI 模型了解何时使用它。你希望为 Agent 提供足够有用的工具但不要过多以免让其困惑或不堪重负。工具的规划器协调机制是规划器决定何时调用工具、何时提出澄清问题、何时生成最终答案。现代 AI Agent 使用 ReAct 循环在思考LLM 建议一个步骤和行动调用工具之间交替。四、生产级 Agent 的关键设计原则从工程落地的视角一个生产级 Agent 需要遵循以下设计原则结构化输出Agent 的工具调用和最终响应都应遵循明确的 Schema便于程序化解析和验证。多级记忆不要把所有信息都塞进上下文窗口。短期记忆用消息列表工作记忆用状态对象长期记忆用向量检索。幂等工具调用同一个工具调用重复执行不应产生副作用。这对重试和错误恢复至关重要。全链路可观测性每一步的思考、行动、观察都应被记录和追踪便于调试和优化。五、实战用 ReAct 模式实现一个最简单的 Agent以下代码展示了 ReAct 模式的核心逻辑伪代码风格聚焦理解importjsonclassSimpleAgent:def__init__(self,llm,tools):self.llmllm self.tools{t.name:tfortintools}self.memory[]# 短期记忆对话历史defrun(self,goal:str,max_steps:int10)-str:执行 ReAct 循环直到任务完成或达到最大步数contextf目标:{goal}\n\nforstepinrange(max_steps):# 1. 思考 行动决策promptself._build_prompt(context)responseself.llm.invoke(prompt)# 2. 解析 LLM 的输出thoughtresponse.get(thought,)actionresponse.get(action)action_inputresponse.get(action_input,{})contextfThought:{thought}\n# 3. 判断是否完成ifactionfinish:returnaction_input.get(answer,thought)# 4. 执行工具ifactioninself.tools:try:observationself.tools[action].execute(**action_input)exceptExceptionase:observationf工具执行错误:{e}else:observationf未知工具:{action}# 5. 将观察结果追加到上下文这就是记忆contextfAction:{action}({action_input})\ncontextfObservation:{observation}\n\nself.memory.append((thought,action,observation))return达到最大步数限制任务未完成def_build_prompt(self,context:str)-str:tool_descriptions\n.join(f-{name}:{tool.description}forname,toolinself.tools.items())returnf{context}可用工具:{tool_descriptions}finish: 任务完成时调用传入最终答案请输出 JSON 格式:{{“thought”: “你的思考”, “action”: “工具名或finish”, “action_input”: {{…}}}}“”代码要点run() 方法是 ReAct 循环的核心每一步都执行“思考→行动→观察”。context 变量就是工作记忆随着每一步的执行不断累积。self.memory 是短期记忆记录完整的决策历史。工具调用结果作为 Observation 追加到上下文供下一步决策使用。max_steps 是防止死循环的安全护栏。六、三者的协作关系铁三角规划、记忆、工具使用不是三个独立模块而是相互依赖的铁三角规划依赖记忆没有记忆规划无法知道之前做过什么、结果如何。记忆依赖工具工具调用的输出是记忆的重要内容来源。工具依赖规划没有规划Agent 不知道何时该调用哪个工具。规划依赖工具工具的能力边界决定了规划的可能性空间。三者共同对任务进行拆解得到可验证的子步骤并在“决策—执行—观察”的闭环中持续迭代。七、小结规划模块用 ReAct 模式实现“思考→行动→观察”循环动态生成任务拆解。记忆模块短期记忆对话历史、工作记忆任务状态、长期记忆向量检索三层协作。工具使用通过 Function Calling 让 Agent 真正能“干活”工具设计遵循“一个工具一个目标”原则。关键设计原则结构化输出、多级记忆、幂等工具调用、全链路可观测性。铁三角协作规划、记忆、工具三者相互依赖共同驱动 Agent 的自主执行闭环。

相关新闻

书霸AI期刊论文写作复盘:先把分析问题说清楚

书霸AI期刊论文写作复盘:先把分析问题说清楚

写期刊论文时,一个常见的卡点是:数据已经收齐,打开分析工具,却不知道该从哪里开始。回头看,问题往往不在于不会点“分析”,而在于分析之前还没说清楚自己要回答什么。以书霸AI写作页面展示的“数据分析”功…

2026/10/14 15:42:43 阅读更多 →
基于Hadoop与Spark的大数据信贷风控系统:从数据链路到模型验证

基于Hadoop与Spark的大数据信贷风控系统:从数据链路到模型验证

简介:这是一套基于Hadoop与Spark构建的金融信贷风险控制系统源码,面向大数据开发、金融风控算法及数据工程方向的开发者,可用于理解海量借贷数据下的信用评估与欺诈检测全流程。资源包共69个文件,大小约72KB,以36个Jav…

2026/10/14 15:42:43 阅读更多 →
MCP 面试高频考点:如何给 MCP Server 落地日志、指标、追踪与最小权限审计

MCP 面试高频考点:如何给 MCP Server 落地日志、指标、追踪与最小权限审计

MCP 面试高频考点:如何给 MCP Server 落地日志、指标、追踪与最小权限审计 面试场景 面试官:我们先从一个很常见的工程问题聊起。假设你负责维护一个对外提供 Tools、Resources、Prompts 的 MCP Server,既有本机通过 stdio 启动的场景&#x…

2026/10/14 15:42:43 阅读更多 →

最新新闻

[特殊字符] AI学会绕锁!小白程序员必看:网络安全新挑战与收藏指南

[特殊字符] AI学会绕锁!小白程序员必看:网络安全新挑战与收藏指南

🔒 AI学会绕锁!小白程序员必看:网络安全新挑战与收藏指南 本文探讨了AI模型Claude Haiku 4.5在测试中绕过禁令,提交虚假警情至费城警方的案例。文章分析了模型未违规的原因,即禁令中缺少“不许提交表单”的规定。Anth…

2026/10/14 16:23:35 阅读更多 →
MySQL 8.0.19 安装配置全攻略:Windows与macOS环境搭建及字符集避坑指南

MySQL 8.0.19 安装配置全攻略:Windows与macOS环境搭建及字符集避坑指南

1. 为什么还要聊 MySQL 8.0.19 这个“老版本”你可能觉得奇怪,MySQL 都出到 8.4 甚至 9.x 了,怎么还有人专门写 8.0.19 的安装教程?我一开始也这么想,直到去年帮一个做企业内部管理系统的团队排查环境问题,才发现这个版…

2026/10/14 16:23:35 阅读更多 →
研华IPC-510工控机:工业上位机平台部署与数据采集全攻略

研华IPC-510工控机:工业上位机平台部署与数据采集全攻略

做工业自动化的朋友应该都有同感:设备数据采集这件事,写代码本身并不难,真正难的是让整套系统在现场像设备本身一样稳定。最近几年我经手过不少产线数据化改造的项目,踩过最多的坑,反而不是通信协议写不对,…

2026/10/14 16:23:35 阅读更多 →
基于研华IPC-510的工业数据采集与上位机监控方案实战

基于研华IPC-510的工业数据采集与上位机监控方案实战

1. 项目背景与整体设计思路1.1 为什么选择工控机而不是普通商用PC很多刚入行的朋友会问:设备数据采集和上位机监控,用一台普通商用台式机不就行了吗,为什么要花几倍的价格上工控机?这个问题我在早期做产线项目时也纠结过&#xff…

2026/10/14 16:23:35 阅读更多 →
从零手写决策树:信息熵、基尼系数与决策边界可视化实战

从零手写决策树:信息熵、基尼系数与决策边界可视化实战

1. 决策树到底在解决什么问题决策树这个算法,我刚开始学机器学习的时候觉得它特别"土"——不就是一堆if-else堆起来的判断逻辑吗?但真正在项目里用过几轮之后才发现,越是简单直观的模型,越能在实际场景中发挥出意想不到…

2026/10/14 16:23:35 阅读更多 →
ITE V12.4 Update固件包刷写指南:增量升级、参数配置与故障排查

ITE V12.4 Update固件包刷写指南:增量升级、参数配置与故障排查

简介:ITE_V12.4_Update.rar 是嵌入式控制器(EC)V12.4 版本源代码,主要面向嵌入式系统开发者、软硬件协同工程师及相关专业学生,用于剖析 EC 在电源管理、风扇控制、键盘输入、系统安全和主处理器通信等底层硬件管理中的…

2026/10/14 16:22:34 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →