ai agent rag mcp

接入与开发

给入门者讲清 Agent、RAG、MCP 三者各管什么、怎么串起来跑,以及接入时该先做哪几步。

你大概率遇到过这种局面:想让模型自己查资料再动手干活,结果检索、工具调用、外部服务三件事搅在一起,代码越写越乱。这篇不讲概念定义,只讲三者在一条请求里谁先谁后、各自负责什么,以及按什么顺序接进来最省事;具体参数和接口字段到站内对应页面核对。

你大概率遇到过这种局面:想让模型自己查资料再动手干活,结果检索、工具调用、外部服务三件事搅在一起,代码越写越乱,排查时也说不清是哪一环出的问题。这篇不讲概念定义,只讲这三者在一条请求里谁先谁后、各自负责什么,以及按什么顺序接进来最省事。

先说一个判断:三者不是必须同时用的套装。很多人一上来就三件套全上,结果调不动还找不到原因。正确的思路是先想清楚你缺的是哪一块,缺事实就补检索,缺决策就补 Agent,缺外部服务通路就补 MCP。具体框架选型和参数字段,到站内对应目录页核对当时的资料。

先分清三件事各自管什么

角色负责的事典型失败表现
RAG把私有资料检索出来塞进上下文检索出来的片段跟问题不沾边
Agent决定下一步做什么、什么时候停来回绕圈,任务目标忘了
MCP把外部服务按统一方式暴露给模型每个工具各写一套适配,维护爆炸

一句话对照:检索提供事实依据,Agent 提供决策,MCP 提供手脚。缺哪个补哪个,不要一上来三个一起上。判断方法很简单:如果你的问题是「模型不知道我这份文档里写了什么」,那是缺检索;如果问题是「模型知道该查但还是不动手」,那是缺 Agent;如果问题是「每次接新服务都要重写一遍调用代码」,那才是缺 MCP。

  • 检索解决的是资料不在模型知识范围内的问题,跟会不会调用工具无关
  • Agent 解决的是流程编排问题,它本身不产出事实,只负责决定去取什么
  • MCP 解决的是接入标准化问题,它不改变模型能力,只改变接入成本
  • 三者可以单独用:只用检索能答文档问答,只用 Agent 加工具能跑任务流,单独用 MCP 也能给已有系统换接口

一条请求里它们怎么串起来

  1. 接收提问用户输入先进 Agent 的决策层,由它判断这个任务要不要外部资料、要不要调工具。
  2. 决定是否检索需要资料就走检索,把命中的片段作为上下文附上;不需要就跳过,别硬查。
  3. 组装上下文把检索结果和可用工具清单一并交给模型,让它同时看到依据和可选动作。
  4. 选择并调用工具模型选定工具后,通过统一协议去调用外部服务,拿到返回值。
  5. 判断是否继续拿回结果后判断任务是否完成,没完成再进下一轮,直到满足停止条件。

关键边界要记住:检索结果只是上下文,不是指令;工具返回的内容同样当数据看,别让它悄悄覆盖掉你原本设定的任务目标。这是提示注入最常见的入口。想看清某一步的实现细节,可以到 Agent 框架与 SDK 目录(/stacks/frameworks) 和 向量数据库目录(/stacks/vector-dbs) 对着挑,具体版本对比和接入方式那边有整理。

入门接入的推荐顺序

  • 第一步先跑通检索:资料切好、能稳定检索出相关片段,再谈后面的决策层;资料质量差的话后面全白搭
  • 第二步把工具收窄:只给 Agent 两三个必要工具,跑通再扩,工具越多模型选错的概率越高
  • 第三步再引入 MCP:把已经跑通的那几个工具改造成统一协议服务,避免一开始就做协议改造
  • 每步都留一条退路:某一步失败时能降级成只用检索回答,而不是整条链路一起报错

为什么建议按这个顺序?因为排查成本是递增的。检索出问题,你能直接看命中的片段对不对;Agent 出问题,你要看它每一步的决策;MCP 出问题,你要看协议和权限。越靠后的环节,出错时越难定位,所以先让前面的环节稳定下来。

什么时候不适用这个顺序

如果你已经有成熟的检索系统,只是缺工具调用通路,那直接做 MCP 接入就行,不必回头重跑前两步。反过来,如果你手上根本没有私有资料,全是公开常识类问题,检索这一步可以直接跳过,把精力放在决策逻辑和工具适配上。

踩坑最多的四处

坑怎么提前防
循环停不下来给步数和重试次数设硬上限,命中不到就退出
上下文被撑爆检索片段条数设上限,超了先摘要再拼
工具权限过宽只读的就别给写权限,该限域就别开全网
日志缺失记录命中了什么、调了哪个工具、结果多大

日志这栏最容易被忽略,但它是排查的唯一抓手。至少要把检索命中的片段、每轮选中的工具、返回结果的大小记下来,出问题时才不用靠猜。监控哪几项指标,可以对着 评分规则(/tools/verify#scoring-rules) 想清楚,那边列了常见的观测维度,具体阈值按你业务的数字去 价格与消耗追踪(/price-watch) 核对当时的用量情况。

最后提醒一句:这三件事的边界会随着任务变化。简单文档问答不用决策层,纯工具调用不用检索,别把某一种组合当成唯一正确解。真正的判断标准是看你的失败案例落在哪一环,然后在那一环加东西。

下一步如果你已经跑通检索,想知道工具接入该怎么统一,去站内工具目录看看各类接入方式的对照,再决定要不要上协议层。

常见问题

三个都得上吗,能不能只用其中一个?

不必。只是让模型回答你文档里的内容,RAG 单独用就够;只是让模型代你点几个按钮调接口,Agent 加工具调用就行,MCP 只是让工具接入更省事的可选做法。三个一起上是复杂度成本,只有当任务既需要私有资料、又需要多步决策、还要接多个外部服务时才划算。

MCP 和普通 API 调用有什么区别,非要用 MCP 吗?

普通 API 调用是你自己写适配代码,一个服务一套逻辑;MCP 是把这些适配统一成一种描述方式,客户端换个服务不用重写。如果你只接一两个自家接口,直接写 API 调用更直接;工具数量多、要跨客户端复用时 MCP 才体现价值。具体差别可以对照 MCP 服务器大全(/mcp) 里现成的服务看。

怎么判断是检索的问题还是 Agent 的问题?

把 Agent 摘掉单独测检索:给同一个问题,看检索出来的片段里有没有答案。有答案但最终回答不对,问题在生成或拼装;检索里就没答案,那先回去修分块和召回,别急着调 Agent 的提示词。这条排查顺序能省掉大量瞎改的时间。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。