AI Agent 核心概念寓言

用寓言理解 Agent 五大核心概念:RAG、ReAct、Function Call、MCP、记忆系统。每则寓言后附概念解析和检验问题。


一、中药材采购员的故事(RAG)

老周在中药材市场做采购二十年了。南来北往的药铺掌柜都找他拿货——报个药方过来,问他”今年甘肃的黄芪怎么样""云南的三七成色如何”。老周脑子活,大部分时候张嘴就来:“甘肃黄芪今年好,条粗粉足。“掌柜们信他,款到发货。

三月连着退了三批货。第一批是黄芪,有效成分含量不达标,药铺说熬出来的汤颜色发白。第二批是当归,挥发油含量偏低。第三批更离谱,老周信誓旦旦说”川芎今年产量足价格稳”,结果四川那边遭了虫灾,价格翻了倍,药铺按他报的价根本拿不到货。

退货赔的钱不算什么。丢人。

老周关了三天门,在库房里搭了个架子。他把所有产地当季的检验报告——农残检测、有效成分分析、产量统计——按产地和药材名分类放好。从那以后,掌柜再问他,他不急着回话。先去架子上翻出对应的报告,把相关的几页抽出来摆在桌上,然后对着报告一个字一个字地给掌柜念。产地、含量、价格、库存,每一条都有出处。

有掌柜嫌他慢:“老周你以前不是秒回吗?“老周说:“以前秒回的三批全退了。你急还是我急?”

从此再没退过货。

概念解析

RAG(Retrieval-Augmented Generation,检索增强生成)——在模型生成回答之前,先从外部知识库中检索相关文档,把检索结果作为上下文拼入 prompt,再让模型基于这些文档生成回答。

故事元素映射概念
掌柜提问用户输入问题
老周凭印象回答LLM 纯生成(无检索),容易幻觉
退了三批货模型幻觉(hallucination),输出不准确
库房的检验报告外部知识库 / 文档
翻报告、抽几页检索(Retrieval)——向量相似度搜索
对着报告回话增强 + 生成(Augmented Generation)
分类摆放Chunk 分块 + 索引
每一条都有出处引用来源,减少幻觉

检验问题

  1. 理解检验:如果老周的库房里根本没有某味药材的检验报告,他该怎么办?这在 RAG 系统中对应什么问题,你会怎么处理?
  2. 迁移检验:你能举一个你实际工作中”凭印象做事经常出错,查了资料就对了”的场景吗?用 RAG 的逻辑重新设计一下这个流程。

二、汽修工小陈(ReAct)

一辆白色轿车开进汽修店,车主说发动机故障灯亮了,踩油门没劲。

小陈没急着拆东西。他想了想:可能是火花塞老化,也可能是油路堵了。先看火花塞吧——拆下来一看,积碳确实重,但电极间隙还在正常范围内。他想:积碳会导致点火偏弱,但不太可能导致这么明显的动力下降。应该还有别的问题。

他接上燃油压力表。怠速状态下读数只有正常值的60%。他想:油路供油不足,最可能堵在滤芯。他拆下汽油滤芯,倒出来半杯黑水。换上新的,试车。故障灯灭了,油门响应利索。

车主问:“你一开始怎么不直接换火花塞?很多人会这么干。“小陈说:“换了火花塞可能好一点,但治不了根。车开三天还得回来,第二次你不一定还来找我。“

概念解析

ReAct(Reasoning + Acting)——Agent 的核心工作模式,通过 Thought(思考)→ Action(行动)→ Observation(观察)的循环,让模型在每一步都基于真实反馈调整策略,直到任务完成。

故事元素映射概念
”可能是火花塞,也可能是油路”Thought(推理)——分析可能的原因
拆火花塞 / 接压力表 / 拆滤芯Action(行动)——调用工具执行操作
积碳重但间隙正常 / 压力只有60% / 半杯黑水Observation(观察)——获取工具返回的结果
”应该还有别的” → 换方向检查根据观察调整推理,循环继续
换完滤芯试车,灯灭了任务完成,输出最终结果
”直接换火花塞”不经过推理直接输出,治标不治本
三天后还得回来没有观察反馈的闭环,结果不可靠

检验问题

  1. 理解检验:如果小陈换了滤芯之后试车,故障灯还是亮的,他会怎么做?在 ReAct 框架中,什么机制防止这个过程无限循环下去?
  2. 迁移检验:想象你在调试一个线上 bug,你的排查过程天然就是 ReAct 模式。请举一个你实际遇到过的排查案例,用 Thought → Action → Observation 的结构复盘一遍。

三、川菜馆的服务员(Function Call)

老张在一家川菜馆当服务员,干了八年。客人的话他能听懂——“来个不辣的鱼""这个毛血旺少放花椒""再加一份拍黄瓜”。但老张不会做菜。他能做的是把客人的话翻译成一张厨房工单:酸菜鱼,鲈鱼,免辣,三号桌。然后把工单递进厨房窗口。

厨房做完,老张端出去。

有一回店里忙,新来的小刘看厨房跟不上,自己冲进去占了两个灶台——一边炒回锅肉一边炖汤。回锅肉糊了,汤溢了,灶台上还溅了油。店长把小刘拽出来:“你只管记单子递单子,别碰锅。你碰了锅,厨房的活谁都干不好。”

老张在旁边收拾桌子,头都没抬。八年了,他连灶台的开关都没按过。

概念解析

Function Call(函数调用)——LLM 不直接执行任何操作,只输出结构化的工具调用指令(函数名 + 参数),由应用程序代码负责实际执行,执行结果再返回给 LLM 生成最终回答。

故事元素映射概念
客人点菜用户输入
老张把点菜翻译成工单LLM 输出结构化的工具调用指令(JSON)
工单:酸菜鱼/鲈鱼/免辣/三号桌function_name + arguments(函数名 + 参数)
递进厨房窗口应用程序接收指令,分发给对应的执行器
厨房做菜应用程序代码实际执行函数
端出去给客人执行结果返回 LLM,生成最终回答
老张不会做菜LLM 不执行函数——安全设计
小刘自己炒菜糊了LLM 直接执行(不存在的模式),会导致混乱

检验问题

  1. 理解检验:老张一次能递几张工单进厨房?厨房能同时做几道菜?这在 Function Call 中对应什么能力,有什么好处?
  2. 迁移检验:在你用 Claude Code 的过程中,它调用了哪些”工具”(Bash、Read、Write 等)?Claude 自己执行了这些操作吗,还是谁在执行?

四、小区物业维修站(MCP)

阳光小区有二十栋楼,每栋楼交房的时候选的对讲系统品牌都不一样——三号楼是海康的,七号楼是大华的,十二号楼是个杂牌。物业维修站的老李一个人管全部。每栋楼的接线方式、调试软件、线路图都不一样,老李不得不在工具箱里备二十套说明书。

后来小区扩建,又来了三栋新楼。新楼用的又是三个新品牌。老李跟物业经理说:“我学不动了。你们再招人吧。”

新来的物业经理小赵干了件事:他要求所有新装和改造的对讲系统,统一留一个标准接口盒。不管盒子里面是海康还是大华还是杂牌,对外都是同样的接线方式、同样的检测端口。维修工只需要认这一个接口盒。旧楼改造时也加装这个接口盒。

三个月后全部改完。老李回来上班,带了两个徒弟。新来的徒弟只学了一天就会了——因为不管哪栋楼,打开接口盒看到的都是一样的东西。

又过了一年,小区门口要加装人脸识别闸机。供应商问物业需要怎么对接。小赵说:“你按接口盒的标准接就行。“供应商花半天就接好了。老李和徒弟甚至没参与。

概念解析

MCP(Model Context Protocol,模型上下文协议)——一个开放标准,让 AI 应用能通过统一协议连接外部工具和数据源,解决”每个应用 × 每个工具都要单独写集成代码”的 N×M 问题。

故事元素映射概念
二十栋楼 × 二十种系统N×M 爆炸问题:每个 AI 应用要跟每个工具单独集成
老李备二十套说明书维护成本爆炸
标准接口盒MCP 协议——统一标准
盒子里面品牌不同不同 MCP Server 内部实现不同
对外同样的接线方式MCP 的标准接口(JSON-RPC)
徒弟只学一天新应用接入 MCP 只需实现 Client,无需了解每个工具的细节
新楼加装接口盒新工具只需实现 MCP Server
人脸闸机半天接好运行时动态发现新能力,不需要改已有代码
老李没参与Host(AI 应用)不需要知道 Server 内部实现

检验问题

  1. 理解检验:如果小区门口的人脸闸机不想用标准接口盒,而是自己搞了一套接线方式,老李的传统能不能直接用?这在 MCP 中对应什么问题?
  2. 迁移检验:你实际用 Claude Code 时配置了哪些 MCP Server?如果每个 Skill 都要单独写一套连接代码而不是走 MCP 协议,你的配置文件会变成什么样?

五、上门护理员阿芳(Agent 记忆)

阿芳做了十年社区上门护理。每天跑六七位老人家,量血压、换药、聊天。她随身带一块硬纸板工作板,上面能写的空间大概一张A4纸。

上午在王奶奶家,她记下:血压150/95,有点高,追问了昨晚睡得好不好,王奶奶说没睡好,邻居装修吵了一夜。又记下:降压药按时吃了。又记下:王奶奶说最近膝盖疼,让阿芳帮忙看看膏药还够不够。阿芳查了药箱,还有三贴。

到了下午,工作板写满了。她把上午的详细记录擦掉,换成一句话:“王奶奶上午血压偏高150/95,未按时入睡,降压药已服,膝盖疼膏药剩三贴。”

一上午三段详细对话,压缩成一行。

月底社区医生问她:“王奶奶最近一个月血压怎么样?“阿芳翻开家里的大本子——她每天回家把压缩后的记录按老人名字抄进去。翻到王奶奶那页,三十天的血压值排成一列,偏高偏低一目了然。

新来的同事问她:“为什么不把每天所有细节都记在大本子里?“阿芳说:“一天六七个人,每个人聊半小时,光对话就能写几十页。大本子一个月就满了。只记关键结论,需要细节的时候回去翻当天的护理日志。“

概念解析

Agent 记忆系统——分为短期记忆(上下文窗口)和长期记忆(外部存储),通过压缩策略在有限的上下文中保留最重要的信息,需要时从长期记忆中检索。

故事元素映射概念
工作板(一张A4纸)上下文窗口(Context Window),容量有限
写满了Token 上限接近
擦掉上午详细记录滑动窗口策略——丢弃旧消息
压缩成一句话摘要压缩——用 LLM 总结历史对话
只记关键结论重要性过滤——只保留关键信息
家里的大本子向量数据库 / 长期记忆(External Memory)
按老人名字索引元数据标签,支持结构化检索
翻到那页一目了然向量相似度检索,召回相关历史
回去翻当天的护理日志需要细节时从外部存储重新加载

检验问题

  1. 理解检验:阿芳压缩记录时,把王奶奶”邻居装修吵了一夜”这条信息删掉了。如果后来发现王奶奶血压持续偏高,而原因是长期噪音导致失眠,阿芳能追溯回去吗?这说明压缩策略有什么风险?你会怎么改进?
  2. 迁移检验:你在和 Claude 长对话时,有没有遇到过”它忘了前面说过的话”的情况?用记忆系统的三层结构分析一下,Claude 在哪一层出了问题?

附:概念速查表

寓言概念核心一句话
中药材采购员RAG先查资料再回答,不凭印象瞎说
汽修工小陈ReAct想一步做一步看一步,循环到修好
川菜馆服务员Function Call我不炒菜,我只下工单
物业维修站MCP统一接口盒,谁来了都能插
上门护理员Agent 记忆纸板写不下就压缩,重要的存大本子