← 返回资讯
苏晴
资深编辑
已审核

解读LLM Agent:总体框架、经典论文与实践

这周我停更了大模型RL的连载——不是偷懒,是被拉去救一个Agent项目。本来以为嘛,照着成熟架子改改,两天就能糊弄过去。结果呢?差点把团队干翻车了。好,现在把踩过的坑全写出来,省得你跟我走一样的路。

解读LLM Agent:总体框架、经典论文与实践

解读LLM Agent:总体框架、经典论文与实践


以下是修改后的版本,按你的要求来:


你现在的Agent,可能第一个坑都没爬过去

先讲个真事儿。

这周我停更了大模型RL的连载——不是偷懒,是被拉去救一个Agent项目。本来以为嘛,照着成熟架子改改,两天就能糊弄过去。结果呢?差点把团队干翻车了。好,现在把踩过的坑全写出来,省得你跟我走一样的路。

你想想,如果下一次你老板拍着你肩膀说“帮我看下这个Agent项目”,你心里总得有个底吧?


01. Agent这东西,真不是你想象的那样

先把这个最核心的问题说清楚。

什么是工具?

你只要让语言模型能从外部拿到知识,或者能执行操作,那个接口就是工具。搜索引擎、代码执行器、天气API、数据库……甚至另一个模型。说白了,只要不是LLM自己脑子里存的东西,都算工具。

那为什么要工具?你看看——LLM的知识凝固在训练数据里,今年发生的事它完全不知道,代码写完了不会自己跑,算个数学题都能胡说八道。整合个搜索、数据库、知识库,至少回答用户问题的时候能靠谱点,对吧?RAG(检索增强生成)就是最常见的一种——把文本搜索当外挂,每次回答前查一下,多少能减少一点幻觉。

但是! 工具这东西,用不好比不用更惨。

我刚做RAG那会儿,天真地以为加个向量库就完事儿了。结果呢?分块大小、embedding模型选择、相似度阈值、重排序……每一步都在给你制造“惊喜”。你拆小了,语义不完整;拆大了,噪音一堆。选错了一个阈值,全世界都跑偏。

说到Agent的经典框架,Lilian Weng那篇博客已经把话说透了:Agent = LLM + 规划 + 记忆 + 工具,但四者之间是乘法关系——缺一块,效果归零。

说起来你可能不信,实操下来最容易翻车的地方,根本不是模型多强,而是记忆和工具描述——这两个最不起眼的玩意儿。

记忆分短期和长期。短期就看上下文窗口嘛,但窗口再大也有限,长了模型自己都迷路。长期记忆得靠外部载体,存成向量或文件,需要的时候再检索回来。

后来我发现了Manus项目的做法——直接把文件系统当作终极上下文。什么意思?你访问了一个网页,保留URL,内容先踢出去,后续需要了再重新请求。生成了报告,保留文件路径,内容也暂时卸载,需要时用cattail读回来。这叫“可逆压缩”——信息没丢,只是暂时从脑子里拿出去。

我试了一周告诉你——这做法太他妈实用了!尤其是长任务,效果立竿见影。

它还有一个特别聪明的细节:鼓励Agent主动把中间结果写成文件。比如查了个复杂数据,保存到/tmp/query_result.json,上下文里只留一句“结果已写到某路径”。后续需要了,head一下看看前几行就行。你想想,这不跟正常人一样工作吗?不是把所有东西都塞进脑子里,而是写下来、存好、需要了再翻。又笨重又聪明,但就是管用。

记忆的研究也在往前推。那篇A-Mem的论文读得我眼前一亮——它把记忆系统直接做成了Agent,不只是存向量。每条记忆是富信息卡片,包含原始内容、关键词、标签、上下文描述。新笔记进来后,系统先用余弦相似度找到Top-K个候选,再交给LLM判断哪些笔记之间有“意义关联”(因果关系、概念层级、跨领域类比)。然后反过来更新旧笔记的上下文。这意味着什么?你的旧记忆会跟着新信息一起演化。 结果在LoCoMo数据集上,A-Mem的F1和准确率都明显高于基线,多跳推理表现尤其突出。

但你想想,这又引入一个LLM调用——成本压得住吗?我在实际产品里还不敢上这个,但监控起来肯定让你头疼。


02. 别被那些新词骗了,范式的真相是这样的

从2023到2026,Agent技术形态已经经历了四个阶段。注意,不是平滑过渡,是跳台阶的。你跳错一个,前面就是坑。

第一阶段:被动式ReAct Agent(2023年)

那年是LLM元年,Agent概念刚有。代表项目:AutoGPT、AutoGen、MetaGPT。核心逻辑就是“推理→观察→回复”的短链路。你告诉它“查天气”,它“想”一下,调API,看到结果,回答你。就这一步。超过三步的任务就开始跑偏。

我实际试过AutoGPT——感觉就是一只勉强会按按钮的猴子。一句话没说清楚它就乱套。你对它说“帮我订个周末出差的酒店”,它会先搜天气,然后查餐馆,最后问你要不要机票。你说气人不气人。

第二阶段:Plan-and-Execute 与 Reflection

任务太长了怎么办?先规划再执行。把大任务拆成小步骤,一步一步来。Reflection加了一层自我批评,每一轮执行完,让Agent回顾一下刚才做得怎么样,哪里需要修正。好处是长任务不容易迷路,代价是token消耗猛增。

我做测试的时候,一个三步就能完成的任务,加了Reflection之后token量翻了3倍。你说值不值?值,但烧钱。

第三阶段:Multi-Agent 与 Workflow

任务天然可以拆成多个角色,那就让不同Agent扮演专家:一个写代码,一个测试,一个管数据库。听起来很美好对不对?

但你猜怎么着?通信成本和调试成本会让你崩溃。

我搭过一个两个Agent的对话系统,A让B查数据,B查完了A没收到,或者A自己又查了一遍。没有全局同步,很快就乱成一锅粥。最后我不得不在日志里手动追踪它们的对话,差点想写个“Agent调解员”。

Workflow(AI工作流)走的是另一条路:预先画好执行路径,节点上放LLM。执行路径固定,可观测,出问题好排查。代价是前期设计成本高,要能提前把所有步骤确定。

对比一下:ReAct灵活但调试难,Token烧得快;Workflow稳但对需求拆解要求高,改起来费劲。我的判断很简单:先写路径,能写出来就用Workflow,写不出来再上Agent。 就这一句话,你拿着用,比追什么新框架都有用。

第四阶段:Agentic Workflows + 文件系统即上下文(2025-2026)

Manus、Claude Code这些新架子,直接把文件系统当作永久上下文。它们放弃了RAG那种“推理前检索”的思路,改成了“just-in-time”检索——让LLM自己决定什么时候搜索、怎么搜。

为什么会这样?因为RAG的组件太多了:分块策略、embedding模型、索引结构、相似度计算……任何一环出问题都影响结果。与其费这么大劲,不如让模型自己写grep命令搜索代码库。

我试了Claude Code的search命令——确实比很多手工搭建的RAG快准狠!但前提是模型本身得够强。能力一般的LLM连search命令都写不对,你让它自己搜,它能把grep写成grep -r然后卡死。

有一段历史我专门读了一下——经典符号架构(SOAR、ACT-R、BDI)。说实话,跟现在LLM Agent有代沟。那些架构依赖预编码的知识库和推理规则,现在是靠数据统计出推理能力。好有一比:一个是工程师亲手拧螺丝,一个是机器人学会了看图纸自己拧。

强行把BDI的概念套到现在的Agent上,反而遮蔽了统计模型背后的真实行为——你分析半天“意图模型”,不如看看它在训练数据里见过多少个类似的问题。


03. 实操里最容易忽视的,偏偏是最要命的

上下文怎么管——90%的人第一步就错了

上面说了Manus的“可逆压缩”,我们项目里直接拿来用了。具体做法其实很简单:

关键是什么?要保证信息真的“可逆”——URL还能访问,路径没变。否则就是真丢数据,到时候你翻日志都找不到问题在哪。

还有一个更深的取舍问题:“推理前检索”和“just-in-time”到底用哪个?

我们现在的项目依赖一个内部代码库。早期搭了RAG管道,结果半年里断断续续出问题。不是embedding模型换了,就是索引结构崩了。最后我一咬牙,改成Agent自己执行搜索命令。代价是得写清楚搜索工具的调用描述,而且模型必须能理解目录结构。

切换之后,代码仓库的上下文质量确实好了不少。但也有新问题——模型有时候搜索命令写错了语法,或者搜出来的东西太多不会过滤。不过相比之前RAG莫名其妙失效来说,这两个问题至少能排查。

别以为自己是在做研究,先让它跑起来再说。

工具描述——最容易省时间的地方,坑最大

说到这儿,我要说最重要的一件事。

MCP(Model Context Protocol)解决了接入方式,JSON Schema解决了格式定义。但是,模型到底调不调这个工具、参数怎么填,最后都靠description里那几句话。

你想想,你写个工具描述“获取天气”,模型根本不知道支持什么城市、返回什么字段。它怎么调?不调算你运气好,调了还给你个错误结果。

我见过一个典型案例:有个人写“获取天气”,模型对着它问“你想查哪个城市的天气?”。你看,模型自己都不知道该填什么参数。

后来我改成:

CODE
description: "查询指定城市的实时天气数据。参数city是城市名,如'北京'。返回包含temperature(摄氏)、humidity、wind_speed。如果城市不存在,返回error。"

调用率立刻提升3倍。

你在这个地方省力气,后面调试两倍还回来。我见过有人说“description写几句就行”,结果模型一周都不调用一次工具,项目组以为是框架问题,查了三天,最后发现是没写清楚支持什么城市。


结尾:让Agent跑起来之前,先别想着万能

你问我这趟踩坑最大的收获是什么?

Agent项目跑起来不稳定,99%不是模型不够好。 规划、记忆、工具、描述——随便哪个出问题都可能崩。记忆跟不上,长任务就会失忆;上下文管不好,模型容易跑偏;工具描述不清楚,模型要么不调用要么调错。

选型也一样,特别容易跳坑。你先问自己一句:执行路径能写清楚吗?能,就Workflow;不能,再用Agent。就这一个判断,省下的时间足够你看完两篇论文加一杯咖啡。

至于未来,我觉得工具调用和记忆管理会是核心竞争力。纯靠模型内部推理来干长任务不现实,文件系统那种可逆压缩思路会越来越多。RAG不会消失,但不再会是唯一答案。

至于那些试图将经典符号架构生搬硬套到LLM Agent上的做法——多半会碰壁。因为这不是一次改良,是一次范式跃迁。

好了,我自己的下一步,是把手上的项目从Multi-Agent拆回Workflow加局部ReAct的组合。稳定优先,效率其次。等跑通了再考虑更复杂的架构。

至少先把路径写纸上,再说别的。

别老想着造个贾维斯,先让它学会不把钥匙忘在家里。

363
6062 阅读
4 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年06月24日 11:34

苏晴

资深编辑

科技媒体从业 8 年,曾就职于多家科技媒体。关注 AI 创业和投资赛道,采访过 50+ 位行业从业者。

读者评论 4

老李 3天前
有个小问题想请教,文中提到的那个方案在大规模场景下性能怎么样?
回复 点赞 (5)
运营小陈 6天前
转发到团队群了,大家都觉得有参考价值。
回复 点赞 (4)
数据分析师 1周前
数据引用很扎实,建议补充一下近三个月的最新数据。
回复 点赞 (9)
产品经理阿杰 1周前
从产品角度看,这个方向确实有机会,但商业化路径还需要验证。
回复 点赞 (15)