news 2026/9/4 22:18:14

AI Agent 四根支柱拆解:LLM、工具、记忆、规划怎么协同 原创

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI Agent 四根支柱拆解:LLM、工具、记忆、规划怎么协同 原创

AI Agent 四根支柱拆解:LLM、工具、记忆、规划怎么协同
"让 AI 自动帮我干活"喊了两年,多数人搭出来的 Agent 仍然是:一次 API 调用,一次输出,然后卡住。原因多半不在模型不够强,而在架构缺了东西。

一个靠谱的 Agent 至少有四根支柱:LLM 负责想,工具负责做,记忆负责记,规划负责排。四根都在,Agent 才能从"问答机器"进化成"能闭环干活的下属"。这篇把这四根支柱拆开讲清楚,再给一段能跑的最小示例和一张失败清单,读完你能自己诊断 Agent 为什么不靠谱。

支柱一:LLM——推理底座与选型

LLM 是 Agent 的大脑,负责理解指令、生成推理、产出决策。没有 LLM,后面三根支柱都是空壳;但只有 LLM,Agent 就只是套了个壳的聊天窗口。

单次 LLM 调用和 Agent 循环的本质差别,在于"输出是否驱动后续动作"。聊天机器人把一段文本回给你就结束了;Agent 里,LLM 的每次输出都会被解析成结构化动作——调用哪个工具、用什么参数、下一步做什么——然后执行结果再喂回给模型,形成循环。这个差别,是理解 Agent 架构的钥匙。

选型上,我的经验是看三样:指令遵循能力,决定它能不能乖乖输出 JSON;上下文窗口,决定它能装下多少对话历史和工具返回;长文本下的稳定性,决定它在长任务里会不会犯迷糊。同一个任务,模型幻觉率高,整套 Agent 就跟着翻车。所以底座我宁可选贵一点的,也别选便宜爱编的——省下的钱,会在调试 Agent 的深夜里加倍花回去。

还有一个常被忽略的点:底座模型的输出风格要稳定。同一个函数,上一轮输出带引号的参数名,下一轮突然换成裸字符串,你的解析器就崩了。所以选型时我会额外跑一组"结构化输出稳定性"测试,让模型连续解析一百条工具调用,数一数格式漂移的次数。这个数字比评测榜单上的总分,更能预测 Agent 在实际运行里的可靠性。

支柱二:工具调用——Agent 的手脚

工具让 Agent 从"只能说话"变成"能做事"。查数据库、调 API、发请求、算个数字、读写文件,全靠工具层兑现。

主流实现是 Function Calling:把工具的能力描述成结构化定义——函数名、参数 schema、说明——随提示词一起发给模型。模型理解后,在自己的回复里"点单":调哪个函数、传什么参数。代码里大致长这样:

tools = [ { "name": "query_order", "description": "查询订单状态", "parameters": { "type": "object", "properties": { "order_id": {"type": "string", "description": "订单号"} }, "required": ["order_id"], }, } ]


这段定义会进模型的上下文,模型据此生成调用意图,再由你的代码真正执行。这里有个关键认知:模型只负责"决定调什么",不负责"执行成功"。真实世界里,工具会超时、会报错、会返回脏数据,Agent 层必须自己处理这些噪音。很多 Agent 翻车就翻在这一步——模型选对了工具,代码却拿返回结果直接拼进提示词,连格式校验都没有。

工具描述本身也是提示工程的一部分。description 写得含糊,模型就乱猜参数;参数 schema 少标了 required,模型就可能漏传必填项。我的经验是:每个工具的说明要写明"何时用、何时不用、返回什么、可能抛什么错",四行字能省下大量调试时间。

支柱三:记忆——短期与长期的分工

没有记忆的 Agent,每次对话都像失忆患者,问一句忘一句。记忆要拆成两段看:短期和长期。

短期记忆就是当前对话的上下文窗口。历史消息、工具返回结果,全堆在这里。它的天花板很现实:窗口满了要裁剪,裁剪策略不对,Agent 会忘掉关键指令。不少 Agent"做到一半变蠢",元凶就是历史被粗暴截断,最初的用户需求被挤出窗口。

长期记忆负责跨会话沉淀。常见做法是把重要事实向量化,存进向量数据库,下次对话先用相似度检索,把相关的旧记忆捞回来。也有人把高频事实直接写成 key-value 或配置文件,结构化的东西用结构化存,比什么都塞向量库更省事、也更不容易出错。

记忆的取舍没有银弹。我的判断是:短期记忆管好"本次任务",长期记忆管好"用户的持久事实",两者边界划清楚,Agent 的记忆就不会变成一团浆糊。最容易犯的错,是把长期记忆的检索结果一股脑塞进每次对话,上下文被旧信息占满,新指令反而没地方站。

记忆工程还有个容易踩的坑:写入太随意。不是所有对话内容都值得长期保存,把闲聊、临时计算、一次性查询统统塞进向量库,检索的时候全是噪音。我的做法是给记忆分级——直接结论进长期库,过程性内容只在短期窗口里活着,过期就丢。这一条看着不起眼,实际能把检索质量稳稳拉起来。

支柱四:规划——把大任务拆成小步骤

规划是 Agent 的"项目经理",把一个大目标拆成可执行的小步骤,并在执行中动态调整。

最经典的框架是 ReAct:Reasoning 与 Acting 交替进行。模型先思考——这个任务需要什么,再行动——调用工具,观察结果,再思考下一步。循环往复,直到目标达成或确认失败。流程的骨架大致长这样:

while not done: thought = llm.reason(goal, memory, tool_results) action = llm.choose_tool(thought) result = execute(action) memory.append(action, result) done = llm.check_done(thought, result)

规划不是一次成型。真实任务里,工具返回和预期不符是常态,Agent 要能接受"计划赶不上变化",在循环里不断修正。规划能力强的模型,能把长任务拆得细、走得稳;规划弱的模型,只会把任务压缩成一次笨拙的工具调用,然后失败。判断一个模型适不适合做 Agent,看它在多步任务里的"回头修正"能力,比看单轮问答分数更有参考价值。

协同起来:流程图、最小代码与失败清单
四根支柱不是四块孤立的积木,它们通过同一个循环串起来。整体协同关系可以画成这样:

用户目标 │ ▼ ┌──────────┐ 读取 ┌──────────┐ │ 记忆 │◄─────────│ LLM │ │(短期/长期)│─────────►│ (推理决策) │ └──────────┘ 写入 └──────────┘ │ 输出工具调用意图 ▼ ┌──────────┐ │ 工具执行 │ │ (Function) │ └──────────┘ │ 返回结果 ▼ 回到 LLM 继续循环,直至任务结束

一个最小可运行骨架(Python 风格,工具用伪函数代替):

def run_agent(goal, memory): history = [{"role": "user", "content": goal}] + memory.get_context() while True: reply = llm.complete(history) # 支柱一:推理 action = parse_action(reply) # 支柱二:解析工具意图 if action["type"] == "finish": return action["answer"] result = call_tool(action) # 支柱二:执行工具 memory.save(action, result) # 支柱三:写入记忆 history.append({"role": "assistant", "content": reply}) history.append({"role": "tool", "content": result})

规划(支柱四)体现在循环的每一步里:模型每轮都要重新评估下一步,而不是一次到底。整段代码的核心逻辑就一句话——把 LLM 的输出变成可执行的动作,把执行结果再变回 LLM 的输入。

下面这张失败模式清单,Agent 不靠谱的根因,九成能在这里对上号:


结论

Agent 不是"调一个大模型就行",而是四根支柱的协同工程:LLM 想,工具做,记忆记,规划排。哪一根缺位,Agent 都会以一种很笨的方式失败——而大多数失败,其实都写在上面那张表里。

从零搭 Agent 的正确顺序,我的建议是先工具、再记忆、后规划。理由很简单:没有工具,Agent 只能聊天,干不了活;记忆跟不上的话,它每次开工都像第一天上班。规划这步最抽象,放在收尾反而容易理解——它就是把前两样串起来的那根线。先把"手"接上,让 Agent 能开始干活,比一次上满四件套更容易看到成果。

资料展示

下面是我整理的AI大模型学习资料和工具包预览,适合收藏后按主题逐步学习。

如果你想看完整资料目录,可以在评论区留言「资料」;也欢迎告诉我你更关注AI大模型里的哪类内容。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 22:15:37

硬件人的拼豆:从零散模块到可交付系统的工程化开发路径

“拼豆”这个词,最近在硬件圈被拿来讨论。我第一次看到“硬件人的拼豆”这个说法,第一反应是自己桌上那堆开发板、核心板、传感器模块和转接板——它们确实像拼豆:单个看起来不起眼,但只要底板正确、引脚对应、供电到位&#xff0…

作者头像 李华
网站建设 2026/9/4 22:14:15

录屏卡顿音画不同步?录前清理后台是关键

录屏30分钟,前3分钟正常,第12分钟开始画面卡顿,第20分钟声音和画面对不上,最后软件提示“资源不足”直接退出。这种场景你一定不陌生。很多人遇到这种情况,第一反应是骂录屏软件不行,然后换软件、换版本、换…

作者头像 李华
网站建设 2026/9/4 22:14:06

电气绘图用嘉立创ECAD还是传统电气CAD?选型与实践指南

前几天有一位做设备开发的工程师问我:控制柜里的电气原理图,能不能直接用嘉立创ECAD来画?这个问题看起来很简单,但背后藏着一个很常见的选型误区——很多人把“电气绘图”当成一种通用技能,以为只要掌握一款软件&#…

作者头像 李华
网站建设 2026/9/4 22:13:54

Box-Muller变换:从均匀分布生成高斯随机数的MATLAB实现与优化

简介:本资源面向MATLAB初学者与统计模拟实践者,聚焦均匀分布随机数向高斯分布(正态分布)的转换问题,重点实现12法则与经典的Box-Muller变换两种算法。压缩包共4个文件(3个MATLAB函数文件.m 1个说明文本.tx…

作者头像 李华
网站建设 2026/9/4 22:06:50

STM32 14 PWM1测频率占空比(测周法)

一、学习背景和目标 1.1 学习背景 在嵌入式系统开发中,测量外部信号的频率和占空比是一项非常常见的需求。无论是电机转速检测、遥控器信号解码,还是传感器数据采集,都离不开对脉冲信号的精确测量。传统的测量方法往往需要额外的硬件计数器或…

作者头像 李华
网站建设 2026/9/4 22:06:50

MiniMax H3本地部署实测:ComfyUI中AI视频生成安装与使用

MiniMax H3 本地部署实测:AI 视频生成模型在 ComfyUI 中的安装与使用 AI 视频生成这两年最大的变化,是模型从“只能生成几秒动态图”逐步走向“能控制镜头、角色和参考图”。MiniMax H3 是这条路径上一个值得实测的对象。它的定位是文本生成视频模型&am…

作者头像 李华