Files
opsxdb/server/internal/docs/content/10-ai.md
T
logan 1513f4bc2d feat(mcp): 设置 → MCP 子页 + 策略 API + 官网/文档接入
借鉴 DBX:安装检测(Node/npm/包/Go 二进制)、只读与 allow_dangerous、
连接白名单、多客户端配置片段;GET/PUT /api/ai/mcp-policy、/mcp-install;
文档 /docs/mcp 与落地页 AI/MCP 块;对照 docs/16 勾选设置项、列仍未完清单。
2026-10-15 14:13:20 +08:00

67 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 也不会被自动覆盖。