安全扫描
OpenClaw
安全
high confidence该技能的代码无需安装,包元数据与 PostgreSQL 帮助器一致,要求安装 psql 客户端和提供数据库连接信息,但存在小的元数据不一致和安全/隐私警告,特别是关于凭据提供的方式。
评估建议
该技能如所宣称,提供 Postgres 查询、备份/恢复命令,建议在使用前:1) 验证技能源;2) 避免在长生命周期的 shell 中导出 PGPASSWORD;3) 只在控制的机器上运行 sudo/apt 或 brew;4) 在非生产数据库上测试生成的查询;5) 注意元数据不匹配。若接受这些预防措施,技能与其目的一致。...详细分析 ▾
✓ 用途与能力
名称/描述与内容匹配:SKILL.md 提供 SQL 示例、备份/恢复建议、性能查询、JSON/FTS 指南。package.json 声明了所需的 PostgreSQL 客户端二进制文件(psql、pg_dump、pg_restore)和安装块 — 适用于 Postgres 管理技能。注意:注册表元数据报告没有所需的二进制文件和没有主页,但 package.json 包括安装和主页/仓库;这是元数据中的不一致,但不是功能与技能目的的不匹配。
✓ 指令范围
SKILL.md 集中于数据库任务:安装客户端、配置连接变量、SQL 示例、EXPLAIN 使用、备份。它指示设置环境变量(PGHOST/PGPORT/PGUSER/PGPASSWORD/PGDATABASE)并运行系统安装命令(apt / brew)。它不指示代理读取无关文件或将数据泄露到外部端点。 (小准确性备注:一些 SQL 示例使用 QUALIFY,这不是标准 PostgreSQL 语法 — 正确性问题,而不是安全问题。)
✓ 安装机制
没有捆绑可执行代码,但 package.json 包括一个 openclaw.install 部分,运行标准系统包安装(apt、brew)用于 PostgreSQL 客户端。这些是来自已知包源的标准包管理器命令 — 没有使用任意下载 URL 或存档提取。使用 apt 安装可能需要 sudo;预期系统包安装的用户权限/特权。
ℹ 凭证需求
该技能合理地需要数据库连接信息(PGHOST/PGPORT/PGUSER/PGPASSWORD/PGDATABASE)来运行。然而,注册表元数据没有声明所需的环境变量或主要凭据,而 SKILL.md 明确指示导出 PGPASSWORD 和其他 PG_* 变量。这种不匹配是元数据的省略 — 功能上环境变量是成比例的,但技能要求用户将敏感凭据放在环境变量(PGPASSWORD)中,这有安全含义(在进程列表/Shell 历史中暴露)。
✓ 持久化与权限
该技能仅为指令,不请求持久存在、特殊系统配置路径或 always:true。它包括可选的系统安装命令用于客户端工具,这是正常的且范围有限。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv1.0.02026/3/23
🎉 首发版本! 主要功能:智能查询、高级分析、JSON 操作、全文搜索、性能分析、备份恢复。适合开发者、数据分析师、DBA。
● 无害
安装命令 点击复制
官方npx clawhub@latest install postgres-skill
镜像加速npx clawhub@latest install postgres-skill --registry https://cn.clawhub-mirror.com
技能文档
通过自然语言,轻松管理 PostgreSQL,利用其强大特性!
🎯 功能特点
核心能力
- 🔍 智能查询 - 自然语言描述,自动生成 SQL
- 📊 高级分析 - 窗口函数、CTE、复杂聚合
- 📝 JSON 操作 - JSONB 查询、更新、索引
- 🔎 全文搜索 - PostgreSQL 强大的全文搜索能力
- ⚡ 性能分析 - EXPLAIN ANALYZE、索引优化
- 💾 备份恢复 - pg_dump/pg_restore 完整方案
📋 使用场景
查询场景
- "查询每个部门薪资前三的员工"(窗口函数)
- "找出重复的订单号"(HAVING 子句)
- "统计用户留存率"(复杂分析查询)
JSON 数据场景
- "查询 JSON 字段中特定路径的值"
- "更新 JSONB 数据中的嵌套字段"
- "为 JSON 字段创建 GIN 索引"
全文搜索场景
- "搜索包含特定关键词的文章"
- "按相关度排序搜索结果"
- "中文全文搜索配置"
🔧 前置条件
1. 安装 PostgreSQL 客户端
Ubuntu/Debian:
sudo apt update
sudo apt install postgresql-client
macOS:
brew install libpq
Windows: 下载并安装 PostgreSQL 官方客户端工具
2. 配置数据库连接
使用环境变量:
export PGHOST=localhost
export PGPORT=5432
export PGUSER=your_username
export PGPASSWORD=your_password
export PGDATABASE=your_database
或使用连接字符串:
postgresql://username:password@localhost:5432/database
💻 常用操作
高级查询示例
窗口函数 - 每部门薪资前3的员工
SELECT department, name, salary, RANK() OVER (PARTITION BY department ORDER BY salary DESC) as rank
FROM employees
QUALIFY rank <= 3;
CTE (Common Table Expression)
WITH monthly_sales AS (
SELECT DATE_TRUNC('month', order_date) as month,
SUM(amount) as total
FROM orders
GROUP BY DATE_TRUNC('month', order_date)
)
SELECT month, total,
LAG(total) OVER (ORDER BY month) as prev_month,
ROUND(
(total - LAG(total) OVER (ORDER BY month))::numeric / LAG(total) OVER (ORDER BY month) 100,
2
) as growth_pct
FROM monthly_sales;
JSONB 操作
查询 JSONB 字段
-- 查询 JSON 中的嵌套值
SELECT id,
metadata->>'user_id' as user_id,
metadata->'preferences'->>'theme' as theme
FROM users
WHERE metadata->>'status' = 'active';
更新 JSONB 字段
UPDATE users
SET metadata = jsonb_set(
metadata,
'{preferences,theme}',
'"dark"'
)
WHERE id = 123;
为 JSONB 创建索引
-- GIN 索引支持高效的 JSONB 查询
CREATE INDEX idx_users_metadata_gin ON users USING gin (metadata jsonb_path_ops);
全文搜索
配置中文全文搜索
-- 创建全文搜索索引
CREATE INDEX idx_articles_content_fts ON articles USING gin(to_tsvector('chinese', content));-- 全文搜索
SELECT title,
ts_headline('chinese', content, query) as snippet
FROM articles, to_tsquery('chinese', '人工智能') as query
WHERE to_tsvector('chinese', content) @@ query
ORDER BY ts_rank(to_tsvector('chinese', content), query) DESC;
性能分析
EXPLAIN ANALYZE 查询计划
EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
SELECT FROM orders
WHERE status = 'completed'
ORDER BY created_at DESC
LIMIT 100;
查找缺失的索引
SELECT schemaname, tablename, attname, n_distinct, correlation
FROM pg_stats
WHERE tablename = 'your_table'
ORDER BY n_distinct DESC;
索引使用率分析
SELECT schemaname, tablename, indexname,
idx_scan as index_scans,
idx_tup_read as tuples_read,
idx_tup_fetch as tuples_fetched
FROM pg_stat_user_indexes
WHERE idx_scan < 50 -- 很少使用的索引
ORDER BY idx_scan;
💾 备份恢复
备份
完整备份:
pg_dump -F c -f backup_$(date +%Y%m%d).dump your_database
仅结构备份:
pg_dump -s -f schema_only.sql your_database
仅数据备份:
pg_dump -a -f data_only.sql your_database
单表备份:
pg_dump -t table_name -f table_backup.sql your_database
恢复
恢复完整备份:
pg_restore -d target_database backup_file.dump
列出备份内容:
pg_restore -l backup_file.dump
选择性恢复:
pg_restore -d target_database -t table_name backup_file.dump
🔍 监控与维护
数据库大小查询
SELECT datname as database_name,
pg_size_pretty(pg_database_size(datname)) as size
FROM pg_database
ORDER BY pg_database_size(datname) DESC;
表大小查询
SELECT schemaname, tablename,
pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) as size
FROM pg_tables
WHERE schemaname = 'public'
ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;
活跃连接查询
SELECT pid, usename, application_name, client_addr, state,
query_start, state_change, query
FROM pg_stat_activity
WHERE state != 'idle'
ORDER BY query_start;
⚠️ 注意事项
性能优化建议
- 使用合适的索引 - 为 WHERE、JOIN、ORDER BY 字段创建索引
- 避免 SELECT - 只查询需要的字段
- 使用 EXPLAIN - 复杂查询先分析执行计划
- 定期 VACUUM - 清理死元组,回收空间
- 统计信息更新 -
ANALYZE table更新统计信息
安全建议
- 使用参数化查询 - 防止 SQL 注入
- 最小权限原则 - 使用只读用户进行查询
- 定期备份 - 生产环境必须开启定时备份
- 连接池配置 - 使用 PgBouncer 管理连接
🎓 示例对话
示例 1:复杂分析查询
用户: "查询每个部门员工的薪资排名"
AI: "使用窗口函数查询每个部门的员工薪资排名"
SELECT department, name, salary,
DENSE_RANK() OVER (PARTITION BY department ORDER BY salary DESC) as salary_rank
FROM employees
ORDER BY department, salary_rank;
示例 2:JSONB 查询
用户: "查询用户偏好设置中主题为 dark 的用户"
AI: "查询 JSONB 字段中的嵌套值"
SELECT id, username, metadata->'preferences' as preferences
FROM users
WHERE metadata->>'theme' = 'dark';
示例 3:性能优化
用户: "帮我分析这个查询为什么慢"
AI: "使用 EXPLAIN ANALYZE 分析查询执行计划"
EXPLAIN (ANALYZE, BUFFERS)
SELECT FROM orders o
JOIN users
WHERE o.user_id = users.id
AND o.created_at >= NOW() - INTERVAL '7 days';
📚 参考资料
开始使用: 告诉我你的查询需求,我会利用 PostgreSQL 的强大特性帮你完成!🚀
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制