📦 数据库诊断与优化

v1.0.0

数据库诊断与优化,支持SQL诊断、慢查询分析、索引推荐、性能快照。 使用场景: - 用户说"数据库慢了" -> 执行 slow-queries - 用户说"SQL有问题" -> 执行 sql "<SQL>" - 用户说"推荐索引" -> 执行 recommend-索引es - 用户说"全面检查" -> 执行...

0· 12·0 当前·0 累计
0
安全扫描
VirusTotal
Pending
查看报告
OpenClaw
可疑
medium confidence
技能描述与目标功能一致,但运行说明隐含对本地 dbskiter 二进制和数据库凭据的依赖,却未在元数据中声明——这会导致模糊的权限/凭据访问风险。
评估建议
在安装或启用此技能前: - 确认 dbskiter 二进制来自可信来源并了解如何安装与更新;不要在不知道来源的情况下运行未验证的二进制。 - 询问技能作者/发布者:dbskiter 如何获得数据库凭据(环境变量、配置文件、代理或交互式输入);当心任何会读取 ~/.my.cnf、pgpass、云凭据或其他系统凭据的行为。 - 仅在受控环境或测试库上首先运行,避免直接对生产数据库使用“执行任意 SQL”的功能;为诊断创建只读且最小权限的数据库账号。 - 如果需要生产验证,要求作者补充元数据(声明所需二进制、安装步骤、必需的环境变量/凭据和网络访问范围)并提供源码或二进制签名以便审计。 - 若不能确认上述信息或二进制/凭据来源,视为高风险并避免在敏感环境中启用。
详细分析 ▾
用途与能力
功能(慢查询、SQL 诊断、索引推荐、性能快照、瓶颈分析等)与名称/描述一致。但 技能.md 假定存在一个名为 dbskiter 的 命令行工具 工具并通过 --database 参数与目标数据库交互;元数据未声明该二进制或任何安装要求,存在不一致。
指令范围
运行时指令直接调用 dbskiter 命令行工具 并允许执行任意 SQL(诊断 sql &quot;&lt;SQL&gt;&quot;),说明中没有说明如何提供数据库凭据或配置来源。实际执行时 dbskiter 很可能会访问环境变量、配置文件(例如 ~/.my.cnf、pgpass 或云/代理凭据)或本地网络来连接数据库,技能.md 未限制或说明这些行为,范围太模糊且可能导致凭据读取/传输风险。
安装机制
这是纯说明型技能(无 安装 spec、无代码文件),因此不会自动写盘或下载代码,这通常是低风险。但由于指令依赖 dbskiter 二进制却未声明其为必需或如何安装,使用前需要确认该二进制来自何处并验证其可信度。
凭证需求
元数据声明无需环境变量或凭据,但功能上必然需要访问数据库凭据/网络。此不一致意味着技能隐含地依赖未声明的敏感凭据(可能是环境变量、凭据文件或系统配置),这不成比例且未说明最小权限要求。
持久化与权限
技能未请求 always:true 且默认允许模型调用(平台默认)。没有安装脚本或持久化设置,也未声明修改其它技能或系统范围配置,持久性/特权请求看上去正常。
安全有层次,运行前请审查代码。

运行时依赖

无特殊依赖

安装命令

点击复制
官方npx clawhub@latest install dbskiter-db-diagnose
镜像加速npx clawhub@latest install dbskiter-db-diagnose --registry https://cn.longxiaskill.com

技能文档

数据库诊断 技能 何时使用

当用户提到以下关键词时,使用此技能:

用户说法 执行命令 说明 "数据库慢了" dbskiter --输出-mode=AI --database= 诊断 slow-queries 查看慢查询 "SQL有问题" dbskiter --输出-mode=AI --database= 诊断 sql "" 诊断特定SQL "加什么索引" dbskiter --输出-mode=AI --database= 诊断 recommend-索引es 获取索引建议 "检查一下" dbskiter --输出-mode=AI --database= 诊断 报告 全面诊断报告 "有锁吗" dbskiter --输出-mode=AI --database= 诊断 locks 查看锁情况 "性能分析" dbskiter --输出-mode=AI --database= 诊断 performance-snapshot 采集性能快照 "瓶颈分析" dbskiter --输出-mode=AI --database= 诊断 机器人tleneck 分析性能瓶颈 "CPU高" dbskiter --输出-mode=AI --database= 诊断 performance-snapshot 查看CPU指标 "IO高" dbskiter --输出-mode=AI --database= 诊断 机器人tleneck 查看IO瓶颈 数据库支持 统一性能模型支持 数据库 性能快照 瓶颈分析 慢查询 状态 MySQL 支持 支持 支持 生产就绪 Oracle 支持 支持 支持 生产就绪 PostgreSQL 支持 支持 支持 生产就绪

说明:

MySQL:支持5.7/8.0,自动降级(performance_模式 -> in格式化ion_模式 -> SHOW 状态) Oracle:支持11g/12c/19c/21c,自动降级(AWR -> V$视图 -> 基础统计),支持RAC PostgreSQL:支持10-16,自动降级(pg_stat_状态ments -> pg_stat_activity),支持pg_stat_k缓存扩展 核心命令

  • 查看慢查询
dbskiter --database=<数据库名> 诊断 slow-queries

默认行为:返回最近7天最慢的10个查询

可选参数:

--limit=5:只看前5条 --min-duration=0.5:超过0.5秒的查询

  • 诊断SQL
dbskiter --database=<数据库名> 诊断 sql "SELECT * FROM users WHERE emAIl = 'test@test.com'"

输出:评分、问题列表、优化建议

  • 推荐索引
dbskiter --database=<数据库名> 诊断 recommend-索引es

默认行为:分析所有表,推荐高价值索引

可选参数:

--table=users:只分析指定表

  • 查看锁
dbskiter --database=<数据库名> 诊断 locks

输出:当前锁等待情况

  • 性能快照(新增)
dbskiter --database=<数据库名> 诊断 performance-snapshot

输出:CPU、IO、内存、并发、锁等多维度性能指标

适用场景:

数据库整体性能评估 容量规划前的基线采集 性能问题的全面诊断

输出示例:

{ "summary": "性能快照采集完成", "data": { "snapshot": { "timestamp": "2026-04-24T10:30:00", "指标": [ { "name": "active_会话_ratio", "value": 75.5, "unit": "%", "category": "cpu", "severity": "high" } ], "slow_queries": [...], "active_会话s": 15, "total_会话s": 100 }, "机器人tlenecks": [...] } }

  • 瓶颈分析(新增)
dbskiter --database=<数据库名> 诊断 机器人tleneck

输出:自动识别性能瓶颈并给出优化建议

适用场景:

数据库性能下降时的快速诊断 定位CPU/IO/锁等具体瓶颈

输出示例:

{ "summary": "发现3个性能瓶颈", "data": { "机器人tlenecks": [ { "category": "cpu", "severity": "high", "指标": [...], "suggestion": "检查高CPU消耗的SQL,考虑优化或增加CPU资源" } ], "severity_summary": { "critical": 0, "high": 1, "medium": 2, "low": 0 }, "recommendations": [ "[cpu] 检查高CPU消耗的SQL,考虑优化或增加CPU资源" ] } }

  • 综合报告
dbskiter --database=<数据库名> 诊断 报告

输出:慢查询 + 索引建议 + 锁情况 + 总体评分

AI决策流程 场景1:用户说"数据库慢了" 步骤1:执行 dbskiter --database= 诊断 performance-snapshot 步骤2:查看返回的机器人tlenecks,确定瓶颈类型 步骤3:如果是慢查询导致,执行 dbskiter --database= 诊断 slow-queries 步骤4:根据诊断结果,执行 dbskiter --database= 诊断 recommend-索引es 步骤5:总结给用户:"发现X个性能瓶颈,主要是XX问题,建议..."

场景2:用户说"CPU使用率很高" 步骤1:执行 dbskiter --database= 诊断 performance-snapshot 步骤2:查看指标中category为cpu的指标 步骤3:如果active_会话_ratio高,执行 dbskiter --database= 诊断 slow-queries 步骤4:给出优化建议

场景3:用户说"帮我优化这个SQL" 步骤1:执行 dbskiter --database= 诊断 sql "" 步骤2:如果评分<70,执行 dbskiter --database= 诊断 recommend-索引es 步骤3:给出优化后的SQL和建议

场景4:用户说"做个全面检查" 步骤1:执行 dbskiter --database= 诊断 performance-snapshot(查看当前性能状态) 步骤2:执行 dbskiter --database= 诊断 报告(获取综合报告)

数据来源ClawHub ↗ · 中文优化:龙虾技能库