# AI-Codereview **Repository Path**: microblocks/AI-Codereview ## Basic Information - **Project Name**: AI-Codereview - **Description**: AI-Codereview - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-31 - **Last Updated**: 2025-07-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![Push图片](./doc/img/ai-codereview-cartoon.png) ## 项目简介 本项目是一个基于大模型的自动化代码审查工具。 本项目参考https://github.com/sunmh207/AI-Codereview-Gitlab.git , 在此基础上,增加了mysql数据库,让每一的代码评审记录写入mysql中,方便后续从mysql中提取数据进行报表展示。 ### 本地Python环境部署 **1. 获取源码** ```bash git clone https://gitee.com/microblocks/AI-Codereview.git cd AI-Codereview ``` **2. 安装依赖** 使用 Python 环境(建议使用虚拟环境 venv)安装项目依赖(Python 版本:3.10+): ```bash pip install -r requirements.txt ``` **3. 配置环境变量** 1、修改配置文件 .env 文件配置。 2、安装mysql数据库,按照 doc/dbscript_mysql.sql 创建数据库。 3、修改biz/service/review_service.py中 MySQL 连接配置 **4. 启动服务** - 启动API服务: ```bash python api.py ``` - 启动Dashboard服务: ```bash streamlit run ui.py --server.port=5002 --server.address=0.0.0.0 ``` ### 配置 GitLab Webhook #### 1. 创建Access Token 方法一:在 GitLab 个人设置中,创建一个 Personal Access Token。 方法二:在 GitLab 项目设置中,创建Project Access Token #### 2. 配置 Webhook 在 GitLab 项目设置中,配置 Webhook: - URL:http://your-server-ip:5001/review/webhook - Trigger Events:勾选 Push Events 和 Merge Request Events (不要勾选其它Event) - Secret Token:上面配置的 Access Token(可选) **备注** 1. Token使用优先级 - 系统优先使用 .env 文件中的 GITLAB_ACCESS_TOKEN。 - 如果 .env 文件中没有配置 GITLAB_ACCESS_TOKEN,则使用 Webhook 传递的Secret Token。 2. 网络访问要求 - 请确保 GitLab 能够访问本系统。 - 若内网环境受限,建议将系统部署在外网服务器上。 ### 配置消息推送 #### 1.配置钉钉推送 - 在钉钉群中添加一个自定义机器人,获取 Webhook URL。 - 更新 .env 中的配置: ``` #钉钉配置 DINGTALK_ENABLED=1 #0不发送钉钉消息,1发送钉钉消息 DINGTALK_WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=xxx #替换为你的Webhook URL ``` 企业微信和飞书推送配置类似,具体参见 [常见问题](doc/faq.md) ## 其它 **1.如何对整个代码库进行Review?** 可以通过命令行工具对整个代码库进行审查。当前功能仍在不断完善中,欢迎试用并反馈宝贵意见!具体操作如下: ```bash python -m biz.cmd.review ``` 运行后,请按照命令行中的提示进行操作即可。 **2.其它问题** 参见 [常见问题](doc/faq.md)