同步完整源码至远程:扁平化重构现状 + 未入库源文件

- 补入库:server/internal/db/dump.go、redis 分页/扫描预算测试、opsxdb-mcp main_test、
  packages/opsxdb-mcp package-lock、docs 审计与对比文档等 37 个新文件
- 含结构扁平化进行中的 80 处修改与 155 处旧结构删除(server/ src/ src-tauri/ 为当前有效源)
- 构建产物(bin/target/dist)与签名私钥仍按规则排除
This commit is contained in:
logan committed 2026-10-16 03:47:33 +08:00
1 parent 5c0be49217
commit 2c0bfafd8d
269 files changed
+10372 -16435

No files matched your search

@@ -15,6 +15,12 @@ SQL 工作台是日常使用率最高的界面,所有交互围绕「快」设
## 对象树联动
库节点右键「新建查询」会把该库绑定到新标签。表右键可打开前 N 行(1–10000)、复制限定名、生成 SELECT / INSERT;模板打开在新查询中,不覆盖已有草稿。视图不提供 INSERT 模板。
执行未限定表名的 SQL 时,使用当前查询标签工具条选中的库;各标签独立保存库上下文。MySQL 系列与 SQL Server 执行 `USE 库名` 会先验证目标库,再切换该标签,脚本中的后续语句也使用新库。目标库不存在或无权限时保持原库不变,并停止该批次的后续语句。PostgreSQL 请通过工具条切换数据库;Redis 单机用 DB 选择器或 `SELECT 0`–`SELECT 15`,集群固定 DB0。
编辑器右键支持格式化选区或全文、注释切换、查找替换,以及复制纯文本或带连接摘要的 SQL。连接摘要不含账号密码。点击已加载元数据中的明确表名,可跳转到 DDL;无法唯一识别、别名或未加载对象会禁用跳转。
- 左侧对象树懒加载库 / 表 / 列;
- **点表名 = 查询前 100 行**,自动生成对应 SQL;
- 展开表看列名与类型,写 SQL 时可对照。
@@ -45,3 +51,16 @@ SQL 工作台是日常使用率最高的界面,所有交互围绕「快」设
| ⌘/Ctrl + Enter | 执行当前语句 / 选区 |
| 双击结果单元格 | 复制单元格内容 |
| Esc | 关闭弹层 / 取消确认 |
## 按对象浏览结构
关系库按能力显示「表、视图、存储过程、函数」。展开表可浏览字段,并按需展开索引、外键、触发器;视图可展开字段。元数据分组支持右键刷新,具体对象支持复制名称、定义或详情;失败时可重试,未适配的引擎会明确说明。当前目录查询已接入 MySQL 系列、PostgreSQL 系列和 SQLite。
表右键的「查看结构」打开字段结构页,「查看 DDL」查看定义,「复制建表 / 视图 SQL」直接复制定义。SELECT / INSERT 模板在新查询中打开;清空、删除仍须危险确认。
Redis:SQL 工具条可切换单机的 DB0–DB15,展开左侧 DB 后可在该库内搜索;底部搜索框查询当前库。输入普通关键词自动按 `*关键词*` 包含匹配,完整同名 Key 优先显示;也可输入模式(如 `user:*`)。回车或点击搜索才会请求服务端,最多 20 次 SCAN(COUNT 200、最多返回 500 项),不会使用 KEYS 枚举浏览。SCAN 仍有开销;有限搜索无结果不等于不存在,当前暂不提供续扫。集群只有 DB0,左侧直接显示 Key,隐藏多余的库层级。
Key 树仅在有过期时间时显示 TTL;点开 Key 的底部详情可输入正整数秒保存 TTL,`-1` 设为永久。`0` 秒会立即删除 Key,界面要求使用明确的删除操作。
从 SQL 输入区执行 `GET`、`HGETALL`、`TTL` 等单键读取时也会打开键详情,可在底部查看并修改 TTL。
Redis 集群所有种子及集群公布的节点地址都需要从当前电脑可达。`127.0.0.1:7001 connection refused` 表示本机该端口拒绝连接;检查节点是否启动。若远程集群返回本机地址,应修正服务端 `cluster-announce-ip/port` 与端口映射。
+12 -4
View File
@@ -10,15 +10,23 @@
## 单元格操作
- **双击单元格**:复制该单元格内容;
结果上方可筛选已加载的数据,并显示匹配数;筛选不会向数据库发起查询。先显示 500 行,底部「继续显示」可展开更多已加载记录。服务端仍有更多数据时使用分页或完整查询导出。
NULL、空字符串、空白文本分别展示。右键「查看完整值」可查看和复制长文本或 JSON;只读单元格也可双击查看详情。列头右键可排序、复制列名、适应列宽,双击列边界也可适应内容。选中单元格后可用方向键移动、Ctrl/Cmd+C 复制、Shift+F10 打开菜单。
右键单元格、行号或列头可复制对应单元格、行或列;行列使用不含表头的 TSV,列复制包含本地筛选后的已加载行并遵循当前排序。NULL 显示为 `NULL`,含制表符/换行的字段会加引号。导出当前结果仍包含当前页全部已加载行,不受本地筛选影响。
右键还提供当前行 JSON、当前结果 JSON,以及 CSV / JSON 导出。当前行 INSERT 仅在结果明确来自表预览时启用,任意查询不会猜测目标表。导出当前结果不等于导出整张表。
- **双击单元格**:可写表进入编辑,只读结果打开完整值详情;复制使用右键或 Ctrl/Cmd+C。
- 列头即字段名,长文本自动截断显示,完整内容在复制时保留。
## 截断提示
为保护界面与内存,超大结果集会按阈值截断展示:
结果展示区分已加载记录与数据库中尚未取回的记录:
- 结果面板顶部显示「已截断」提示与实际行数;
- 需要完整数据时,缩小查询范围(加 LIMIT / WHERE)或使用导出。
- 已加载记录分批显示,底部提示已显示数量,可点击「继续显示」。
- 服务端返回更多行提示时,使用分页继续查询;需要完整数据可使用完整查询导出,也可通过 WHERE 缩小查询范围。导出当前结果仅导出已加载的当前页。
> **提示**:默认「点表名看前 100 行」就是截断策略的一部分 —— 快速浏览用 100 行,精确取数写 WHERE。
+2 -2
View File
@@ -15,7 +15,7 @@ SQL 工作台已经有:多 Tab、⌘/Ctrl+Enter、查询历史、书签、危
| 执行 | ⌘/Ctrl+Enter 当前语句或选区 | ⌘/Ctrl+Enter 当前行或选区 |
| 结果 | 结果表 | 命令结果表;从对象树打开键则进入键详情 |
Another Redis Desktop Manager 的独立 CLI Tab、opsxsql 的单行命令 + 输出日志,列为后续 P1,不是现在的主路径。
独立 CLI Tab、单行命令与输出日志可在后续评估,不属于当前主路径。
## 键空间浏览
@@ -28,7 +28,7 @@ Another Redis Desktop Manager 的独立 CLI Tab、opsxsql 的单行命令 + 输
## 键详情
对标 Another Redis Desktop Manager 的 Hash/List/Set 视图:
Hash/List/Set 键详情支持:
- 类型徽章、键名(回车重命名)、TTL(回车或「保存 TTL」,`-1` 永久)、刷新、导出还原命令、删除;
- **结构**表:Hash 为 ID / Field / Value,JSON 值自动美化;可新增字段、编辑、删除;
+11 -11
View File
@@ -1,29 +1,29 @@
AI 面板的目标:让「写不出的 SQL」和「看不懂的 SQL」不再阻塞你。
## 六种动作
## Ask 的操作
| 动作 | 用途 |
| --- | --- |
| 生成 | 自然语言 → SQL(「查最近 7 天下单但未支付的用户」) |
| 自由提问 | 结合当前 SQL 与库结构回答问题 |
| 生成 SQL | 自然语言 → SQL(「查最近 7 天下单但未支付的用户」) |
| 解释 | 把一段复杂 SQL 翻译成中文说明 |
| 优化 | 分析慢查询,给出索引 / 改写建议 |
| 修复 | 报错信息 + SQL → 修正版本 |
| 方言 | MySQL ↔ PostgreSQL 等跨方言转换 |
| 样例 | 按表结构生成示例查询 |
## Ask | Agent
侧栏输入框上方可切换模式:
侧栏输入框下方的下拉框切换模式,默认 Ask:
| 模式 | 行为 |
| --- | --- |
| **Ask** | 只生成/解释/优化 SQL,**不执行**数据库工具 |
| **Agent** | 多轮调用与 MCP 同源工具;步骤时间线边跑边推(SSE);可「插入编辑器」「在结果区打开」 |
| **Ask** | 回答问题或建议 SQL;不执行数据库工具,也不自动改动 SQL 窗口。点击回复里的「复制到 SQL 窗口」后可自行执行 |
| **Agent** | 使用与 MCP 同源的工具查询、分析当前编辑器绑定的连接与库(Redis 为当前 DB);展示步骤与结果,可在结果区打开 |
Agent 支持 openai-chat(DeepSeek 等)、Anthropic messages、OpenAI responses。连接须在 `~/.opsxdb/mcp.json` 白名单内。
Agent 支持 openai-chat(DeepSeek 等)、Anthropic messages、OpenAI responses。当前连接须在 `~/.opsxdb/mcp.json` 白名单内;Agent 的工具调用限定在当前连接/库,外部 MCP 客户端仍按自己的白名单运行。数据库账号本身的跨库权限仍由数据库控制。
默认 **只读**。若将 `mode` 设为 `read_write`,写操作仍须在气泡确认条点「执行」(一次一刀),模型不能自行带确认令牌。
默认 **只读**。若将 `mode` 设为 `read_write`,写操作仍须在气泡确认条核对连接、库、语句后点「执行」(一次一刀);切库后原确认失效,模型不能自行带确认令牌。
## MCP
@@ -45,13 +45,13 @@ npx -y @rlwj-lab/opsxdb-mcp
1. 连接库后打开右侧 AI 面板;
2. 选择动作,输入需求或粘贴 SQL(可附上对象树上下文);
3. 生成结果一键放回编辑器,⌘/Ctrl + Enter 执行。
3. 核对生成结果,点击「复制到 SQL 窗口」,再按 ⌘/Ctrl + Enter 执行。
> **提示**:生成的 SQL 依旧走危险语句确认流程 —— AI 产出与手写 SQL 同等对待,不放宽防护。
## 配置服务
点击桌面右上角的设置按钮,在「AI 助手」中选择服务类型,填写服务地址、模型和 API Key,点击「保存」或「测试」(测试会先保存配置)。也可以从 AI 面板的设置入口配置。
点击桌面右上角「设置」,在「大模型 → AI 供应商」选择服务,填写模型、API 密钥和接口地址,再点击「保存」或「测试连接」(测试会先保存配置)。也可以从 AI 面板的设置入口配置。
支持离线演示和 OpenAI 兼容服务。已保存的 API Key 不回显,留空保存表示保留原密钥。配置加载失败时可重试。
@@ -63,4 +63,4 @@ npx -y @rlwj-lab/opsxdb-mcp
- 可完全关闭 AI 功能;
- 使用云端模型时在界面上明确标识。
AI 自动跟随 SQL 编辑器当前连接与数据库(Redis 显示 DB 编号,集群固定 DB0),输入框上方可核对目标。直接点选生成 SQL、解释、优化、修复或样例后发送;Shift+Enter 换行。切换标签不会把晚到的生成结果写入新标签,等待期间修改过的 SQL 也不会被自动覆盖。
AI 自动跟随 SQL 编辑器当前连接与数据库(Redis 显示 DB 编号,集群固定 DB0),输入框上方可核对目标。Ask 模式下选择自由提问、生成 SQL、解释、优化、修复或样例后发送;Shift+Enter 换行。切换标签时,晚到的建议只留在回复里,不会改写 SQL 窗口。
+1 -1
View File
@@ -48,4 +48,4 @@
npx @rlwj-lab/opsxdb-mcp
```
在 Cursor 的 `mcp.json` 中指向该命令(或本机构建的 `bin/opsxdb-mcp`),并在 `~/.opsxdb/mcp.json` 填写允许的连接 id。默认只读;详见《AI 助手》。
在 Cursor 的 `mcp.json` 中指向该命令(或本机构建的 `bin/opsxdb-mcp`),并在设置 → MCP 勾选允许访问的连接。新配置默认允许读写与危险 SQL,写入须确认;详见《MCP 接入》。
+7 -6
View File
@@ -38,7 +38,7 @@ export OPSXDB_MCP_BIN=/绝对路径/opsxdb/bin/opsxdb-mcp
- 查看 Node / npm / 包版本 / Go 二进制是否就绪
- 复制安装命令与各客户端配置片段
- 配置 **只读模式**、**允许危险 SQL**、**连接白名单**
- 查看读写权限,并勾选允许访问的连接;新配置默认允许读写和危险 SQL
## 配置 AI 客户端
@@ -66,13 +66,14 @@ Claude Code 使用项目根目录 `.mcp.json`(结构相同)。VS Code / Wind
| 项 | 说明 |
| --- | --- |
| 默认只读 | `mode=read_only`:仅 SELECT/SHOW/EXPLAIN 与 Redis 读命令 |
| 可写 | 设置中关闭「只读模式」→ `mode=read_write`;每次写仍须确认 |
| 危险 SQL | 「允许危险 SQL」对应 `allow_dangerous`;DROP/TRUNCATE/ALTER/无 WHERE 更新删除等 |
| 默认读写 | 新配置使用 `mode=read_write`;Agent 每次写入前显示确认弹框 |
| 危险 SQL | 新配置默认 `allow_dangerous=true`,DROP/TRUNCATE/ALTER/无 WHERE 更新删除等仍须确认 |
| 旧配置 | 沿用已保存的权限;设置中选择「使用默认权限」可启用读写与危险 SQL |
| 连接白名单 | `allowed_connection_ids`;**空=拒绝全部** |
| 审计 | `~/.opsxdb/logs/mcp-audit.jsonl`(含 tool、connection_id、run_id) |
外部客户端若在 `read_write` 下自行传 `confirm_danger`,视为操作者授权;桌面侧栏 Agent **不会**让模型静默带确认令牌。
保存白名单或权限后,外部 MCP 进程在下一次工具调用时读取新策略,无需重启桌面或 AI 客户端;策略文件读取失败时该次调用会被拒绝。
## 工具列表
@@ -83,8 +84,8 @@ Claude Code 使用项目根目录 `.mcp.json`(结构相同)。VS Code / Wind
| `opsxdb_list_tables` | 表/视图 |
| `opsxdb_describe_table` | 列定义 |
| `opsxdb_get_schema_context` | 紧凑 schema 文本 |
| `opsxdb_execute_query` | SQL(默认只读,行数上限) |
| `opsxdb_execute_redis_command` | Redis(默认只读;FLUSH*/KEYS 永拒) |
| `opsxdb_execute_query` | SQL(写入需确认,查询有行数上限) |
| `opsxdb_execute_redis_command` | Redis(写入需确认;FLUSH*/KEYS 永拒) |
## 侧栏 Ask | Agent