``` --- config: layout: elk --- flowchart TB subgraph Layer1["1. 用户侧"] UI["对话框"] end subgraph Layer2["2. 智能体编排层"] Router["意图识别与分发
(语义路由,小模型判断最好,要快)"] Planner["Agent 规划与调度 (ReAct)"] LLM["大模型 (LLM)"] RAGFlow["现有 RAGFlow
(知识库问答)"] end subgraph Layer3["3. 工具检索引擎 (Tool-RAG) ⭐️核心枢纽"] Embedding["Embedding 模型
(文本转向量)"] VectorDB[("向量数据库
存储插件语义
(按租户隔离)")] RelationalDB@{ label: "关系型数据库
1. 接口物理配置
2. 角色权限表" } SchemaBuilder["Schema 组装器
(仅组装 Top-K 工具)"] end subgraph Layer4["4. 拦截与执行层"] Interceptor["高危操作拦截
(前端卡片审批流)"] HttpExecutor["通用 HTTP 执行器
"] MCPClient["MCP 协议网关
(标准化接入)"] IBS["IBS / CDN / DNS 系统"] MCPServer["MCP Server
"] end UI -- "1. 用户输入" --> Router Router -- "2a. 查阅文档" --> RAGFlow Router -- "2b. 业务请求/查数据" --> Embedding Embedding -- "3. 提取语义向量" --> VectorDB VectorDB -- "4. 返回相似度 Top-3 的插件 ID" --> SchemaBuilder RelationalDB -. "5. 根据 ID 拉取详细配置URL等" .-> SchemaBuilder SchemaBuilder -- "6. 动态注入这 3 个工具说明" --> Planner Planner <-- "7. 带 3 个工具进行交互
提取并完善参数" --> LLM Planner -- "8. 决定调用某工具+参数" --> Interceptor Interceptor -- "9a. 放行/审批后走普通接口" --> HttpExecutor HttpExecutor -- "10a. 动态发起 REST 请求" --> IBS Interceptor -. "9b. 路由至原生 MCP" .-> MCPClient MCPClient -. "10b. MCP 协议通信" .-> MCPServer Register["admin 录入新插件"] -. "A. 存入运行配置" .-> RelationalDB Register -. "B. 向量化插件描述" .-> VectorDB Router@{ shape: rect} RelationalDB@{ shape: cylinder} Register@{ shape: rect} RAGFlow:::highlight Embedding:::vector VectorDB:::vector RelationalDB:::plugin SchemaBuilder:::vector MCPClient:::highlight MCPServer:::external classDef core fill:#e1f5fe,stroke:#01579b,stroke-width:2px classDef plugin fill:#fff3e0,stroke:#e65100,stroke-width:2px classDef vector fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px classDef highlight fill:#fff9c4,stroke:#fbc02d,stroke-width:2px classDef external fill:#f3e5f5,stroke:#8e24aa,stroke-width:1px,stroke-dasharray: 5 5 ```