一键导入
byted-viking-aisearch-database
简化版数据库工具,适用于火山引擎 RDS 实例以及自建数据库的元数据查询、SQL 执行、nl2sql 等场景。当用户需要查询火山引擎 RDS 实例以及自建数据库表结构、查看数据、执行 SQL 或将自然语言转换为 SQL 时使用此 skill。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
简化版数据库工具,适用于火山引擎 RDS 实例以及自建数据库的元数据查询、SQL 执行、nl2sql 等场景。当用户需要查询火山引擎 RDS 实例以及自建数据库表结构、查看数据、执行 SQL 或将自然语言转换为 SQL 时使用此 skill。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
ByteHouse 集群诊断,健康检查,慢查询分析和负载分析的工具
ByteHouse 数据质量检查工具。当用户提供集群连接信息、数据库名和表名,需要检查排序键、主键和分区键所使用的列的空值、零值情况,是否存在异常分布,以及排序键、主键的重复情况时,使用此技能。
通过本地 Python CLI 和 OpenAPI 客户端管理、排查火山云手机资源。适用于查询实例和资源、截图、执行命令、查看任务、检查应用、主机和机房容量、标签、DNS、路由,以及操作已授权的测试云手机实例。
火山云通信智能外呼 Skill. 当用户希望「让 AI 机器人帮忙打电话办事」(如订餐厅、催收、回访、问卷) 时调用. 内部依次走话术查询 → 任务创建 → 任务结果查询.
火山云通信话单 / 录音查询 Skill. 用户问「查一下 callId xxx 的话单」「下载 xxx 的录音」时调用. 注意TOP 接口仅支持按 CallId 精确查询, 不支持按 SingleOpenId/手机号/时间区间反查.
火山云通信「通用配置」Skill (通用层). 仅负责跨业务的号码可呼性 / 风控 / 主叫鉴权类查询 QueryRiskDenyInfo / QueryCanCall / QueryAuth. 注意 所有 TTS 模板操作 (创建/更新/删除/查询) 以及录音文件 / 通用资源管理 (create_voice / query_voice / delete_voice / get_upload_url / submit_upload / list_resource / list_usable / update_resource / delete_resource) 均已迁移到 byted-vms-voice-notify (语音通知) skill, 本 skill 不再提供任何 TTS 或录音/资源入口.
| name | byted-viking-aisearch-database |
| description | 简化版数据库工具,适用于火山引擎 RDS 实例以及自建数据库的元数据查询、SQL 执行、nl2sql 等场景。当用户需要查询火山引擎 RDS 实例以及自建数据库表结构、查看数据、执行 SQL 或将自然语言转换为 SQL 时使用此 skill。 |
| metadata | {"version":"1.0.0","openclaw":{"identity":[{"type":"apikey","provider":"rds_readonly_provider","env":["DATABASE_VIKING_APIG_URL","DATABASE_VIKING_APIG_KEY"],"required":true},{"type":"tip","env":["VE_TIP_TOKEN"],"required":true}]}} |
你是一个专注于数据库查询的智能助手。你的目标是安全、准确、高效地执行数据库查询任务。
list_instances 获取实例列表,再从所有实例中查询数据根据用户意图,匹配相应场景:
| 用户意图 | 匹配场景 | 关键工具 | 产出 |
|---|---|---|---|
| "有哪些表?" "表结构是什么?" "查看字段信息" | 元数据探查 | list_instances, list_databases, list_tables, get_table_info | 表结构信息 |
| "查下最近订单" "统计销售额" "查询某用户信息" | 数据查询 | nl2sql, execute_sql | 查询结果 |
| "把某字段改成xxx" "删除这条数据" | 数据变更 | execute_sql (需用户确认) | 执行结果 |
from scripts.tunnel import DatabaseTunnel
toolbox = DatabaseTunnel()
pip install volcengine
本工具使用 API Gateway (APIG) 进行鉴权认证,需配置以下环境变量:
| 环境变量 | 必填 | 说明 |
|---|---|---|
DATABASE_VIKING_APIG_URL | 是 | API Gateway 服务地址 |
DATABASE_VIKING_APIG_KEY | 是 | API Gateway 鉴权密钥 (API Key) |
AISEARCH_DBW_INSTANCE_INFO_LIST | 是 | 用户可访问实例列表,格式为 base64 编码后的 JSON 数组;未配置时兼容读取 KNOWLEDGE_CENTER_DBW_INSTANCE_LIST |
VOLCENGINE_REGION | 否 | 默认区域,如未提供可在调用时传入 |
VOLCENGINE_INSTANCE_ID | 否 | 默认实例 ID,如未提供可在调用时传入 |
VOLCENGINE_INSTANCE_TYPE | 否 | 默认实例类型,如未提供可在调用时传入 |
VOLCENGINE_DATABASE | 否 | 默认数据库名,如未提供可在调用时传入 |
补充说明:
~/.openclaw/.env 中的同名配置项;如果文件或配置项缺失,会回退读取进程环境变量。~/.openclaw/.env 支持常见 KEY=value 格式,空行和 # 注释会被忽略,带引号的值会自动去除首尾引号。调用工具时需要指定 instance_type 参数,以下是支持的数据库类型:
| instance_type | 说明 | 常见用途 |
|---|---|---|
MySQL | MySQL 数据库 | 通用关系型数据库 |
Postgres / PostgreSQL | PostgreSQL 数据库 | 复杂查询、分析型场景 |
VeDBMySQL | VeDB MySQL 数据库 | 火山引擎 VeDB MySQL |
Mongo | MongoDB 数据库 | 文档型数据库 |
Redis | Redis 数据库 | 缓存、KV 存储 |
MSSQL | Microsoft SQL Server | 企业级 SQL Server |
ByteRDS | 字节 RDS 数据库 | 内部 RDS |
MySQLSharding | MySQL 分片集群 | 分库分表场景 |
External | 自建数据库 | 非云托管的 MySQL/PostgreSQL/Mongo/Redis |
提示: 如果不确定实例类型,可以先询问用户或从DBW控制台查看。
toolbox.list_instances()
返回:
{
"success": true,
"data": {
"total": 2,
"instances": [
{"instance_id": "mysql-xxx", "instance_type": "MySQL", "region": "cn-beijing"},
{"instance_id": "mysql-xxx", "instance_type": "MySQL", "region": "cn-beijing"}
]
}
}
toolbox.list_databases(instance_id="xxx", instance_type="MySQL")
返回:
{
"success": true,
"data": {
"total": 10,
"databases": [{"name": "company", "charset": "utf8mb4"}]
}
}
toolbox.list_tables(instance_id="xxx", instance_type="MySQL", database="company")
返回:
{
"success": true,
"data": {
"total": 50,
"tables": ["users", "orders", "products"]
}
}
toolbox.get_table_info(
instance_id="xxx",
instance_type="MySQL",
database="company",
table="users"
)
返回:
{
"success": true,
"data": {
"name": "users",
"columns": [
{"name": "id", "type": "bigint", "primary_key": true},
{"name": "name", "type": "varchar(100)", "nullable": false}
]
}
}
toolbox.execute_sql(
commands="SELECT * FROM users LIMIT 10",
instance_id="xxx",
instance_type="MySQL",
database="company"
)
返回:
{
"success": true,
"data": {
"columns": ["id", "name", "email"],
"rows": [[1, "张三", "zhangsan@example.com"]],
"row_count": 10
}
}
toolbox.nl2sql(
query="查询最近一周的销售额",
instance_id="xxx",
instance_type="MySQL",
database="company",
tables=["orders"]
)
返回:
{
"success": true,
"data": {
"query": "查询最近一周的销售额",
"sql": "SELECT * FROM orders WHERE created_at >= DATE_SUB(NOW(), INTERVAL 7 DAY)",
"sql_type": "SELECT"
}
}
| 错误情况 | 处理方式 |
|---|---|
缺少 instance_id | 可先调用 list_instances 列出可用数据库实例, 再从所有实例中查询数据 |
缺少 region | 可先调用 list_instances 列出可用数据库实例, 再从所有实例中查询数据 |
缺少 instance_type | 可先调用 list_instances 列出可用数据库实例, 再从所有实例中查询数据 |
缺少 database | 可先调用 list_databases 列出可用数据库,再询问用户 |
缺少 table | 可先调用 list_tables 列出可用表,再询问用户 |
| 错误类型 | 识别方式 | 返回给用户的提示 |
|---|---|---|
| SQL 语法错误 | state: Failed + reason_detail | 显示数据库返回的错误信息 |
| DML 被拦截 | reason_detail 包含 "rule ID" 或 "规则" | "SQL 被安全规则拦截,请通过工单系统执行该操作。" |
| 表不存在 | status: error + "doesn't exist" | "表不存在,请检查表名是否正确。" |
| 参数错误 | status: error + "is required" | 提示参数缺失 |
| 其他 API 错误 | status: error | 通用错误提示 |
| 错误类型 | 识别方式 | 返回给用户的提示 |
|---|---|---|
| API Key 错误 | HTTP 401 / Unauthorized | "API Key 认证失败,请检查 DATABASE_VIKING_APIG_KEY 是否正确。" |
| 权限不足 | HTTP 403 / Forbidden | "权限不足,请检查 API Key 是否有权限访问该资源。" |
| 资源不存在 | HTTP 404 | "资源不存在,请检查 instance_id 是否正确。" |
| 连接错误 | HTTP 409 / CreateSessionError | "无法连接到数据库实例,请检查实例是否正常运行或联系 DBA。" |
| 请求超时 | timeout | "请求超时,请稍后重试。" |
execute_sql 成功返回:
{
"success": true,
"data": {
"command_str": "SELECT * FROM users",
"state": "Success",
"row_count": 10,
"columns": ["id", "name", "email"],
"rows": [[1, "张三", "zhangsan@example.com"]],
"run_time": 1773461474314,
"running_info": {"is_online_ddl": false}
}
}
get_table_info 成功返回:
{
"success": true,
"data": {
"name": "customers",
"engine": "InnoDB",
"charset": "utf8mb4",
"definition": "CREATE TABLE `customers` (...)",
"columns": [
{"name": "customer_id", "type": "varchar(20)", "primary_key": true}
]
}
}
list_tables 返回:
{
"success": true,
"data": {
"total": 14,
"tables": ["customers", "orders", "products"]
}
}