75 lines
2.9 KiB
Markdown
75 lines
2.9 KiB
Markdown
---
|
||
title: "Dynamic ReAct:大规模 MCP 工具选择"
|
||
created: 2026-06-19
|
||
updated: 2026-06-19
|
||
type: paper
|
||
tags: [dynamic-tool-selection, mcp, react-agent, meta-tools, tool-retrieval]
|
||
sources:
|
||
- https://arxiv.org/abs/2509.20386
|
||
---
|
||
|
||
# Dynamic ReAct:大规模 MCP 工具选择
|
||
|
||
> **Nishant Gaurav, Adit Akarsh, Ankit Ranjan, Manoj Bajaj** · 2025 · arXiv:2509.20386
|
||
|
||
## 核心问题
|
||
|
||
MCP 生态增长到数百/数千工具时,ReAct Agent 无法全量加载——上下文有限。需要**按需的动态工具选择**。
|
||
|
||
## 五架构渐进演化
|
||
|
||
| # | 架构 | 核心机制 | 关键问题 |
|
||
|---|------|---------|---------|
|
||
| 1 | Direct Semantic Search | 用户查询→向量库→top-k | 噪声严重,跨域失效 |
|
||
| 2 | Meta-Tool Query Construction | LLM 构造原子搜索查询 | 仍需大 k,精度有限 |
|
||
| 3 | **Search and Load** ★ | search_tools + load_tools | **最优平衡** |
|
||
| 4 | Application-Aware | 先搜 app 再搜 tool | 额外调用收益有限 |
|
||
| 5 | Fixed Tool Set | 固定 meta-tool 动态访问 | 长对话退化 |
|
||
|
||
### ★ Search and Load(生产选择)
|
||
|
||
```
|
||
用户查询 → LLM构造多查询 → search_tools(k1=20, k2=5/每应用)
|
||
→ 去重返回 → LLM精选 → load_tools(< 5个工具) → 执行
|
||
```
|
||
|
||
优势:
|
||
- 多查询合并一次 `search_tools` 调用
|
||
- 去重 + 每应用上限 k2=5 控制候选规模
|
||
- LLM 精选后通常**加载不到 5 个**工具(vs baseline 的 10+)
|
||
- 工具加载减少 **50%**,准确率保持
|
||
|
||
## [[context-enriched-embeddings|上下文增强嵌入]]
|
||
|
||
从 baseline 的 Top-5 40% → 60%(+50% 相对提升):
|
||
|
||
- Sonnet 4 生成增强描述(隐式功能 + 用例)
|
||
- voyage-context-3 嵌入 + Sonnet context
|
||
- BM25 混合提升 recall 但降 precision(关键词误匹配)
|
||
|
||
## [[meta-tools|Meta-Tool 设计]]
|
||
|
||
四个核心 meta-tool:
|
||
- **search_tools**:两级搜索(k1 候选 → 去重 → k2 每应用上限)
|
||
- **load_tools**:LLM 精选后显式加载
|
||
- **search_apps**:先定位应用(可选,收益有限)
|
||
- **get_tool_info / call_tool**:Fixed Tool Set 模式的动态访问
|
||
|
||
## [[default-tools|Default Tools]]
|
||
|
||
**create_table** + **web_search** 始终可用——避免为通用任务浪费搜索(如 LLM 搜索 "financial APIs" 来找财报,有了 web_search 直接搜即可)。
|
||
|
||
## 与 MCP-Zero 的对比
|
||
|
||
| | Dynamic ReAct | [[fei-mcp-zero-2025|MCP-Zero]] |
|
||
|---|---|---|
|
||
| 核心机制 | meta-tool + 语义搜索 | Agent 主动请求 + 层次路由 |
|
||
| 工具加载 | search→load 两阶段 | 请求→路由→注入 |
|
||
| 向量策略 | context-enriched embeddings | OpenAI text-embedding-3-large |
|
||
| 多轮 | ReAct 框架内迭代 | Iterative Capability Extension |
|
||
| 共性 | 都追求"按需而非全量" | 都反对被动注入 |
|
||
|
||
Dynamic ReAct 论文直接引用了 MCP-Zero(ref [2])——两篇构成 MCP 工具选择的互补视角。
|
||
|
||
来源:[原始存档](raw/papers/gaurav-dynamic-react-2025.md)
|