一个开发者写给开发者的工具——让每一条上线的 SQL,都经过一双”会思考”的眼睛。
“DELETE FROM orders;”
没有 WHERE 子句,也没有 LIMIT 限制。凌晨两点,DBA 的手颤抖着盯着屏幕,数据已经清空。这条 SQL 在本地测过、Review 通过、CI 绿灯放行——但没有人注意到那个缺失的 WHERE。
类似的故事每年都在无数团队里上演。工具链里缺了一个关键环节:专门理解 SQL 语义风险的 Review 工具。
这就是 SQLGuard 诞生的原因。
SQLGuard 是一个结合规则引擎与 AI 大模型的 SQL 风险检测工具,提供桌面客户端和 API 服务两种使用方式。
提交一段 SQL,它会告诉你:
不是简单的关键字扫描,而是基于 AST 语法树分析,理解你写的是什么,而不只是你写了什么字符串。
早期版本用正则做 SQL 检测,结果一堆误报——DROP 出现在注释里也被标记,DELETE 有子查询时 WHERE 判断失效。
换用 sqlglot 之后,SQL 被解析成 AST,规则基于语法节点判断,准确率大幅提升。sqlglot 支持 20+ 种方言(MySQL、PostgreSQL、Spark SQL 等),方言差异不再是检测盲点。
FastAPI 处理 HTTP 层,异步架构保证文件批量上传时不阻塞主线程。ZIP 包里几十个 SQL 文件并发分析,结果按文件维度聚合返回。
规则引擎能发现已知模式,但 AI 能发现你没想到的问题——比如某个查询的隐式笛卡尔积,或者特定业务场景下 LIMIT 的必要性。
hybrid 模式:规则先跑,AI 补充分析,结果合并去重
rule 模式:纯规则,快速、可离线
ai 模式:纯 AI,适合复杂业务逻辑审查
AI 层支持 OpenAI 兼容接口(OpenAI、DeepSeek、Qwen 等云端模型)和 Ollama 本地模型,数据不出内网时选 Ollama,完整隐私保障。
不是又一个 Web 平台——是一个你可以装在本地、离线运行的桌面工具。后端地址可配置,团队用 Docker 部署共享后端也好,个人本地跑 Ollama 也好,客户端切换一个地址搞定。
数据库迁移脚本动辄几十个文件,逐个粘贴到工具里不现实。
SQLGuard 支持上传 .zip 压缩包,自动遍历其中所有 .sql/.txt 文件:
__MACOSX/ 等系统垃圾目录发版前把整个迁移脚本目录打包扔进去,一次出完整风险报告。
对于已经在用 GitLab 的团队,SQLGuard 提供了 /gitlab/mr-review 接口,直接接收 MR Diff 内容:
curl -X POST http://127.0.0.1:8000/gitlab/mr-review \
-H "Content-Type: application/json" \
-d '{
"title": "feat: 用户查询优化",
"diff": "+ SELECT * FROM users;\n+ DELETE FROM users;",
"mode": "hybrid",
"dialect": "mysql"
}'
可以挂在 GitLab CI Pipeline 里,在 MR 合并前自动触发 SQL 风险扫描,有问题直接阻断合并。把 SQL Review 变成 CI 门禁,而不是靠人工记得检查。
检测结果支持一键导出 JSON / Markdown 报告,区分简版和详细版。导出前有预览弹窗,预览内支持关键字搜索和高亮,上一处/下一处跳转,方便在发现问题后快速定位上下文。
这份报告可以直接贴进 MR 描述、需求文档或者周报——Review 过程有据可查,而不是”口头说没问题”。
个人开发者:三条命令跑起来
python3 -m venv myenv && source myenv/bin/activate
pip install -r requirements.txt
python backend/main.py
团队共享:Docker Compose 一键启动
cp .env.example .env # 填入你的 Ollama 地址或 API Key
docker compose up -d
生产环境:Nginx 反向代理 + HTTPS + CORS 白名单,README 里有完整配置示例,包括速率限制和 IP 白名单。
SQLGuard 在设计上做了几个关键决定:
ALLOWED_ORIGINS 环境变量控制,默认只允许本地回环地址contextIsolation: true、sandbox: true、nodeIntegration: false,渲染进程无法直接访问 Node.js APISQLGuard 不试图替代人工 Code Review,它做的是消灭那些”本不该出现”的风险——那些在 Reviewer 注意力不集中时、在深夜赶版本时、在例行操作掩盖下溜进去的高危 SQL。
工具已经开源,本地跑 Ollama 完全免费,数据不出网。
如果你的团队有 SQL 变更上线的压力,值得试一试。