Daily Study
更新: 8/12/2025 字数: 0 字 时长: 0 分钟
Daily Plan
#todo
- [ ]
langgraph-mcp
链接:https://github.com/esxr/langgraph-mcp
1. Router 的作用
总体描述
Router(路由器)在这个项目中是核心组件之一,负责将用户请求智能地分发到最合适的 MCP(Model Context Protocol)服务或 Agent。它的主要功能是“根据用户输入内容,选出最适合处理该内容的服务/Agent,并把请求路由到那里”。
技术流程
- 构建 Router:在
build_router_graph.py
中实现。它会从每个 MCP Server 收集工具、资源、提示(prompts)等信息,然后构建一个向量索引(vector index),存储每个服务的能力描述。 - 路由决策:
- 用户输入后,Assistant 首先通过路由器查询当前有哪些 MCP Server 以及每个 Server 能做什么(如有哪些工具、资源、提示)。
- Router 会根据输入内容、上下文,利用检索(Retriever)和 LLM(大模型)结合向量索引进行匹配,查找最相关的 MCP Server 或工具。
- 如果没有合适的 Server,会返回“没有相关 Server”或请求澄清。
- 代码核心:
build_router
异步方法收集所有 Server 的 RoutingDescription,然后存入检索器(retriever)。- 路由的实现细节见
assistant_graph.py
和assistant_graph_with_summarization.py
的route
、generate_routing_query
等函数。
关键点
- Router 不是简单的 if-else 分发,而是“检索+大模型+能力索引”自动化决策,支持多 Agent 动态扩展。
- 支持模糊匹配和澄清询问(如用户问题不明确时)。
2. select-agent(Agent选择)的作用
总体描述
Agent选择是 Router 决策流程的一个子过程,即“在确定了最相关的 MCP Server 后,还要决定用哪个 Agent(或工具)去解决具体问题”。在代码中通常是“路由到 MCP Server 后,再选择要用的 tool(工具)”的逻辑。
技术流程
- Assistant 先通过 Router 选定要调用的 MCP Server。
- 进入 MCP Server 后,通过大模型分析用户输入,进一步选择 Server 中具体的工具(Tool)或资源来完成任务。
- 相关节点(如
route_tools
、refine_tool_call
、mcp_tool_call
)在assistant_graph.py
和assistant_graph_with_summarization.py
中有体现:route_tools
判断当前要不要调用工具,还是直接结束或重新路由。refine_tool_call
对工具调用参数做进一步补全和修正(比如补全参数或澄清)。mcp_tool_call
实际执行工具调用,将结果返回。
关键点
- Agent选择不是静态,而是基于“检索到的能力描述+用户请求+上下文”实时决定。
- 支持链式补充参数、澄清需求、动态切换工具。
- 所有 MCP Server 的工具都被抽象为统一接口,方便扩展和动态选择。
总结对比
组件 | 作用 | 关键技术/流程 |
---|---|---|
Router | 选出最合适的 MCP Server/Agent,智能分发用户请求 | 向量索引+检索+大模型决策 |
select-agent(工具选择) | 在目标Server/Agent中选定具体工具并补全参数 | LLM+工具描述+动态参数补全 |
项目中的设计亮点
- 统一抽象:所有 MCP Server、工具都用统一接口和描述,路由和Agent选择都可以自动化扩展。
- 高可扩展性:新增 Server 或工具只需补充描述,不用改核心流程。
- 智能化:Router 和 Agent选择都用检索+大模型,支持复杂场景和模糊问题。