查询编辑器
OpsKat 为每种数据资产类型都内置了控制台。每种类型使用最契合其数据模型的界面,因此没有一个适用于所有类型的统一编辑器:
| 资产类型 | 控制台 |
|---|---|
| MySQL / PostgreSQL / SQL Server / SQLite | 共享的 Monaco SQL 编辑器(见下文) |
| MongoDB | 专用的 MongoDB 面板 —— 集合浏览器 + mongosh 风格查询编辑器 |
| Redis | 键浏览器 + 命令控制台(无 SQL 编辑器) |
| etcd | 专用的 etcd 面板 —— KV 树浏览器 + 查询栏 |
| Kafka | 专用的 Kafka 面板 —— 基于表单的 Broker/Topic/消费者组/ACL/Schema 界面 |
| 对象存储 | 专用的对象存储浏览器 —— Bucket、前缀、对象、传输与预签名链接 |
数据库连接可以通过 SSH 隧道进行安全访问。
SQL 编辑器
四种 SQL 驱动 —— MySQL、PostgreSQL、SQL Server 和 SQLite —— 共享同一个基于 Monaco 的 SQL 编辑器。
连接
从侧边栏选择数据库资产并打开 查询 标签页。如果数据库资产配置了 SSH 隧道,OpsKat 会先建立 SSH 连接,再通过隧道连接数据库。
左侧的库/表树可用于浏览数据库和表,并直接在数据网格中打开某张表。
编写和执行查询
- 在编辑器中编写 SQL,支持语法高亮和表名自动补全
- 按 Ctrl/Cmd+Enter 执行(选中的文本,若未选中则执行整个编辑器内容)
SELECT、SHOW、DESCRIBE和EXPLAIN语句以行的形式返回结果INSERT、UPDATE和DELETE语句返回受影响的行数- 可以从下拉菜单为特定查询覆盖默认数据库
- 查询历史弹窗保留最近的语句,并可从代码片段库插入 SQL 片段
- 危险语句(如
DELETE、DROP、TRUNCATE、ALTER)在执行前会要求确认
SQL 分析
在 AI 智能体与 opsctl 这条路径上,OpsKat 会先用 TiDB Parser 分析 SQL,再与资产的查询策略比对。这提供了以下能力:
- 语句分类 — 自动识别语句类型(SELECT、INSERT、UPDATE、DELETE、DROP、TRUNCATE 等)
- 危险模式检测 — 标记高风险操作,例如:
- 不带
WHERE子句的DELETE或UPDATE PREPARE语句CALL语句
- 不带
本页的 SQL 编辑器不做这套分析,只对 DELETE、DROP、TRUNCATE、ALTER 弹确认框。
结果网格
查询结果以分页表格形式展示:
- 列标题与查询输出的列名对应
- 每页行数可配置(50 / 100 / 200 / 500 行)
INSERT/UPDATE/DELETE会显示受影响的行数- 结果行可复制为 INSERT / UPDATE 语句或 TSV;导出到文件仅在浏览数据表时可用,临时查询结果不支持
Redis
Redis 资产不使用 SQL 编辑器,而是打开一个键浏览器加命令控制台。
连接
选择 Redis 资产并打开 查询 标签页。与数据库类似,Redis 连接也可以通过 SSH 资产进行隧道连接。
键浏览器
键浏览器提供了可视化界面来浏览 Redis 数据:
- 以树形(按分隔符分组,默认
:)或扁平列表视图浏览键 - 使用 glob 模式过滤键(基于
SCAN,例如user:*) - 从底部选择器切换数据库(db0、db1 …)
- 打开某个键以查看和编辑其值、类型和 TTL —— 针对字符串、哈希、列表、集合、有序集合和流提供专用编辑器
- 创建和删除键,以及编辑或移除 TTL
命令控制台
每个键的详情视图都包含一个命令输入框,用于运行任意 Redis 命令,结果会根据命令返回类型(字符串、整数、列表、哈希、nil)格式化。概览 标签页展示 INFO 的服务器/内存/键空间统计,并可选择自动刷新。
策略执行
策略规则约束的是 AI 智能体和 opsctl 发起的操作:被策略拒绝的操作不会执行,需要确认的会先弹窗。目前 SQL、Redis、MongoDB、etcd、Kafka、Kubernetes 和对象存储都有各自的策略类型。
本页这些桌面端控制台走的是另一条路径 —— 它们由你本人操作,而非智能体代劳,因此不做策略检查。真正起作用的是:
- 确认弹窗 —— SQL 编辑器在执行
DELETE、DROP、TRUNCATE、ALTER前会要求确认;其他控制台对各自的破坏性操作同样会确认 - 只读资产 —— 标记为只读的数据库资产会以只读连接打开,写操作在驱动层就会失败
如果你希望一组语句受到放行/拦截的强制约束,请通过 AI 智能体或 opsctl 执行,而不是用控制台。