
AI-Codereview-Gitlab
接入大模型,让 GitLab 代码审查自动跑起来,结果直达钉钉/飞书。
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 1873
使用教程
环境要求
- Docker 与 docker-compose 环境(方案一)
- Python 3.10+(方案二本地部署,建议使用 venv 虚拟环境)
- 已获取大模型 API Key(如 DeepSeek、ZhipuAI、OpenAI、Anthropic、通义千问或 Ollama)
- GitLab 的 Access Token(GITLAB_ACCESS_TOKEN)
- GitLab 服务器能网络访问到本系统,内网受限时建议部署在外网服务器
安装与启动步骤
-
1克隆项目仓库
从 GitHub 拉取源码并进入项目目录,后续所有配置与启动命令都在该目录下执行。
git clone https://github.com/sunmh207/AI-Codereview-Gitlab.git cd AI-Codereview-Gitlab -
2创建配置文件
复制仓库自带的配置模板 conf/.env.dist 为 conf/.env,后续所有参数都改在这个文件里。
cp conf/.env.dist conf/.env -
3填写 .env 参数
编辑 conf/.env,至少填好大模型供应商与 API Key、GitLab Access Token,并按需设置支持审查的文件类型。
-
4启动 Docker 服务
在项目根目录执行 docker-compose,后台启动主服务(5001)与 Dashboard(5002)。
docker-compose up -d -
5验证服务状态
浏览器访问 5001 端口看主服务提示,再访问 5002 端口确认 Dashboard 已正常展示审查日志页面。
-
6配置 GitLab Webhook
进入 GitLab 项目设置的 Webhook,URL 填 http://{your-server-ip}:5001/review/webhook,只勾选 Push Events 和 Merge Request Events。
-
7开启消息推送
在钉钉群添加自定义机器人拿到 Webhook URL,把 .env 中 DINGTALK_ENABLED 改为 1 并填入 URL。
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
LLM_PROVIDER | 是 | 指定大模型供应商,支持 zhipuai、openai、deepseek、ollama 等 | deepseek |
DEEPSEEK_API_KEY | 是 | 所选大模型供应商的 API 密钥,用于调用模型审查代码 | {YOUR_DEEPSEEK_API_KEY} |
GITLAB_ACCESS_TOKEN | 是 | 访问 GitLab 的 Token,用于拉取代码与回写审查意见 | {YOUR_GITLAB_ACCESS_TOKEN} |
SUPPORTED_EXTENSIONS | 否 | 支持审查的文件后缀,未配置的类型不会被审查 | .java,.py,.php,.yml,.vue,.go,.c,.cpp,.h,.js,.css,.md,.sql |
DINGTALK_ENABLED | 否 | 是否发送钉钉消息,0 不发送,1 发送 | 0 |
DINGTALK_WEBHOOK_URL | 否 | 钉钉自定义机器人的 Webhook 地址,开启推送时必填 | https://oapi.dingtalk.com/robot/send?access_token=xxx |
如何确认成功
访问 http://your-server-ip:5001 显示 "The code review server is running." 即主服务正常;访问 http://your-server-ip:5002 能看到审查日志页面即 Da
常见问题
Q:GITLAB_ACCESS_TOKEN 和 Webhook 里的 Secret Token 用哪个?
A:系统优先使用 .env 中的 GITLAB_ACCESS_TOKEN;若 .env 未配置该值,才会使用 Webhook 传递的 Secret Token。
Q:GitLab 上配置 Webhook 后没有触发审查怎么办?
A:确认 Trigger Events 只勾选了 Push Events 和 Merge Request Events,并确保 GitLab 能访问到本系统地址。
Q:可以换用其他大模型吗?
A:可以。兼容 DeepSeek、ZhipuAI、OpenAI、Anthropic、通义千问和 Ollama,修改 .env 中的 LLM_PROVIDER 并填对应 API Key 即可。
Q:企业微信和飞书推送怎么配?
A:配置方式与钉钉类似,具体参数与步骤参见项目 doc/faq.md 中的常见问题说明。
Q:只审查指定类型的文件怎么设置?
A:在 .env 中配置 SUPPORTED_EXTENSIONS,列出需要审查的后缀名,未列出的文件类型不会被审查。
注意事项
- Webhook 的 Trigger Events 只能勾选 Push Events 和 Merge Request Events,不要勾选其它 Event。
- 内网环境受限时,建议把本系统部署在外网服务器上,确保 GitLab 能访问到它。
- 改 .env 后需要重启服务才会生效;Docker 方案可再次执行 docker-compose up -d。
- 不使用 Docker 时可在 Python 3.10+ 环境下执行 pip install -r requirements.txt,再运行 python api.py 与 streamlit run ui.py --server.port=5002 --server.address=0.0.0.0。
核心亮点
- 支持 DeepSeek、OpenAI 等多种大模型,灵活切换,成本可控
- 审查结果自动推送钉钉/企业微信/飞书,无需频繁查看 GitLab
- 提供可视化 Dashboard,审查数据一目了然,便于团队复盘
不足之处
- 依赖外部大模型 API,存在数据隐私和网络延迟风险
- 文档/社区待观察,项目处于成长阶段,生态尚不完善
适用场景
- 研发团队日常代码审查,提升审查效率和覆盖率
- 跨时区协作团队,通过消息推送异步同步审查结果
- 需要定期汇报代码质量的管理场景,自动生成日报
替代项目
CodeRabbit、GitLab Code Quality、SonarQube
同类项目推荐
repomix
开源
整库代码装进一个文件,AI 一口气全看懂
Repomix is a powerful tool that packs your entire repository into a single, AI-frien···
gsd-for-cursor
开源
在 Cursor 里快速管任务,用命令行搞定待办,减少分心。
Cursor IDE adaptation of glittercowboy/get-shit-done
aspens
开源
让 AI 编程助手在大型项目里不迷路,自动拆解指令文件并随代码更新。
Your CLAUDE.md stopped working at 200 lines. Generate scoped skill files from your i···
reference
开源
快速查语法,告别翻文档
⭕ Share quick reference cheat sheet for developers.
0pdd
开源
把代码里的待办注释自动变成 GitHub Issue 并跟踪
Puzzle Driven Development (PDD) Chatbot Assistant for Your GitHub Repositories
echook
开源
给 AI 编程助手装上声音,任务完成/出错/限流秒知道
【Every star you give feeds a hungry developer's motivation!⭐️】 echook — AI-ope···
kota
开源
用 Rust 打造的轻量 AI 编码代理,插件化扩展你的开发流程。
A lightweight, hackable agent harness written in Rust.
opensrc
开源
让 AI 看透第三方库源码,改依赖不再瞎猜。
Fetch source code for npm packages to give AI coding agents deeper context
awesome-cli-coding-agents
开源
一页看全终端 AI 编程代理,快速选型不迷路
Curated directory of terminal-native AI coding agents and the harnesses that orchest···