3.8 KiB
3.8 KiB
OpsxDB 架构(短)
一页总览。专题不在这里展开:AI/MCP 见 15-AI-MCP-Agent.md,会话层见 16-AI-Session-Harness.md。审计/对比文是参考,不是第二套总览。
产品边界
浏览器 → 只看官网 + 文档(Gin)
操作 → 只走桌面 Tauri(./run.sh gui)
- 产品 UI 只认根级
/src。验收、回归、交互口径都以/src为准。 packages/里只有 MCP 的 npm 壳packages/opsxdb-mcp,没有packages/ui产品面,不进验收。src的 Vite(默认:5174)只是桌面devUrl/ 打包源,不是浏览器工作台。- Gin(
server)= 官网 / docs / health / 本机驱动与查询 API。不是远程多人协作后端。 homepage/保持独立,不并进桌面 UI。
模块
| 路径 | 职责 |
|---|---|
/src |
React 桌面 UI:连接、对象树、SQL 工作台、结果、Redis 键面板、AI 侧栏 |
src-tauri/ |
Tauri 2 壳、本机 sidecar、能力配置 |
server/ |
Gin:官网/docs、/health、/api/db/*、AI/MCP 工具运行时 |
connection-types/ |
引擎注册表(ready / verified);未就绪的界面须灰态 |
agents/ |
JDBC / JVM agent 桥(达梦、Mongo、ZooKeeper 等) |
packages/opsxdb-mcp |
外部 Agent 用的 npm 启动壳,不是产品 UI |
引擎分发在 server/internal/db(MySQL 族、Postgres、SQL Server、Oracle、SQLite、Redis、ES、Influx、agent)。注册表与代码现阶段手工对齐,以代码为准。
端口
| 服务 | 默认 | 环境变量 | 说明 |
|---|---|---|---|
| Gin | 8788 | OPSXDB_SERVER_PORT |
官网、文档、本机 API。只绑本机 |
| Vite | 5174 | OPSXDB_WEB_PORT |
仅 ./run.sh gui / 打包。strictPort,代理 /api、/health → 8788 |
关键数据流
./run.sh gui
Tauri 壳 ──加载──▶ /src(开发态 Vite :5174,生产包内嵌)
│
▼
本机 Gin :8788 /api/db/* 、AI
│
├─ 原生驱动 / ES / Influx
└─ agents/ JDBC·JVM 桥
- 开发态
/src经 Vite 把/api转到127.0.0.1:8788;桌面包由 sidecar 注入 API 地址,否则回落http://127.0.0.1:8788。 - 连接保存在桌面本机,并双写
~/.opsxdb/connections.json,供 MCP 读。密码按现有混淆,不是钥匙串。 - Redis:单机键浏览在
/src的RedisKeyPane,执行走server/internal/db/redis.go。Sentinel/Cluster 表单与后端路径在,真拓扑以环境验收为准。危险命令(如 FLUSH*)未带确认则不执行。
MCP 与危险写
工具层在 server/internal/aitools,桌面 Agent 与 opsxdb-mcp(stdio)共用。现状(以代码为准,不是早期「P0 纯只读」规划):
- 连接白名单
~/.opsxdb/mcp.json的allowed_connection_ids为空 = 拒绝全部。 - 缺省无文件时策略默认
mode=read_write且allow_dangerous=true;已有文件缺字段则按只读、且不允许危险 SQL。 - 写路径:
mode=read_write并且用户确认后才执行。confirm_danger/ConfirmDanger不会被模型自动带上(Agent 执行前会剥掉调用方的确认位)。未确认返回needConfirm,不静默写。 - 工作台 SQL 同样:
ExecSQL在ConfirmDanger未置位时,命中危险词表只回确认、不执行。 - Redis:
FLUSH*/KEYS/CONFIG在工具层始终拒绝;其余写命令同样要read_write+ 确认。 - 审计:
~/.opsxdb/logs/mcp-audit.jsonl(不含密码)。
会话状态机、incomplete、续跑见 16-AI-Session-Harness.md。工具清单与历史阶段说明见 15-AI-MCP-Agent.md(文首已标明只读默认是历史规划)。