| 编辑推荐: |
本文以开源项目 AI-Codereview-Gitlab为例,剖析如何使用大模型 、Webhook和可视化Dashboard,实现高效、智能的GitLab自动代码审查,希望对你的学习有帮助。
本文来自于CSDN,由火龙果软件Alice编辑推荐。 |
|
概述
随着大语言模型(LLM )和智能开发工具的兴起,越来越多团队开始寻求代码审查自动化方案。本文以开源项目 AI-Codereview-Gitlab为例,剖析如何使用大模型 、Webhook和可视化Dashboard,实现高效、智能的GitLab自动代码审查。
开源地址
项目简介
本项目是一个基于大模型的自动化代码审查工具,帮助开发团队在代码合并或提交时,快速进行智能化的审查(Code Review),提升代码质量和开发效率。
功能
- 🚀 多模型支持
- 兼容 DeepSeek、ZhipuAI、OpenAI、通义千问 和 Ollama,想用哪个就用哪个。
- 📢 消息即时推送
-
审查结果一键直达 钉钉、企业微信 或 飞书,代码问题无处可藏!
-
📅 自动化日报生成
- 基于 GitLab & GitHub Commit 记录,自动整理每日开发进展,谁在摸鱼、谁在卷,一目了然 😼。
-
📊 可视化 Dashboard
- 集中展示所有 Code Review 记录,项目统计、开发者统计,数据说话,甩锅无门!
-
🎭 Review Style 任你选
- 专业型 🤵:严谨细致,正式专业。
- 讽刺型 😈:毒舌吐槽,专治不服(“这代码是用脚写的吗?”)
- 绅士型 🌸:温柔建议,如沐春风(“或许这里可以再优化一下呢~”)
- 幽默型 🤪:搞笑点评,快乐改码(“这段 if-else 比我的相亲经历还曲折!”)
效果图:

|
原理
当用户在 GitLab 上提交代码(如 Merge Request 或 Push 操作)时,GitLab 将自动触发 webhook
事件,调用本系统的接口。系统随后通过第三方大模型对代码进行审查,并将审查结果直接反馈到对应的 Merge Request 或 Commit 的
Note 中,便于团队查看和处理。
部署
方案一:Docker 部署
1. 准备环境文件
克隆项目仓库:
git clone https://github.com/sunmh207/AI-Codereview-Gitlab.git
cd AI-Codereview-Gitlab
|
创建配置文件:
cp conf/.env.dist conf/.env
|
编辑 conf/.env 文件,配置以下关键参数:
LLM_PROVIDER=deepseek
DEEPSEEK_API_KEY={YOUR_DEEPSEEK_API_KEY}
SUPPORTED_EXTENSIONS=.java,.py,.php,.yml,.vue,.go,.c,.cpp,.h,.js,.css,.md,.sql
DINGTALK_ENABLED=0
DINGTALK_WEBHOOK_URL={YOUR_WDINGTALK_WEBHOOK_URL}
GITLAB_ACCESS_TOKEN={YOUR_GITLAB_ACCESS_TOKEN}
|
2. 启动服务
3. 验证部署
- 主服务验证:
- 访问 http://your-server-ip:5001
- 显示 “The code review server is running.” 说明服务启动成功。
- Dashboard 验证:
- 访问 http://your-server-ip:5002
- 看到一个审查日志页面,说明 Dashboard 启动成功。
方案二:本地Python环境部署
1. 获取源码
git clone https://github.com/sunmh207/AI-Codereview-Gitlab.git
cd AI-Codereview-Gitlab
|
2. 安装依赖
使用 Python 环境(建议使用虚拟环境 venv)安装项目依赖(Python 版本:3.10+):
pip install -r requirements.txt
|
3. 配置环境变量
同 Docker 部署方案中的.env 文件配置。
4. 启动服务
启动API服务:
启动Dashboard服务:
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 能够访问本系统。
- 若内网环境受限,建议将系统部署在外网服务器上。
配置消息推送
配置钉钉推送
在钉钉群中添加一个自定义机器人,获取 Webhook URL。
更新 .env 中的配置:
#钉钉配置
DINGTALK_ENABLED=1 #0不发送钉钉消息,1发送钉钉消息
DINGTALK_WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=xxx #替换为你的Webhook URL
|
企业微信和飞书推送配置类似,具体参见 常见问题
其它
1.如何对整个代码库进行Review?
可以通过命令行工具对整个代码库进行审查。当前功能仍在不断完善中,欢迎试用并反馈宝贵意见!具体操作如下:
运行后,请按照命令行中的提示进行操作即可。
常见问题
Docker 容器部署时,更新 .env 文件后不生效
可能原因
Docker 的文件映射机制是将宿主机的文件复制到容器内,因此宿主机文件的更新不会自动同步到容器内。
解决方案
删除现有容器:
docker rm -f <container_name>
|
重新创建并启动容器:
或参考说明文档启动容器。
GitLab 配置 Webhooks 时提示 “Invalid url given”
可能原因
GitLab 默认禁止 Webhooks 访问本地网络地址。
解决方案
1.进入 GitLab 管理区域:Admin Area → Settings → Network。
2.在 Outbound requests 部分,勾选 Allow requests to the local network from webhooks and integrations。
3.保存。
如何让不同项目的消息发送到不同的群?
解决方案
在项目的 .env 文件中,配置不同项目的群机器人的 Webhook 地址。
以 DingTalk 为例,配置如下:
DINGTALK_ENABLED=1
#项目A的群机器人的Webhook地址
DINGTALK_WEBHOOK_URL_PROJECT_A=https://oapi.dingtalk.com/robot/send?access_token={access_token_of_project_a}
#项目B的群机器人的Webhook地址
DINGTALK_WEBHOOK_URL_PROJECT_B=https://oapi.dingtalk.com/robot/send?access_token={access_token_of_project_b}
#保留默认WEBHOOK_URL,发送日报或者其它项目将使用此URL
DINGTALK_WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token={access_token}
|
飞书和企业微信的配置方式类似。
如何让不同的Gitlab服务器的消息发送到不同的群?
在项目的 .env 文件中,配置不同Gitlab服务器的群机器人的 Webhook 地址。
以 DingTalk 为例,配置如下:
DINGTALK_ENABLED=1
# Gitlab服务器A(http://192.168.30.164)的群机器人的Webhook地址
DINGTALK_WEBHOOK_192_168_30_164=https://oapi.dingtalk.com/robot/send?access_token={access_token_of_gitlab_server_a}
# Gitlab服务器B(http://example.gitlab.com)的群机器人的Webhook地址
DINGTALK_WEBHOOK_example_gitlab_com=https://oapi.dingtalk.com/robot/send?access_token={access_token_of_gitlab_server_b}
|
飞书和企业微信的配置方式类似。
优先级: 优先根据仓库名称匹配webhook地址,其次根据Gitlab服务器地址匹配webhook地址,如果都没有匹配到,则最后使用默认服务器地址
docker 容器部署时,连接Ollama 失败
可能原因
配置127.0.0.1:11434连接Ollama。由于docker容器的网络模式为bridge,容器内的127.0.0.1并不是宿主机的127.0.0.1,所以连接失败。
解决方案
在.env文件中修改OLLAMA_API_BASE_URL为宿主机的IP地址或外网IP地址。同时要配置Ollama服务绑定到宿主机的IP地址(或0.0.0.0)。
OLLAMA_API_BASE_URL=http://127.0.0.1:11434 # 错误
OLLAMA_API_BASE_URL=http://{宿主机/外网IP地址}:11434 # 正确
|
如何使用Redis Queue队列?
操作步骤
1.开发调试模式下,启动容器:
docker compose -f docker-compose.rq.yml up -d
|
2.生产模式下,启动容器:
docker compose -f docker-compose.prod.yml up -d
|
特别说明:
在 .env 文件中配置 WORKER_QUEUE,其值为 GitLab 域名,并将域名中的点(.)替换为下划线(_)。如果域名为 gitlab.test.cn,则配置为:
WORKER_QUEUE=gitlab_test_cn
|
如何配置企业微信和飞书消息推送?
1.配置企业微信推送
在企业微信群中添加一个自定义机器人,获取 Webhook URL。
更新 .env 中的配置:
#企业微信配置
WECOM_ENABLED=1 #0不发送企业微信消息,1发送企业微信消息
WECOM_WEBHOOK_URL=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx #替换为你的Webhook URL
|
2.配置飞书推送
在飞书群中添加一个自定义机器人,获取 Webhook URL。
更新 .env 中的配置:
#飞书配置
FEISHU_ENABLED=1
FEISHU_WEBHOOK_URL=https://open.feishu.cn/open-apis/bot/v2/hook/xxx #替换为你的Webhook URL
|
是否支持对 GitHub 代码库的 Review?
是的,支持。 需完成以下配置:
1.配置Github Webhook
- 进入你的 GitHub 仓库 → Settings → Webhooks → Add webhook。
- Payload URL: http://your-server-ip:5001/review/webhook(替换为你的服务器地址)
- Content type选择application/json
- 在 Which events would you like to trigger this webhook? 中选择 Just the push event(或按需勾选其他事件)
- 点击 Add webhook 完成配置。
2.生成 GitHub Personal Access Token
- 进入 GitHub 个人设置 → Developer settings → Personal access tokens → Generate new token。
- 选择 Fine-grained tokens 或 tokens (classic) 都可以
- 点击 Create new token
- Repository access根据需要选择
- Permissions需要选择Commit statuses、Contents、Discussions、Issues、Metadata和Pull requests
- 点击 Generate token 完成配置。
3.配置.env文件
在.env文件中,配置GITHUB_ACCESS_TOKEN:
GITHUB_ACCESS_TOKEN=your-access-token #替换为你的Access Token
|
同类项目
https://github.com/mimo-x/Code-Review-GPT-Gitlab
结语
AI-Codereview-GitLab项目以开放、易用、多样化为特色,无论你是刚入门还是团队骨干,都能从自动代码审查中收获更高效、更可靠的软件开发体验。欢迎试用、扩展并参与交流,让开发不再重复“人工低效”,开启智能代码治理新纪元!
|