借鉴 DBX:安装检测(Node/npm/包/Go 二进制)、只读与 allow_dangerous、 连接白名单、多客户端配置片段;GET/PUT /api/ai/mcp-policy、/mcp-install; 文档 /docs/mcp 与落地页 AI/MCP 块;对照 docs/16 勾选设置项、列仍未完清单。
67 lines
3.0 KiB
Markdown
67 lines
3.0 KiB
Markdown
AI 面板的目标:让「写不出的 SQL」和「看不懂的 SQL」不再阻塞你。
|
||
|
||
## 六种动作
|
||
|
||
| 动作 | 用途 |
|
||
| --- | --- |
|
||
| 生成 | 自然语言 → SQL(「查最近 7 天下单但未支付的用户」) |
|
||
| 解释 | 把一段复杂 SQL 翻译成中文说明 |
|
||
| 优化 | 分析慢查询,给出索引 / 改写建议 |
|
||
| 修复 | 报错信息 + SQL → 修正版本 |
|
||
| 方言 | MySQL ↔ PostgreSQL 等跨方言转换 |
|
||
| 样例 | 按表结构生成示例查询 |
|
||
|
||
|
||
## Ask | Agent
|
||
|
||
侧栏输入框上方可切换模式:
|
||
|
||
| 模式 | 行为 |
|
||
| --- | --- |
|
||
| **Ask** | 只生成/解释/优化 SQL,**不执行**数据库工具 |
|
||
| **Agent** | 多轮调用与 MCP 同源工具;步骤时间线边跑边推(SSE);可「插入编辑器」「在结果区打开」 |
|
||
|
||
Agent 支持 openai-chat(DeepSeek 等)、Anthropic messages、OpenAI responses。连接须在 `~/.opsxdb/mcp.json` 白名单内。
|
||
|
||
默认 **只读**。若将 `mode` 设为 `read_write`,写操作仍须在气泡确认条点「执行」(一次一刀),模型不能自行带确认令牌。
|
||
|
||
## MCP
|
||
|
||
把同一套工具暴露给 Cursor / Claude / Codex:
|
||
|
||
```bash
|
||
npm install -g @rlwj-lab/opsxdb-mcp@latest
|
||
# 另需 Go 二进制,见 MCP 接入文档
|
||
npx -y @rlwj-lab/opsxdb-mcp
|
||
```
|
||
|
||
在桌面 **设置 → MCP** 可检测安装、切换只读/危险 SQL、勾选连接白名单,并复制 Cursor / Claude Code / VS Code 等配置片段。完整说明见 [MCP 接入](/docs/mcp)。
|
||
|
||
白名单写在 `~/.opsxdb/mcp.json` 的 `allowed_connection_ids`;空白名单拒绝全部连接。审计:`~/.opsxdb/logs/mcp-audit.jsonl`。
|
||
|
||
侧栏标题旁仅在外部 MCP **近期有调用**时显示绿色「MCP」点;悬停/点击可看最近摘要。
|
||
|
||
## 使用方式
|
||
|
||
1. 连接库后打开右侧 AI 面板;
|
||
2. 选择动作,输入需求或粘贴 SQL(可附上对象树上下文);
|
||
3. 生成结果一键放回编辑器,⌘/Ctrl + Enter 执行。
|
||
|
||
> **提示**:生成的 SQL 依旧走危险语句确认流程 —— AI 产出与手写 SQL 同等对待,不放宽防护。
|
||
|
||
## 配置服务
|
||
|
||
点击桌面右上角的设置按钮,在「AI 助手」中选择服务类型,填写服务地址、模型和 API Key,点击「保存」或「测试」(测试会先保存配置)。也可以从 AI 面板的设置入口配置。
|
||
|
||
支持离线演示和 OpenAI 兼容服务。已保存的 API Key 不回显,留空保存表示保留原密钥。配置加载失败时可重试。
|
||
|
||
## 数据流向承诺
|
||
|
||
接入模型服务时遵循三条原则:
|
||
|
||
- 默认只发送你明确提交的内容(不含连接凭据);
|
||
- 可完全关闭 AI 功能;
|
||
- 使用云端模型时在界面上明确标识。
|
||
|
||
AI 自动跟随 SQL 编辑器当前连接与数据库(Redis 显示 DB 编号,集群固定 DB0),输入框上方可核对目标。直接点选生成 SQL、解释、优化、修复或样例后发送;Shift+Enter 换行。切换标签不会把晚到的生成结果写入新标签,等待期间修改过的 SQL 也不会被自动覆盖。
|