
1. 从一份日报标题说起Agent 与 LLM 技术生态的当下切面看到Agent / LLM 技术精选日报这个标题我第一反应不是又一份资讯汇总而是它背后折射出的技术节奏——这个领域的迭代速度已经到了需要日报这种粒度来跟踪的程度。我做 AI 应用开发差不多有几年时间从最早拿 LLM 当个高级文本补全工具到现在天天跟 Agent 编排、RAG 检索链路、MCP 工具协议打交道中间踩的坑和交的学费足够写好几篇复盘。这篇博文我不打算复述某一天的新闻而是借这个标题和它关联的一批热搜词把 Agent、LLM、RAG、GraphRAG、MCP 这几条主线串起来讲清楚它们各自解决什么问题、彼此怎么配合、实际落地时哪些地方最容易翻车。如果你正在做 AI 应用、准备搭自己的知识库、或者只是被AgentMCP这些词刷屏刷得有点懵这篇内容应该能帮你把概念地图理清楚。我会尽量用大白话加实际案例来讲不堆术语但该有的技术细节一个不少。核心关键词 Agent、LLM、RAG、GraphRAG、MCP 会自然贯穿全文你读完至少能判断手上这个需求到底该用 RAG 还是 GraphRAGAgent 的容错该怎么设计MCP 到底值不值得接。先说结论性的判断2026 年这个时间点单纯调个 LLM API 做问答已经不算技术活了真正的分水岭在于系统级工程能力——检索质量、Agent 的自主容错、工具协议标准化、以及知识表示方式的选择。下面我按这个逻辑一层层拆。2. LLM 与 Agent从会说话到会做事的那道坎2.1 LLM 的本质局限决定了 Agent 必须存在很多人一开始会把 LLM 当成万能大脑觉得只要模型够强什么都能干。我早期也这么想直到发现一个尴尬的事实LLM 本质上是个无状态的函数——你给它一段输入它吐一段输出仅此而已。它不会主动去查数据库不会记住上一轮对话之外的东西更不会在发现自己答错时停下来重新想办法。这就是 Agent 存在的根本理由。Agent 不是更聪明的 LLM而是在 LLM 外面套了一层控制循环让模型能调用工具、能观察结果、能根据反馈调整下一步动作。用生活化的类比LLM 像是一个知识渊博但只能坐在椅子上说话的人Agent 则是给这个人配了手、脚、眼睛和一张任务清单让他能站起来去干活。热搜词里有个harness 和 agent 区别这个问题问得很到位。Harness测试夹具/执行框架通常指的是固定流程的编排——你预先定义好步骤 A 到 B 到 C模型只在每个步骤里做局部决策。而 Agent 的核心特征是自主决定下一步做什么路径不是写死的。两者的边界其实模糊我的经验判断是如果流程分支超过三层、且分支条件依赖运行时数据那就该考虑 Agent 化如果流程稳定可预测用 harness 反而更可控、更好调试。2.2 Agent 架构的几种主流形态与选型逻辑实际项目里我见过、也用过的 Agent 架构大致分三类选错了会直接导致项目复杂度爆炸。第一类是ReAct 式单循环模型思考Reason→ 行动Act→ 观察Observe→ 再思考循环直到任务完成。结构简单适合工具数量少5 个以内、任务链路短的场景。缺点是长任务容易跑偏因为每一步都依赖上一步的输出误差会累积。第二类是Plan-and-Execute先让模型生成一个完整计划再逐步执行执行中允许修订计划。适合步骤多、需要全局视野的任务比如帮我调研三个竞品并生成对比报告。代价是前期规划消耗的 token 多且计划质量高度依赖模型能力。第三类是多 Agent 协作把任务拆给不同角色的 Agent比如一个负责检索、一个负责写作、一个负责审核通过消息传递协作。这种架构听起来很美但我实测下来除非任务本身天然可并行且角色边界清晰否则多 Agent 带来的通信开销和状态同步问题往往超过它带来的收益。热搜里agent 架构agent 框架这类词热度高但别被多 Agent的叙事带偏先从单 Agent 跑通再说。选型时我会问自己三个问题任务能不能一次规划清楚工具调用会不会互相干扰失败后能不能局部重试这三个问题的答案基本能定位到该用哪种架构。2.3 Agent 自主容错可靠 AI 系统的工程命门热搜里有一条识的 llm 智能体自主容错控制构建可靠 ai 系统的工程实践这个方向我认为是当前 Agent 落地最被低估的环节。Demo 阶段 Agent 看起来很惊艳一上生产就各种翻车核心原因就是没有容错设计。我踩过最典型的一个坑Agent 调用某个查询工具时工具返回了空结果模型没有意识到空结果意味着查询失败而是基于空结果继续编造答案最后输出了一段看起来合理但完全错误的内容。这就是所谓的幻觉级联——一步错步步错。我的容错设计通常包含四层输入校验层工具调用前检查参数是否合法比如日期格式、ID 是否存在避免把垃圾参数喂给下游。结果校验层工具返回后判断结果是否合理空结果、异常码、超长输出都要触发特殊处理而不是直接塞回模型。重试与降级层失败时先重试换参数或换工具重试仍失败则降级到保守策略比如明确告诉用户我没查到而不是硬编。循环熔断层设置最大步数上限防止 Agent 陷入调用-失败-再调用的死循环这个上限我一般设 10 到 15 步超过就强制中断并返回当前最佳结果。提示容错逻辑不要全交给模型判断能用代码写死的规则就用代码写死。模型判断结果是否合理这件事本身就不稳定把确定性逻辑交给程序把模糊判断留给模型这是分工的基本原则。3. RAG 的瓶颈与 GraphRAG 的破局思路3.1 传统 RAG 到底卡在哪里RAG检索增强生成这个词现在几乎成了 AI 应用的标配但热搜里rag 瓶颈这个词说明大家已经开始撞墙了。我做了几个 RAG 项目后总结出传统 RAG 的三个核心瓶颈。第一个是切块chunking的两难。切得太碎单块信息不完整检索出来答非所问切得太大噪声多模型抓不住重点。我试过固定长度切、按段落切、按语义切没有一种能通吃所有文档类型。技术手册适合按章节切聊天记录适合按对话轮次切法律条文适合按条款切——切块策略必须跟着数据形态走没有银弹。第二个是检索的语义漂移。向量检索本质是找语义相似的片段但相似不等于相关。用户问这个功能怎么退款检索可能召回一堆讲退款政策的段落但真正需要的是退款操作步骤。语义相似度高的内容未必是回答问题所需的内容。第三个是多跳推理的缺失。很多问题需要串联多个信息片段才能回答比如我们公司去年 Q3 的营收比前年同期增长了多少这需要先找到两年的数据再做计算。传统 RAG 一次性检索 top-k 片段很难覆盖这种跨片段的推理链。3.2 GraphRAG 用图结构补上关系推理的短板GraphRAG 的思路很直接既然文本片段之间的关系用向量表达不清楚那就显式地把实体和关系抽出来建成知识图谱检索时沿着图结构走。热搜里graphragkg 知识库、rag 知识库和结构知识库区分这些词说的就是这件事。我拿一个实际场景对比过。假设知识库是一堆项目文档用户问负责支付模块的工程师还参与过哪些项目。传统 RAG 检索支付模块相关片段可能召回一堆技术文档但很难回答这个人还做过什么。GraphRAG 则会把工程师-参与-项目这种关系抽成图上的边查询时从支付模块节点出发找到关联的人再找这个人关联的其他项目路径清晰。但 GraphRAG 不是免费的午餐它的代价很实在维度传统 RAGGraphRAG建库成本低切块向量化即可高需要实体关系抽取更新成本低增量插入高图结构变更需重算关系推理弱强适用数据松散文本、问答对实体关系密集的领域文档检索延迟低较高图遍历有开销我的判断标准是如果用户的问题大量涉及谁和谁的关系A 影响了 B 的什么那 GraphRAG 值得投入如果主要是某概念是什么某操作怎么做传统 RAG 加好的切块策略就够了。别为了追新概念硬上 GraphRAG建图和维护的成本会教你做人。3.3 知识库选型RAG 知识库、KG 知识库、结构知识库怎么分热搜里kg 知识库、rag 知识库和结构知识库区分以及应用场景这个问题我用一张表说清楚这也是我在选型时实际用的判断框架。RAG 知识库底层是向量库存的是文本片段的向量。适合非结构化内容比如文档、FAQ、聊天记录。优点是搭建快、维护简单缺点是关系推理弱。KG 知识库知识图谱底层是图数据库存的是实体和关系。适合关系密集的领域比如组织架构、供应链、医疗诊断。优点是推理强缺点是构建和维护成本高。结构知识库底层是关系型数据库或表格存的是结构化字段。适合数值查询、统计报表比如上季度销售额。优点是精确缺点是无法处理模糊语义。实际项目里这三者经常混用。我的常见组合是结构化数据走 SQL 查询非结构化文档走 RAG关键实体关系再抽一层轻量图谱做补充。热搜里ontology rag也是这个思路的延伸——用本体ontology来约束和增强检索让检索结果更符合领域逻辑。注意RAG 知识库能不能存图片能但通常不是直接存图片本身而是存图片的向量表示用多模态模型编码或图片的文字描述。检索时匹配到相关图片再返回图片链接。纯图片检索的效果目前还远不如文本检索稳定别抱太高期待。4. MCP工具调用的标准化尝试4.1 MCP 是什么为什么突然火了MCPModel Context Protocol这个词在热搜里出现频率极高还带着一堆具体场景unreal 5.8 mcpaltium designer ai 接口 mcpida mcp 下载x32dbg 的 mcp 插件。这说明 MCP 已经从概念走向了具体工具的接入。简单说MCP 是一套让 LLM 应用和外部工具/数据源通信的协议标准。在 MCP 之前每个 AI 应用要接一个工具都得自己写适配代码——接数据库写一套接文件系统写一套接某个软件写一套重复劳动且互不兼容。MCP 想做的就是统一这层接口让工具提供方按协议暴露能力AI 应用按协议调用双方解耦。用类比讲MCP 之于 AI 工具有点像 USB 之于外设。以前每个设备一个专用接口现在统一成 USB插上就能用。热搜里mcp 是什么这个问题答案就是这个——它是 AI 与工具之间的通用插头标准。4.2 MCP 的实际接入流程与踩坑点我实际接过几个 MCP 服务流程大致是找到目标工具的 MCP Server可能是官方提供也可能是社区实现→ 在 AI 客户端里配置 Server 地址和启动方式 → 客户端启动时连接 Server拉取可用工具列表 → 模型根据任务选择工具调用。听起来简单但坑不少。热搜里codex 无法找到 mcpcodex 接入 figma mcp 怎么授权使用 mcp 工具流式输出内容到文件 cherrystudio这些全是真实踩坑现场。我总结几个高频问题连接失败多数是 Server 没启动、端口占用、或路径配置错误。排查时先手动跑一遍 Server 启动命令看能不能独立起来。授权问题涉及第三方服务如设计工具、代码平台的 MCP通常需要 OAuth 或 API Key 授权。授权流程走不通时检查回调地址和权限范围是否配置正确。工具列表为空Server 连上了但拉不到工具一般是协议版本不匹配或 Server 实现有 bug换个版本或换实现试试。流式输出异常往文件写流式内容时注意缓冲和编码问题中文内容尤其容易乱码统一用 UTF-8。提示MCP 生态目前还在快速演进不同客户端的兼容性参差不齐。生产环境接入前务必在测试环境把连接-授权-调用-异常全链路跑一遍别等上线才发现某个环节不通。4.3 MCP 与 Agent 的关系别混淆层次有个常见误解是把 MCP 和 Agent 当成同一层的东西。实际上它们解决的是不同问题Agent 决定做什么MCP 解决怎么连工具。一个 Agent 可以完全不使用 MCP自己写工具调用逻辑一个 MCP 服务也可以被非 Agent 的普通 LLM 应用调用。我的实践建议是如果工具数量少且固定自己写调用逻辑更直接如果工具多、需要频繁增删、或者希望复用社区现成的工具实现那 MCP 的价值就体现出来了。热搜里agent skill 教程agent 项目ai agent 搭建这些很多最终都会落到工具怎么接这个问题上MCP 是目前比较省心的答案之一。5. 实操从零搭一个带容错的 RAG Agent5.1 整体架构与组件选型讲了这么多概念落到实操。我以一个企业文档问答 Agent为例把完整链路走一遍。这个 Agent 要能接收用户问题、检索知识库、必要时调用工具、生成带引用的回答、失败时优雅降级。组件选型上我的原则是优先选成熟稳定、社区活跃的方案别在基础设施上造轮子LLM选一个支持工具调用function calling的模型这是 Agent 的基础能力。本地部署还是 API 调用看数据敏感度敏感数据必须本地。向量库中小规模用轻量方案即可规模上来了再考虑分布式向量库。Embedding 模型中文场景务必选中文优化过的直接用英文模型效果会打折扣。编排框架可以用现成框架也可以自己写控制循环。我倾向自己写因为容错逻辑需要深度定制框架的抽象反而碍事。5.2 检索链路的关键参数与调优检索质量直接决定回答质量这块我花的时间最多。几个关键参数Top-K 的选择。K 太小召回不全K 太大噪声多。我的经验值是先用 5 到 10 试然后看召回内容的相关性调整。如果发现正确答案经常排在第 8、第 9 位说明 K 要加大或者检索策略要改。相似度阈值。设一个最低相似度门槛低于阈值的片段直接丢弃避免把不相关内容喂给模型。阈值多少合适没有固定值我一般从 0.7 开始试具体取决于 embedding 模型的分布观察召回质量再调。重排序Rerank。向量检索召回 top-20再用一个重排序模型精排出 top-5这个两步走策略实测能明显提升相关性。重排序模型比 embedding 模型慢但只处理少量候选总体开销可接受。混合检索。纯向量检索对关键词匹配不敏感比如用户搜一个专有名词向量检索可能召回一堆语义相近但不含该词的片段。加一路关键词检索如 BM25两路结果融合能补上这个短板。5.3 容错与降级的具体实现前面讲了容错四层这里给具体的实现思路。输入校验层我会写一个参数校验函数对每个工具调用的参数做类型和范围检查。比如日期参数必须能解析成合法日期ID 参数必须符合格式规范。校验不通过直接返回错误给模型让它重新生成参数。结果校验层对工具返回做合理性判断。空结果、错误码、超长文本可能是把整个数据库 dump 出来了都要拦截。拦截后不是简单报错而是给模型一个明确的信号这次调用没拿到有效结果你可以换个方式试试。重试与降级层设置重试次数上限我一般设 2 次重试时改变策略——换关键词、换工具、或缩小查询范围。两次都失败就降级明确告诉用户这个问题我暂时查不到准确答案而不是硬编一个。循环熔断层用一个步数计数器每轮循环加一超过上限10 到 15 步强制中断。中断时返回当前已获得的最佳结果并说明任务未完全完成。# 简化的 Agent 控制循环骨架突出容错逻辑 MAX_STEPS 12 RETRY_LIMIT 2 def run_agent(query): steps 0 context [] while steps MAX_STEPS: steps 1 action llm_decide_next(query, context) if action.type final_answer: return action.content # 输入校验 if not validate_params(action.tool, action.params): context.append({error: 参数非法请重新生成}) continue # 执行工具带重试 result None for attempt in range(RETRY_LIMIT): result call_tool(action.tool, action.params) if is_valid_result(result): break action.params adjust_params(action.params, attempt) # 结果校验与降级 if not is_valid_result(result): context.append({error: 工具未返回有效结果请换策略}) else: context.append({tool: action.tool, result: result}) # 熔断返回当前最佳 return build_best_effort_answer(query, context)这段代码是骨架实际实现要复杂得多但核心思想就一句把确定性的校验和熔断用代码写死把模糊的决策留给模型。5.4 效果评估与迭代Agent 上线不是终点评估才是。我通常从三个维度看任务完成率用户问题被正确回答的比例。这个要人工标注一批测试集来测。平均步数完成任务平均用了几步。步数突然变多说明某环节出问题了。失败类型分布失败是检索没召回、工具调用错、还是模型推理错分类统计才能定位优化点。热搜里llm as judge是个常用的自动评估手段——用另一个 LLM 来给回答打分。但我要提醒LLM 评委本身也有偏见只能作为辅助关键场景必须人工抽检。我见过 LLM 评委给明显错误的回答打高分的案例完全依赖它会翻车。6. 常见问题与排查速查6.1 Agent 相关高频问题问题现象可能原因排查方向Agent 陷入死循环工具反复失败但模型不换策略检查熔断步数设置检查失败反馈是否清晰工具调用参数错误模型对工具描述理解偏差优化工具描述加参数示例回答与检索内容不符模型忽略检索结果自行编造强化 prompt 约束要求引用来源多轮对话状态丢失上下文管理有 bug检查历史消息拼接逻辑响应延迟高检索或工具调用慢加缓存优化检索 top-k6.2 RAG 相关高频问题检索召回不准先看切块策略是否匹配数据形态再看 embedding 模型是否适合语种最后看是否需要加重排序。这三步排查下来八成问题能定位。回答出现幻觉检查 prompt 是否明确要求只基于检索内容回答以及检索内容是否真的包含答案。如果检索内容里没有答案模型硬编是必然的这时候应该让模型明确说未找到相关信息。知识库更新后检索不到新内容检查索引是否重建或增量更新。很多向量库的增量更新有延迟或者需要手动触发。6.3 MCP 相关高频问题连接类问题先确认 Server 能独立启动再确认客户端配置的地址和启动命令正确。授权类问题检查 API Key 是否过期、权限范围是否覆盖所需操作。工具调用类问题检查工具描述是否清晰、参数 schema 是否和实际匹配。提示MCP 的调试建议开日志把请求和响应都打出来。很多问题看日志一眼就清楚了比盲猜快得多。7. 一些不那么技术但很重要的经验做 AI 应用这几年我最大的体会是技术选型的重要性往往低于对业务场景的理解。见过太多团队一上来就追求最前沿的架构GraphRAG、多 Agent、MCP 全套上齐结果连最基本的用户到底要问什么都没搞清楚最后系统复杂到没人能维护。我的建议是反过来的先用最简单的方式跑通核心场景哪怕就是向量检索 单次 LLM 调用验证了价值再逐步加复杂度。Agent 的容错、GraphRAG 的图结构、MCP 的工具生态这些都是锦上添花的能力前提是锦本身得成立。另一个体会是关于评估。AI 系统的效果很难用传统软件的测试方法衡量因为输出是概率性的。我现在的做法是建一个持续维护的评估集每次改动都跑一遍看指标有没有退化。这个评估集不用很大几十到几百条高质量样本就够但必须覆盖真实场景的典型问题。没有评估集的 AI 项目迭代基本靠感觉迟早出问题。最后说个具体的热搜里llm request failed: provider rejected the request schema or tool payload这类报错我遇到太多次了。多数是工具调用的参数 schema 和模型生成的格式对不上或者请求体超了大小限制。排查时先把完整请求打出来对着 schema 逐字段核对基本都能找到问题。别一看到报错就怀疑模型很多时候是工程细节没对齐。这套东西我还在持续迭代Agent 的容错策略、RAG 的检索链路、MCP 的工具接入每一块都有大量可以深挖的细节。后面有机会再单独拆开讲比如怎么设计一个真正好用的重排序策略或者多 Agent 协作在什么场景下才真的划算。