Skip to content

victorywang80/agent-mysql

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MySQL 优化助手

一个专业的 MySQL 语句优化 Agent 智能助手,能够分析和优化 MySQL 查询语句,提供高效的执行建议和索引优化方案。需要通过 A2A 协议连接使用。

功能特点

  • 智能分析 MySQL 语句结构和性能瓶颈
  • 提供语法和逻辑错误检查
  • 生成优化后的 SQL 语句
  • 推荐索引优化方案
  • 支持与 MySQL 数据库实例连接获取元数据
  • 完整的异常处理和资源管理

项目结构

agent_mysql/
├── .env                  # 环境变量配置
├── .gitignore            # Git 忽略文件
├── .python-version       # Python 版本指定
├── README.md             # 项目说明文档
├── pyproject.toml        # 项目依赖配置
├── src/
│   ├── agent/
│   │   ├── controller.py # 代理控制器
│   │   └── mysql.py      # MySQL 代理实现
│   ├── app/
│   │   ├── __main__.py   # 应用入口
│   │   └── agent_execuor.py # 代理执行器
│   ├── mcps/
│   │   └── mysql.py      # MySQL MCP 服务
│   ├── models/
│   │   └── deepseek.py   # DeepSeek 模型集成
│   └── utils/
│       └── env_decorators.py # 环境变量装饰器
└── uv.lock               # 依赖版本锁定

环境要求

  • Python 3.13+
  • MySQL 5.7+
  • 相关 Python 依赖(见 pyproject.toml)

安装步骤

  1. 克隆项目到本地
git clone <repository-url>
cd agent_mysql
  1. 使用Makefile命令安装依赖
make install
  1. 配置环境变量 复制下列配置创建为 .env 文件并修改相应配置:
# MySQL 连接配置
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=password
MYSQL_DATABASE=test

# DeepSeek 模型配置
DEEPSEEK_MODEL=deepseek-chat
DEEPSEEK_API_KEY=your_api_key
DEEPSEEK_API_BASE_URL=https://api.deepseek.com

# 调式(如果打开会将调用 MCP 工具的过程信息输出到 stdout)
DEBUG=False

使用方法(注意:当前版本暂不支持流式输出)

  1. 启动应用
make run
  1. 应用将在 http://localhost:10011 启动服务

  2. 发送 MySQL 优化请求

# 查询 agent card
$ curl http://localhost:10011/.well-known/agent.json | python -m json.tool
# 发优化请求
$ curl -X POST \
-d '{"id": "msg-1751882717926-7ywuoqc5o","jsonrpc": "2.0","method": "message/send","params": {"configuration": {"acceptedOutputModes": ["text/plain","video/mp4"]},"message": {"contextId": "a4b4f635-730f-4189-b77e-3030412d7dcc","kind": "message","messageId": "ac55ef69-6c02-4d3f-aa55-afe6da6c2f0d","parts": [{"kind": "text","text": "优化 select * from beidou.langs"}],"role": "user"}}}' \
http://localhost:10011

容器化部署

Docker 构建与推送

# 构建镜像
make docker-build

# 推送镜像到仓库(需设置DOCKER_REGISTRY环境变量)
DOCKER_REGISTRY=your-registry make docker-push

Kubernetes 部署

  1. 创建环境变量密钥
kubectl create secret generic agent-mysql-secrets \
--from-literal=mysql-host=your-mysql-host \
--from-literal=mysql-port=3306 \
--from-literal=mysql-user=your-user \
--from-literal=mysql-password=your-password \
--from-literal=mysql-database=your-db \
--from-literal=deepseek-model=deepseek-chat \
--from-literal=deepseek-api-key=your-api-key \
--from-literal=deepseek-api-base-url=https://api.deepseek.com
  1. 部署到Kubernetes
make k8s-deploy
  1. 删除部署
make k8s-delete

主要组件说明

  • AgentExecutor: 代理执行器,处理优化请求的入口(提供 A2A 协议接口)
  • mysql_agent_controller: 核心控制器,协调各组件完成优化流程
  • MySQL MCP Server: 提供 MySQL 元数据查询能力
  • DeepseekModelProvider: 集成 DeepSeek 模型进行智能优化分析

优化流程

  1. 验证输入的 MySQL 语句
  2. 连接 MySQL 数据库获取表结构和索引信息
  3. 分析执行计划和性能瓶颈
  4. 生成优化后的 SQL 语句
  5. 提供索引优化建议
  6. 返回完整的优化报告

注意事项

  • 所有 DDL 操作(如创建索引)需要明确批准
  • 对于系统表查询,仅提供语法优化建议
  • 长查询可能需要较长处理时间,请耐心等待
  • 确保网络连接正常以使用 DeepSeek API

许可证

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published