1773109225

This commit is contained in:
Docker7530
2026-03-10 10:20:27 +08:00
parent c8c039eb85
commit cef89547a6
22 changed files with 364 additions and 308 deletions
-1
View File
@@ -6,7 +6,6 @@
"recent-files-obsidian",
"oz-clear-unused-images",
"obsidian-excalidraw-plugin",
"copy-url-in-preview",
"templater-obsidian",
"obsidian-linter"
]
-6
View File
@@ -1,6 +0,0 @@
{
"middleClickNewTab": false,
"revealInNavigation": true,
"enableDefaultOnCanvas": false,
"pdfMenu": false
}
File diff suppressed because one or more lines are too long
-11
View File
@@ -1,11 +0,0 @@
{
"id": "copy-url-in-preview",
"name": "Image Context Menus",
"version": "1.12.1",
"minAppVersion": "1.12.3",
"description": "Copy to clipboard, Copy URL, Open in default app, Show in system explorer, Reveal file in navigation, Open in new tab, Rename context menus for images.",
"author": "NomarCub",
"authorUrl": "https://github.com/NomarCub",
"fundingUrl": "https://ko-fi.com/nomarcub",
"isDesktopOnly": false
}
+44 -44
View File
@@ -1,5 +1,49 @@
{
"recentFiles": [
{
"basename": "IBS 智能体具体落实技术方案",
"path": "work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md"
},
{
"basename": "ibs-ai 项目梳理",
"path": "work/移动杭研/AI 项目/ibs-ai 项目梳理.md"
},
{
"basename": "图纸-IBS 智能体-v3-项目架构",
"path": "work/移动杭研/AI 项目/图纸-IBS 智能体-v3-项目架构.md"
},
{
"basename": "图纸-IBS 智能体-v2-项目架构 原生 MCP",
"path": "work/移动杭研/AI 项目/图纸-IBS 智能体-v2-项目架构 原生 MCP.md"
},
{
"basename": "图纸-IBS 智能体-v1-流量查询 demo 对象存储",
"path": "work/移动杭研/AI 项目/图纸-IBS 智能体-v1-流量查询 demo 对象存储.md"
},
{
"basename": "图纸-IBS 智能体-v1-流量查询 demo",
"path": "work/移动杭研/AI 项目/图纸-IBS 智能体-v1-流量查询 demo.md"
},
{
"basename": "Prompt 公司智能体",
"path": "resource/ai/prompts/Prompt 公司智能体.md"
},
{
"basename": "20260309173243",
"path": "000-Inbox/20260309173243.md"
},
{
"basename": "20260309150326",
"path": "000-Inbox/20260309150326.md"
},
{
"basename": "如何成为一个 React 工程师呢?",
"path": "resource/前端/如何成为一个 React 工程师呢?.md"
},
{
"basename": "服务器-香港",
"path": "personal/服务器-香港.md"
},
{
"basename": "直播源",
"path": "personal/电影/直播源.md"
@@ -44,18 +88,6 @@
"basename": "ubuntu",
"path": "resource/系统/ubuntu.md"
},
{
"basename": "IBS 智能体-v5",
"path": "work/移动杭研/AI 项目/IBS 智能体-v5.md"
},
{
"basename": "IBS 智能体-v4",
"path": "work/移动杭研/AI 项目/IBS 智能体-v4.md"
},
{
"basename": "IBS 智能体-v3",
"path": "work/移动杭研/AI 项目/IBS 智能体-v3.md"
},
{
"basename": "20260305155494",
"path": "000-Inbox/20260305155494.md"
@@ -64,18 +96,6 @@
"basename": "开发笔记",
"path": "work/移动杭研/开发记录/7.18.0/开发笔记.md"
},
{
"basename": "服务器-香港",
"path": "personal/服务器-香港.md"
},
{
"basename": "IBS 智能体-v1",
"path": "work/移动杭研/AI 项目/IBS 智能体-v1.md"
},
{
"basename": "IBS 智能体-v2",
"path": "work/移动杭研/AI 项目/IBS 智能体-v2.md"
},
{
"basename": "构建 HUGO 博客的完整指南:从搭建到部署",
"path": "resource/系统/构建 HUGO 博客的完整指南:从搭建到部署.md"
@@ -92,10 +112,6 @@
"basename": "vim 快捷键与操作手册",
"path": "resource/系统/vim 快捷键与操作手册.md"
},
{
"basename": "React 工程师",
"path": "resource/前端/React 工程师.md"
},
{
"basename": "VSCode 配置文件",
"path": "resource/配置/VSCode 配置文件.md"
@@ -179,22 +195,6 @@
{
"basename": "结婚相关",
"path": "personal/个人/结婚相关.md"
},
{
"basename": "昌平医院",
"path": "personal/个人/昌平医院.md"
},
{
"basename": "TG 备忘录",
"path": "personal/TG 备忘录.md"
},
{
"basename": "路由器",
"path": "personal/路由器.md"
},
{
"basename": "王欣",
"path": "personal/家人/王欣.md"
}
],
"omittedPaths": [
+39 -33
View File
@@ -4,17 +4,22 @@
"type": "split",
"children": [
{
"id": "6b428b85f883f637",
"id": "4b5820367a78b7bd",
"type": "tabs",
"children": [
{
"id": "5495c7466557ec58",
"id": "4695be4ed62c6a04",
"type": "leaf",
"state": {
"type": "empty",
"state": {},
"type": "markdown",
"state": {
"file": "work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md",
"mode": "source",
"source": false,
"backlinks": false
},
"icon": "lucide-file",
"title": "新标签页"
"title": "IBS 智能体具体落实技术方案"
}
}
]
@@ -50,9 +55,9 @@
"state": {
"type": "search",
"state": {
"query": "file: 常用",
"query": "file:react",
"matchingCase": false,
"explainSearch": false,
"explainSearch": true,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
@@ -92,7 +97,7 @@
}
],
"direction": "horizontal",
"width": 218.5
"width": 507.5
},
"right": {
"id": "ca733f6d5936ae40",
@@ -101,7 +106,7 @@
{
"id": "1f21045435bfa327",
"type": "tabs",
"dimension": 57.88834951456311,
"dimension": 57.8883495145631,
"children": [
{
"id": "43a2e8e1d9201229",
@@ -109,12 +114,13 @@
"state": {
"type": "outline",
"state": {
"file": "work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md",
"followCursor": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "大纲"
"title": "IBS 智能体具体落实技术方案 的大纲"
}
},
{
@@ -196,7 +202,7 @@
{
"id": "ea8a40d57ef90e62",
"type": "tabs",
"dimension": 42.11165048543689,
"dimension": 42.1116504854369,
"children": [
{
"id": "499dbd491c6fb256",
@@ -226,34 +232,34 @@
"obsidian-excalidraw-plugin:New drawing": false
}
},
"active": "c8718c0c63702202",
"active": "4695be4ed62c6a04",
"lastOpenFiles": [
"work/移动杭研/AI 项目/ibs-ai 项目梳理.md",
"work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md",
"work/移动杭研/AI 项目/MCP Prompt.md",
"work/移动杭研/AI 项目/图纸-IBS 智能体-v3-项目架构.md",
"work/移动杭研/AI 项目/图纸-IBS 智能体-v2-项目架构 原生 MCP.md",
"work/移动杭研/AI 项目/图纸-IBS 智能体-v1-流量查询 demo 对象存储.md",
"work/移动杭研/AI 项目/图纸-IBS 智能体-v1-流量查询 demo.md",
"work/移动杭研/AI 项目/IBS 智能体-v4.md",
"work/移动杭研/AI 项目/IBS 智能体-v3-遗弃.md",
"resource/ai/prompts/Prompt 公司智能体.md",
"calendar/diary/2026-03-10.md",
"000-inbox/20260309173243.md",
"000-inbox/20260309150326.md",
"calendar/diary/2026-03-09.md",
"calendar/diary/2026-03-08.md",
"calendar/weeks/2026-W10.md",
"calendar/diary/2026-03-07.md",
"calendar/diary/2026-03-06.md",
"000-inbox/20260307154181.md",
"personal/电影/直播源.md",
"000-inbox/20260307145692.md",
"000-Inbox/20260307145692.md",
"000-Inbox/20260307154181.md",
"000-Inbox/20260307181838.md",
"000-Inbox/20260306180056.md",
"000-inbox/20260306180056.md",
"000-Inbox/20260306180077.md",
"000-inbox/20260306180077.md",
"000-inbox/tg-bot.md",
"000-Inbox/20260306143237.md",
"resource/工具/rime/Rime 快捷键.md",
"resource/组件/Ubuntu 24.04 LTS ELK 8 安装指南.md",
"000-Inbox/20260306145821.md",
"calendar/diary/2026-03-05.md",
"calendar/diary/2026-03-04.md",
"resource/常用命令.md",
"000-inbox/20260306145821.md",
"000-inbox/20260306143237.md",
"work/移动杭研/项目备忘/环境账号.md",
"excalidraw/Drawing 2026-03-06 08.49.09.excalidraw.md",
"excalidraw/Drawing 2026-03-06 08.42.40.excalidraw.md",
"calendar/diary/2026-03-03.md",
"calendar/diary/2026-03-02.md",
"000-Inbox/20260309173243.md",
"000-Inbox/20260309150326.md",
"resource/前端/如何成为一个 React 工程师呢?.md",
"personal/服务器-香港.md",
"resource/工具/rime",
"attachment/images-paste/image-20260304153545122.png",
"work/移动杭研/开发记录/7.19.0",
+9
View File
@@ -0,0 +1,9 @@
# 任务
# 日志
# 总结
上午起来看了一些关于 F1 的资讯,然后我准备把 OpenClaw 弄一下。
中午去王繁星面馆吃面。
+14
View File
@@ -1,7 +1,21 @@
# 任务
- [x] 开发:参加 IBS 项目晨会,同步昨日问题跟进事项。(李春良 0.5)
- [x] 开发:梳理 IBS V7.19.0 需求。(新业务平面引入与系统集成实施 李春良 4)
- [x] 项目:IBS 智能体具体落实技术方案调研。(李春良 3)
# 日志
feat: 初始化 MCP 服务端项目
聊天智能体,用户输入,先进行语义路由,是走知识库进行概念问题解答,还是走 MCP 智能体,可以根据我公司提供的 MCP 服务器进行选择使用,将结果经过 ai 润色后答疑。
# 总结
今天体验了 RAG Flow、Dify、n8n,让我感觉到了自己在智能体方面的能力缺失,如果早体验这个圈子。自己的思维会更上一层。
今天实现了 MCP 的自动注册。
晚上回家田宝在玩儿水。
今天智齿要了命了。这次消肿了一定要去拔了。
+9
View File
@@ -0,0 +1,9 @@
# 任务
- [x] 开发:参加 IBS 项目晨会,同步昨日问题跟进事项。(李春良 0.5)
- [ ] 开发:梳理 IBS V7.19.0 需求。(新业务平面引入与系统集成实施 李春良 4)
- [ ] 项目:IBS 智能体具体落实技术方案调研。(李春良 3)
# 日志
# 总结
+1
View File
@@ -0,0 +1 @@
需求自测、IBS AI 调研、元宵节、日全食、MCP Demo、第一次参与会议 AI 会议、obsidian、AI 开发规范、幼儿园、F1 开赛、OpenClaw、王繁星
-72
View File
@@ -1,72 +0,0 @@
# 关于 Node
| Node.js | Java |
| --------------- | ----------- |
| Node.js version | JDK version |
| V8 Engine | JVM |
| npm | Maven |
| N-API | JNI |
## Node.js 版本
[Node.js — Node.js 版本](https://nodejs.org/zh-cn/about/previous-releases)
# 学习资料
https://u19tul1sz9g.feishu.cn/docx/WEWJdSzF5oTnwvxHGGAc0Vojnxe?from=from_copylink
密码:M6923&65
# 第一章 开发环境与核心概念
UI = f(State)
用户界面仅仅是应用程序状态的一个函数
初始化环境
```
pnpm create vite@latest basic --template react-ts
```
导入方式:
具名导入:
```
import { ... } from 'react'
```
默认导入:
```
import ... from 'react'
```
副作用导入:
```
import './index.css'
```
# CSS
顶级作用域
```
:root {
```
媒体查询
```
@media (prefers-color-scheme: light) {
}
```
ID 选择器
```
#root
```
@@ -0,0 +1,192 @@
# 学习资料
https://u19tul1sz9g.feishu.cn/docx/WEWJdSzF5oTnwvxHGGAc0Vojnxe?from=from_copylink
密码:M6923&65
# 关于 Node 的理解
| Node.js | Java |
| --------------- | ----------- |
| Node.js version | JDK version |
| V8 Engine | JVM |
| Npm | Maven |
| N-API | JNI |
```
┌───────────────┐
│ JS APP │
└───────▲───────┘
┌───────┴───────┐
│ NPM │ ← 包管理 & 生态
└───────▲───────┘
┌───────┴───────┐
│ Node.js │ ← RuntimeAPI / EventLoop / Libuv
└───────▲───────┘
┌───────┴───────┐
│ V8 │ ← JS 引擎
└───────▲───────┘
操作系统
```
## Node.js 版本
[Node.js](https://nodejs.org/zh-cn/about/previous-releases) 采用固定节奏发布 + LTS 生命周期,每 6 个月发布一个,相当于每年会覆盖一个 LTS。
# 第一章 开发环境与核心概念
初始化环境
```bash
pnpm create vite@latest basic2 --template react-ts
```
所谓的优雅公式:`UI = f(State)`,用户界面仅仅是应用程序状态的一个函数。
JSX 不是 HTML 而是 JavaScript 的一种特殊语法。我们编写的每一行 JSX 代码最后都会被转换为一个函数:`React.createElement()`
> 例如:
> `<h1 className="title">Hello React</h1>`
> 对应:
> `React.createElement('h1', { className: 'title' }, 'Hello React')`
可以使用 `{ }` 在 JSX 中嵌入任何 JavaScript 表达式(变量、数学、函数)。
关于声明:
| 关键字 | 作用域 | 重复声明 | 是否可以修改引用 | 推荐场景 |
| ----------- | ---------------- | ---- | -------- | -------------------------- |
| **`const`** | 块级作用域 (Block) | 不允许 | 不允许 | **默认使用**,除非变量需要重新赋值 |
| **`let`** | 块级作用域 (Block) | 不允许 | 允许 | 用于循环变量或需要修改引用的场景 |
| **`var`** | 函数作用域 (Function) | 允许 | 允许 | **严禁使用** (旧时代的产物,存在变量提升问题) |
一个组件的返回必须有一个**单一的根元素**,如果返回并列的多个元素,可以嵌套一个 `<div>`,但更好的做法是使用 `Fragment`,语法糖是 `<>`。因 JSX 最终是会被编译为 JavaScript,所以要注意不要产生关键字的冲突。这也是为什么 `class` 在 React 中要写成 `className`,同时时间名要遵循驼峰命名法,例如 `onClick`
**导入方式**
具名导入:
```
import { ... } from 'react'
```
默认导入:
```
import ... from 'react'
```
副作用导入:
```
import './index.css'
```
React 历史写法:
这里我还是不是很理解 `(prevState) => ({ count: prevState.count + 1 })` 这个的原理,目前的理解是,他可以拿到自己作用域的 count。
```tsx
import React from 'react'
interface CounterState {
count: number
}
class ClassCounter extends React.Component<unknown, CounterState> {
state = { count: 0 }
handleClick = () => {
// this.setState({ count: this.state.count + 1 })
this.setState((prevState) => ({ count: prevState.count + 1 }))
}
render() {
return (
<div>
<h1>Class Counter</h1>
<button onClick={this.handleClick}> {this.state.count}</button>
</div>
)
}
}
export default ClassCounter
```
useState
我理解就是有了一个动态更新值的作用。
```tsx
import { useState } from 'react'
const FunctionalCounter = () => {
const [count, setCount] = useState(0)
const handleClick = () => {
setCount((prevCount) => prevCount + 1)
setCount((prevCount) => prevCount + 1)
}
console.log(count)
return (
<div>
<h1>Functional Counter</h1>
<button onClick={handleClick}>1 {count}</button>
</div>
)
}
export default FunctionalCounter
```
# 第二章 组件化开发核心
Props 通信
```tsx
type Props = {
name: string
}
const PrintNmae = (name: Props) => {
return (
<div>
<h1>Welcome {name.name}</h1>
</div>
)
}
export default PrintNmae
```
传参
```tsx
<PrintNmae name="John" />
```
# CSS
顶级作用域
```
:root {
```
媒体查询
```
@media (prefers-color-scheme: light) {
}
```
ID 选择器
```
#root
```
@@ -1,60 +0,0 @@
```
flowchart TB
subgraph Layer1["1. 用户与接入层 (Access Layer)"]
UI["Web 中台控制台\n(对话界面 / 插件管理)"]
ChatBot["企微/办公 IM 机器人"]
Card["安全审批卡片\n(Human-in-the-loop)"]
end
subgraph Tools["内置核心能力"]
RAG["RAG 问答引擎"]
CodeInterpreter["数据分析引擎\n(分析CDN优质客户)"]
end
subgraph Layer2["2. 智能体编排中台 (基于 Spring Boot & Spring AI)"]
Router["意图路由引擎 (Semantic Router)"]
Planner["Agent 调度与规划 (ReAct)"]
Tools
end
subgraph Layer3["3. 动态插件生态引擎 (Plugin Market) ⭐️核心创新"]
RegistryDB[("插件注册数据库\n(存储接口URL、参数定义)")]
SchemaConverter["动态 Schema 转换器\n(DB配置 -> LLM Function Calling)"]
Interceptor["高危操作拦截器\n(识别写操作、触发审批)"]
HttpExecutor["通用 HTTP 执行器\n(动态发起 REST 请求)"]
MCPClient["MCP 协议网关\n(未来对接标准 MCP Server)"]
end
subgraph Layer4["4. 基础设施与外部业务线 (Infrastructure & Business)"]
LLM["大语言模型 (LLM)"]
RAGFlow["现有 RAGFlow 知识库"]
IBS["IBS 系统\n(流量查验/工单)"]
CDN["CDN 下发系统\n(一键配置)"]
DNS["DNS 管理系统\n(动态查询)"]
end
UI --> Router
ChatBot --> Router
Router -- 知识库查询 --> RAG
Router -- 业务指令/查询 --> Planner
RAG <-- 检索 --> RAGFlow
Planner <-- "1. 交互与思考" --> LLM
RegistryDB -. "2. 实时加载接口配置" .-> SchemaConverter
SchemaConverter -- "3. 转换并注入可用工具" --> Planner
Planner -- "4. 生成调用指令" --> Interceptor
Interceptor -. "5a. 识别为 CDN 下发\n要求人工确认" .-> Card
Card -. 用户点击“确认” .-> Interceptor
Interceptor -- "5b. 鉴权通过放行" --> HttpExecutor
Interceptor -- 放行至新架构 --> MCPClient
HttpExecutor -- "6. 拼装动态 HTTP 请求" --> IBS
HttpExecutor -- HTTP 请求 --> CDN & DNS
MCPClient -. 未来演进: MCP通信协议 .-> DNS
Card:::highlight
IBS:::external
CDN:::external
DNS:::external
classDef core fill:#e1f5fe,stroke:#01579b,stroke-width:2px
classDef plugin fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef external fill:#f1f8e9,stroke:#33681e,stroke-width:1px
classDef highlight fill:#ffebee,stroke:#c62828,stroke-width:2px
style Layer1 fill:#fafafa,stroke:#bdbdbd,stroke-width:1px,stroke-dasharray: 5 5
style Layer2 fill:#fafafa,stroke:#bdbdbd,stroke-width:1px,stroke-dasharray: 5 5
style Layer3 fill:#fafafa,stroke:#ffb74d,stroke-width:2px,stroke-dasharray: 5 5
style Layer4 fill:#fafafa,stroke:#bdbdbd,stroke-width:1px,stroke-dasharray: 5 5
```
@@ -1,44 +0,0 @@
```
flowchart TB
subgraph Layer1["1. 用户侧"]
UI["对话框"]
end
subgraph Layer2["2. 智能体编排层"]
Router@{ label: "意图识别与分发<br><span style=\"background-color:\">语义路由,小模型更好,选择题</span>" }
Planner["Agent 规划与调度 (ReAct)"]
LLM["大模型 (LLM)"]
end
subgraph Layer3["3. 工具检索引擎 (Tool-RAG) ⭐️"]
Embedding["Embedding 模型<br>(文本转向量)"]
VectorDB[("向量数据库<br>(Milvus / pgvector)<br>存储插件语义")]
RelationalDB[("关系型数据库<br>(MySQL)<br>存储接口物理配置")]
SchemaBuilder["Schema 组装器<br>(仅组装 Top-K 工具)"]
end
subgraph Layer4["4. 拦截与执行层"]
Interceptor["高危操作拦截器<br>(审批效果,这个需要和前端沟通方案)"]
HttpExecutor["通用 HTTP 执行器<br>(动态请求第三方组)"]
IBS["IBS / CDN / DNS 系统"]
end
UI -- "1. 输入: 查一下流量" --> Router
Router -- "2. 业务请求" --> Embedding
Embedding -- "3. 提取语义向量" --> VectorDB
VectorDB -- "4. 返回相似度 Top-3 的插件 ID" --> SchemaBuilder
RelationalDB -. "5. 根据 ID 拉取详细配置URL等" .-> SchemaBuilder
SchemaBuilder -- "6. 动态注入这 3 个工具说明" --> Planner
Planner <-- "7. 仅带 3 个工具进行交互<br>提取并完善参数" --> LLM
Planner -- "8. 决定调用某工具+参数" --> Interceptor
Interceptor -- "9. 放行/审批" --> HttpExecutor
HttpExecutor -- "10. 动态发起真实请求" --> IBS
Register["管理员注册新插件"] -. "A. 存入运行配置" .-> RelationalDB
Register -. "B. 向量化插件描述" .-> VectorDB
Router@{ shape: rect}
Embedding:::vector
VectorDB:::vector
RelationalDB:::plugin
SchemaBuilder:::vector
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:#ffebee,stroke:#c62828,stroke-width:2px
```
@@ -17,7 +17,7 @@ RAGFlow v0.18.0 2025-04-23(知识库)
> 完全支持 MCP v0.20.0
> 依赖 MySQL、ES、Redis、MinIO
# 概念
# 概念理解
bge 向量模型。
@@ -61,7 +61,7 @@ Function Calling / Tool Call / Tool Calling
**DB-GPT** 开源的“AI 原生数据应用开发框架”,用大模型来操作数据库和数据系统。
# 问题
# 问题备注
鉴权问题:哪个平台能调用哪些工具,哪个平台的哪些用户能调用哪些工具
@@ -77,8 +77,6 @@ AI 平台颁发系统级别 Token 限制你能用的工具。
我想查询 企业A a.com 近 5 天的峰值。
# 备注
RAGFlow 版本升级至少 v0.20.0。(注意一下是否可以开启自身当作 MCP 服务的功能。)
dify 的整体使用流程流畅很多。
-24
View File
@@ -1,24 +0,0 @@
给我增加两个我们项目的 demo 工具。为我的查询峰值智能体做测试准备
1. 根据企业 ID 获取 企业的所属域名。(入参是企业 ID,响应 10 个域名, a.com, b.com… 固定十个。)但现在企业 ID 只有 企业A ,其他 企业 ID 返回无域名。
2. 根据企业 ID 和 域名 获取域名近 5 天的峰值带宽。(峰值带宽可以随机 mock)如果用户无域名 ID 输入返回需要输入域名。
现在我有一个 ibs-mcp-server
queryDomainPeakBandwidth
根据企业 ID 和域名查询该域名近 5 天的峰值带宽数据(单位:Mbps)
queryEnterpriseDomains
根据企业 ID 查询该企业所属的域名列表
queryWeather
查询指定城市在指定日期的天气预报,返回天气状况、温度、湿度和风力信息
你能给我生成一个可以导入 ragflow 的 json agent 么?让我可以直接使用。
智能体的工作就是可以查训用户的域名,如果用户没有输入域名可以用 queryEnterpriseDomains 给用户提示。
生成到根目录。注意学习相关语法。
@@ -0,0 +1,54 @@
```
---
config:
layout: elk
---
flowchart TB
subgraph Layer1["1. 用户侧"]
UI["对话框"]
end
subgraph Layer2["2. 智能体编排层"]
Router["意图识别与分发<br>(语义路由,小模型判断快)"]
Planner["Agent 规划与调度 (ReAct)"]
LLM["大模型 (LLM)"]
RAGFlow["现有 RAGFlow<br>(知识库问答)"]
end
subgraph Layer3["3. 工具检索引擎 (Tool-RAG) ⭐️核心枢纽"]
Embedding["Embedding 模型<br>(文本转向量)"]
VectorDB[("向量数据库<br>存储插件语义<br>(按租户隔离)")]
RelationalDB@{ label: "关系型数据库<br>1. 接口物理配置<br style=\"--tw-scale-x:\">2. 角色权限表" }
SchemaBuilder["Schema 组装器<br>(仅组装 Top-K 工具)"]
end
subgraph Layer4["4. 拦截与执行层"]
Interceptor["高危操作拦截<br>(前端卡片审批流)"]
HttpExecutor["通用 HTTP 执行器<br>"]
IBS["IBS / CDN / DNS 系统"]
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 个工具进行交互<br>提取并完善参数" --> LLM
Planner -- "8. 决定调用某工具+参数" --> Interceptor
Interceptor -- "9a. 放行/审批后走普通接口" --> HttpExecutor
HttpExecutor -- "10a. 动态发起 REST 请求" --> IBS
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
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
```