1
0
mirror of https://github.com/samanhappy/mcphub.git synced 2026-01-11 17:16:55 -05:00

feat: add progressive disclosure feature for smart routing tools to reduce token usage

This commit is contained in:
samanhappy
2026-01-05 11:15:38 +08:00
parent 3de56b30bd
commit 8008b834ef
11 changed files with 947 additions and 274 deletions

View File

@@ -64,17 +64,181 @@ description: '使用向量语义搜索的 AI 工具发现系统'
<Tabs>
<Tab title="HTTP MCP">
```
# 搜索所有服务器
http://localhost:3000/mcp/$smart
# 在特定分组内搜索
http://localhost:3000/mcp/$smart/{group}
```
</Tab>
<Tab title="SSE (Legacy)">
```
# 搜索所有服务器
http://localhost:3000/sse/$smart
# 在特定分组内搜索
http://localhost:3000/sse/$smart/{group}
```
</Tab>
</Tabs>
### 分组范围的智能路由
智能路由支持分组范围的搜索,允许您将工具发现限制在特定分组内的服务器:
<AccordionGroup>
<Accordion title="使用分组范围的智能路由">
将您的 AI 客户端连接到特定分组的智能路由端点:
```
http://localhost:3000/mcp/$smart/production
```
此端点只会搜索属于 "production" 分组的服务器中的工具。
**优势:**
- **聚焦结果**:只返回相关服务器的工具
- **更好的性能**:减少搜索空间以加快查询速度
- **环境隔离**:将开发、预发布和生产工具分开
- **访问控制**:根据用户权限限制工具发现
</Accordion>
<Accordion title="工作原理">
当使用 `$smart/{group}` 时:
1. 系统识别指定的分组
2. 获取属于该分组的所有服务器
3. 将工具搜索过滤到仅限那些服务器
4. 返回限定在该分组服务器范围内的结果
如果分组不存在或没有服务器,搜索将不返回任何结果。
</Accordion>
</AccordionGroup>
### 渐进式披露模式
渐进式披露是一个优化功能,可以减少使用智能路由时的 Token 消耗。启用后,工具发现工作流从 2 步变为 3 步。
<AccordionGroup>
<Accordion title="什么是渐进式披露?">
默认情况下,智能路由在 `search_tools` 结果中返回完整的工具信息,包括完整的参数模式。当处理具有复杂输入模式的工具时,这会消耗大量 Token。
**渐进式披露** 改变了这种行为:
- `search_tools` 只返回工具名称和描述(最少信息)
- 新的 `describe_tool` 端点按需提供完整的参数模式
- `call_tool` 像以前一样执行工具
这种方法特别适用于:
- 处理具有复杂模式的大量工具
- Token 使用优化很重要的场景
- AI 客户端需要浏览多个工具后再选择
</Accordion>
<Accordion title="启用渐进式披露">
通过设置页面或环境变量启用渐进式披露:
**通过设置界面:**
1. 导航到 设置 → 智能路由
2. 启用"渐进式披露"开关
3. 更改立即生效
**通过环境变量:**
```bash
SMART_ROUTING_PROGRESSIVE_DISCLOSURE=true
```
</Accordion>
<Accordion title="标准模式(默认)">
当渐进式披露**禁用**(默认)时,智能路由提供两个工具:
**工作流:** `search_tools` → `call_tool`
| 工具 | 用途 |
|------|------|
| `search_tools` | 按查询查找工具,返回包含 `inputSchema` 的完整工具信息 |
| `call_tool` | 使用提供的参数执行工具 |
这种模式更简单,但由于搜索结果中包含完整模式,会使用更多 Token。
</Accordion>
<Accordion title="渐进式披露模式">
当渐进式披露**启用**时,智能路由提供三个工具:
**工作流:** `search_tools` → `describe_tool` → `call_tool`
| 工具 | 用途 |
|------|------|
| `search_tools` | 按查询查找工具,只返回名称和描述 |
| `describe_tool` | 获取特定工具的完整模式(新增) |
| `call_tool` | 使用提供的参数执行工具 |
**示例工作流:**
1. AI 使用查询 "文件操作" 调用 `search_tools`
2. 结果显示工具名称和描述(最少 Token
3. AI 为特定工具调用 `describe_tool` 获取完整的 `inputSchema`
4. AI 使用正确的参数调用 `call_tool`
这种模式通过仅在需要时获取完整模式来减少 Token 使用。
</Accordion>
<Accordion title="响应格式对比">
**标准模式 search_tools 响应:**
```json
{
"tools": [
{
"name": "read_file",
"description": "读取文件内容",
"inputSchema": {
"type": "object",
"properties": {
"path": { "type": "string", "description": "要读取的文件路径" },
"encoding": { "type": "string", "default": "utf-8" }
},
"required": ["path"]
}
}
]
}
```
**渐进式披露模式 search_tools 响应:**
```json
{
"tools": [
{
"name": "read_file",
"description": "读取文件内容"
}
],
"metadata": {
"progressiveDisclosure": true,
"guideline": "使用 describe_tool 获取完整的参数模式后再调用。"
}
}
```
**describe_tool 响应:**
```json
{
"tool": {
"name": "read_file",
"description": "读取文件内容",
"inputSchema": {
"type": "object",
"properties": {
"path": { "type": "string", "description": "要读取的文件路径" },
"encoding": { "type": "string", "default": "utf-8" }
},
"required": ["path"]
}
}
}
```
</Accordion>
</AccordionGroup>
{/* ## 性能优化
### 嵌入缓存