SuperAPI AI 工具集

postgres

数据与分析

查看项目

更新于 10-16 02:41

技能介绍

PostgreSQL Read-Only Query Skill 用于对已配置的 PostgreSQL 数据库执行安全、只读的查询。

用途 该技能主要用于:(1) 查询 PostgreSQL 数据库;(2) 探索数据库架构与数据表;(3) 列出库表结构与 schema;(4) 限制查询结果数量等数据库只读探查任务。

主要能力

  • 列出已配置的数据库:python3 scripts/query.py --list
  • 对指定数据库执行查询:python3 scripts/query.py --db production --query "SELECT * FROM users LIMIT 10"
  • 列出数据表:python3 scripts/query.py --db production --tables
  • 查看架构(schema):python3 scripts/query.py --db production --schema
  • 限制结果行数:python3 scripts/query.py --db production --query "SELECT * FROM orders" --limit 100

环境要求

  • Python 3.8+
  • psycopg2-binary:pip install -r requirements.txt

配置方式 在技能目录或 ~/.config/claude/postgres-connections.json 中创建 connections.json。由于文件包含凭据,需设置权限为 600:chmod 600 connections.json

配置示例: { "databases": [ { "name": "production", "description": "Main app database - users, orders, transactions", "host": "db.example.com", "port": 5432, "database": "app_prod", "user": "readonly_user", "password": "your-password", "sslmode": "require" } ] }

配置字段说明

  • name:必填,数据库标识符(不区分大小写)
  • description:必填,说明该数据库包含哪些数据(用于自动选择)
  • host:必填,数据库主机名
  • port:可选,端口号,默认 5432
  • database:必填,数据库名称
  • user:必填,用户名
  • password:必填,密码
  • sslmode:可选,SSL 模式:disable、allow、prefer(默认)、require、verify-ca、verify-full

数据库选择逻辑 根据用户意图匹配数据库 description 中的关键词。例如用户询问 users、accounts 时,匹配 description 中含 users、accounts、customers 的库;询问 orders、sales 时匹配 orders、transactions、sales;询问 analytics、metrics 时匹配 analytics、metrics、reports;询问 logs、events 时匹配 logs、events、audit。若无法判断,则运行 --list 并询问用户选择哪个数据库。

安全特性

  • 只读会话:连接使用 PostgreSQL readonly=True 模式(主要保护)
  • 查询校验:仅允许 SELECT、SHOW、EXPLAIN、WITH 查询
  • 单语句限制:拒绝每次查询包含多条语句
  • SSL 支持:可配置 SSL 模式进行加密连接
  • 查询超时:强制 30 秒语句超时
  • 内存保护:每次查询最多 10000 行,防止 OOM
  • 列宽限制:每列最大 100 字符,保证输出可读
  • 凭据脱敏:错误信息不会泄露密码

故障排查

  • Config not found:在技能目录创建 connections.json
  • Authentication failed:检查配置中的用户名与密码
  • Connection timeout:确认 host/port,检查防火墙或 VPN
  • SSL error:本地数据库可尝试 "sslmode": "disable"
  • Permission warning:运行 chmod 600 connections.json

退出码

  • 0:成功
  • 1:错误(配置缺失、认证失败、无效查询、数据库错误)

工作流程

  1. 运行 --list 展示可用数据库
  2. 将用户意图与数据库 description 匹配
  3. 运行 --tables 或 --schema 探索结构
  4. 使用合适的 LIMIT 执行查询