返回作品
02

QueryDoctor

智能数据库诊断 Agent

// Year

2026.01 – 2026.03

// Role

Full-Stack Developer

// Duration

2 months

QueryDoctor 诊断界面

实时诊断面板 — SSE 流式输出诊断推理过程

// Overview

给数据库看病的 AI 医生。连接你的数据库,它会自动抓取慢查询,分析 EXPLAIN 执行计划,定位性能瓶颈,给出索引优化和 SQL 改写建议。不是一次性诊断——LangGraph 驱动的自迭代机制让它能反复验证自己的优化方案。

// Challenge

挑战

数据库诊断不是简单的文本生成——需要真正连接数据库、执行查询、解读结果。如何让 LLM 在多轮工具调用中保持诊断逻辑的连贯性?如何支持四种完全不同的数据库系统而不让代码爆炸?

// Approach

方案

三层架构:React 前端 → Go (Gin) API 网关 → Python (FastAPI + LangGraph) Agent 引擎。Go 网关负责认证和路由,Python Agent 负责诊断逻辑。通过 Redis Streams 解耦前后端通信,Agent 的每一步推理都通过 SSE 实时推送到前端。LangGraph 的状态图让诊断流程可以自迭代——发现新问题时自动回溯重新分析。

// Tech Stack

技术栈

React 18TypeScriptGo (Gin)FastAPILangGraphRedis StreamsChromaDBMySQLPostgreSQLMongoDBDocker
// Highlights

亮点

  • 01

    LangGraph Agent:状态图驱动的自迭代诊断,支持回溯和多轮工具调用

  • 02

    四库支持:MySQL / PostgreSQL / MongoDB / Redis,统一诊断接口

  • 03

    三层架构:React → Go 网关 → Python Agent,Redis Streams 异步解耦

  • 04

    RAG 经验库:诊断结果向量化入库,积累越多诊断越精准

  • 05

    SSE + WebSocket 双通道,诊断推理过程实时可见

// Result

成果

支持 MySQL、PostgreSQL、MongoDB、Redis 四种数据库的自动化诊断。RAG 知识库积累诊断经验,越用越准。SSE + WebSocket 双通道实时通信,诊断过程完全透明。

// Reflection

反思与收获

LangGraph 的状态图模型非常适合这种需要"思考-行动-观察"循环的场景。最大的教训是 Agent 的错误处理——LLM 生成的 SQL 可能有语法错误,必须在 Agent 层做好 fallback 而不是让整个诊断流程崩溃。Go + Python 的混合架构在这个项目里证明了自己:Go 处理高并发网关,Python 处理 AI 逻辑,各司其职。

在 GitHub 查看
// Gallery
三层架构图

React → Go 网关 → LangGraph Agent,Redis Streams 异步通信

诊断报告

慢查询分析 — EXPLAIN 解读、索引建议、SQL 优化方案