细说复旦大学智能体综述AI-Agent二更
深夜改完第N版Agent,我灌下第三杯咖啡,决定和你好好聊聊这玩意儿
先跟你讲个事儿。
去年我写完那篇复旦和斯坦福Agent综述的文章时,ChatGPT还是个新鲜玩意儿,Agent这词儿,说实话,没几个人认真当回事。圈子里的人聊起来,都觉得“太远了”。
你猜怎么着?
不到一年,风向全TM变了。
OpenAI把Agent列为下一个核心战场,Anthropic搞了个Computer Use——直接让AI像人一样操纵电脑屏幕,Manus那产品一出来,上都炸了,一堆人问:“这波Agent到底是不是忽悠?”
最让我有感触的是什么呢?
我自己的项目组,去年底开始把几个常规的RAG应用改成Agent模式。用一句话形容当时的感受就是:踩坑踩到怀疑人生。
所以今天我想跟你再聊一次复旦那篇86页综述。
但不是复述论文——把论文扔给你看,你也不一定需要。我想结合我这小一年,在坑里摸爬滚打的经验,帮你搞明白两件事:
Agent到底能干啥?怎么干?最容易在哪翻车?
嘿,信我,这趟车,你迟早得上。
颠覆你的认知:别把Agent当“新物种”,它就是个“加了脑子的打工人”
每次跟人聊这话题,都会有人问我:
“Agent和大模型到底啥关系?大模型还没搞明白呢,又来一个Agent?”
我懂。真的懂。
你看,大多数人对新概念的直觉反应就是“又来一个东西”。但复旦那篇综述里有一段话,我看完直接拍桌子。
AI Agent不是突然冒出来的。
你想想,1950年代图灵老爷子把“智能”这个概念延伸到人工实体时,Agent的种子就埋下了。强化学习时代,Q-learning、SARSA、Deep Q-Network,再到AlphaGo——本质上全是Agent。
那为什么以前没火?
简单啊——之前的Agent,能力受限于模型。泛化弱、训练慢、应用窄,你搞个Q-learning还得从头设计奖励函数,折腾半天只能玩个游戏。
但大语言模型(LLM)出来后呢?
一切变了。
LLM给了Agent一个真正强大的大脑——天生就懂语言、会推理、能泛化,不用像以前那样从零训练。所以你说,LLM和Agent是什么关系?
LLM是底盘,Agent是坐在底盘上的司机。
复旦综述里有个特精准的比喻:LLM-based Agent是“通往AGI的火花”。火花不是火焰,但有了引燃的可能。
说到这儿,我自己理解得更直白——你听听:
以前我们调用大模型是“你问我答”。
Agent模式呢?
我给你一个目标,你自己拆、自己干、干完了告诉我。
区别不在模型本身,在使用方式。
Agent到底长啥样?复旦给的框架,其实是个“大脑+感官+手脚+日记本”
复旦那篇综述里提了一个三模块结构:大脑(Brain)、感知(Perception)、行动(Action)。
后来业界又加了记忆(Memory),变成四模块。
我为什么特别认同这个框架?
因为我在这上面栽过大跟头。
一个一个跟你说,保证不说术语,全是人话。
感知模块:这就是Agent的“眼睛和耳朵”
接收外部信息——文本、图片、音频、API返回的JSON、网页的DOM结构。
你想想,你的Agent能不能读懂用户上传的PDF?能不能解析一个网页表格?这决定了它能处理的场景类型。
我有个项目让Agent去抓取公开招标信息,你知道第一步卡在哪了吗?
网页结构一变化,感知模块直接崩了。 写死的解析规则,根本不管用。
你看,这一步只要写死一点就崩。
大脑模块:这就是那个LLM,但别用错
复旦综述里特别强调——大脑要负责推理和规划。
比如用户说“帮我订一张下周二去上海的机票”。
大脑需要拆成:确认日期→搜航班→按预算筛选→给出选项→用户确认后执行订票。
你猜我用开源小模型做规划时发生了什么?
它一本正经告诉我“已经订好了”,实际上什么也没发生。
没有推理能力的大模型,就是一本正经地胡说八道。
行动模块:让它真干事,就得给工具
搜索、计算、发邮件、操作文件、调用代码解释器……
OpenAI那个code interpreter就是个典型工具。Anthropic的Computer Use更有意思——直接给Agent一个“看屏幕-点鼠标-敲键盘”的接口,让它像人一样操作电脑。
我让同事试了试,猜它在哪卡住的?
验证码。卡了三次,最后还是人工介入。
所以工具调用不可能100%可靠。你要在设计阶段就接受它。
记忆模块:我最开始完全忽略的坑
第一次做客服Agent时,对话一超过10轮,它就忘了用户一开始说的关键信息。
你想想,一个客服,连你开头说了什么都记不住,你怎么信任它?
后来我用了短期记忆(存当前会话)和长期记忆(存用户偏好和历史)的双层结构,才算稳定下来。
没有记忆的Agent就像一个失忆症患者,每次都得重新认识你。
我踩过的三个大坑,你千万别再踩一遍
第一个坑:规划太死板,像个“一条道走到黑”的傻子
我以为给定目标后,Agent会一步步执行到底。
结果呢?
它经常在第一个子任务上就卡住,然后进入死循环。比如让它“写一篇分析报告”,它先“查资料”然后“阅读”,读完不知道下一步。
后来我加了迭代检查:每完成一步,Agent必须输出下一步的明确计划,同时允许用户打断调整。
说白了就是:别让它一个人瞎搞,关键节点要汇报。
第二个坑:工具调用的幻觉,它“说”调用了,其实根本没调
这是LLM的通病。
Agent说“已调用搜索工具”,但我去查日志——根本没触发API。
原因是什么?模型只生成了“调用的文本描述”,而不是真实的结构化调用。
解决办法?用函数调用(function calling)而不是自由文本。OpenAI和Claude都支持JSON模式,强制模型输出结构,再在代码里解析执行。
别信模型用自然语言说的“已调用”——它只是说说而已。
第三个坑:多Agent协作变成了吵架
复旦综述里有一章专门讲多Agent社会,我一开始觉得“多个Agent一起干活”很酷。
然后我测试了两个Agent:一个写文案,一个做设计。
你猜发生了啥?
互相指摘对方的产出,吵了10轮还在争论“这个标题是否吸引人”。
后来我让一个Agent当“领队”,有最终决定权,其他Agent只是提建议。这个模式跑通了。
现实社会需要有个拍板的,Agent社会也一样。
怎么开始动手?三个实操建议,拿走不谢
第一,别追求一步到位
一上来就想做个全自动的复杂Agent,大概率烂尾。
先从简单的单Agent开始:让Agent帮你查资料并整理成摘要。用LangChain或者直接写Python调LLM的API,配一个搜索工具(比如SerpAPI或Bing Search API)。
我建议你用LangChain,从第0.1.0版之后它对Agent的支持才算稳定。现在到0.3了,核心逻辑没变——定义一个工具列表,把LLM的回复解析成动作,再循环执行。
第二,记忆先做短期就够了
很多人一上来就要上向量数据库做长期记忆,结果项目复杂度飙升。
我的建议:前几个版本只用上下文窗口(比如保留最近20轮对话),配合提示词让Agent做简单摘要。等产品形态稳定了,再加长期存储和检索。
不要为了技术而技术。
第三,监控和干预是必须的
Agent不是自动驾驶,它现在还是辅助驾驶。
我做的每个Agent应用都在前端加了一个“暂停-修改-继续”的按钮。用户可以随时查看Agent的思考过程,修改它的计划,或者直接替它做一步操作。
听起来不够“自动”,对吧?
但实际落地时,用户的信任就来自于——手里有控制权。
如果你想深入,这几样东西值得啃
给你列个清单,不用全看,挑你需要的地方:
- **复旦那篇86页综述**:https://arxiv.org/pdf/2309.07864.pdf 不要只看中文解读,原文更系统。可参考文献600多篇,你只需要细读前三章,后面的应用案例按需跳着看。
- **Lilian Weng的博客**:OpenAI应用AI负责人写的LLM Powered Autonomous Agents,条理清楚,很多工程细节都提到了。
- **Anthropic的12-Factor Agents**:去年底刚出的,纯粹讲工程,适合用来搭建生产级别的Agent。每个原则都可以对照检查自己的设计。
- **Manus产品**:虽然还没完全开放,但从他们展示的思路看,把Agent的“规划+执行+反省”循环做得挺扎实。可以关注他们的技术博客。
我知道很多人还在观望,觉得Agent是概念炒作。
但说实话,从去年到今年,我亲眼看到同行的项目从一个简单的“我们也在用大模型”变成了“我们做了一套Agent方案”。
方向已经很明显了——不是在AI旁边打个补丁,而是重新思考产品交互的逻辑。
挺有意思的,这个领域一天一个样。我现在给自己定的规矩是:每个月至少重读一遍那篇综述的前言部分,看看有没有新的理解。
每次都发现自己之前漏掉了什么。
记住一句话:看一百篇文章,不如动手做一个Agent。哪怕它第一步就卡死在验证码上——那也是你亲手点燃的第一簇火花。
读者评论 4