AI-Codereview-Gitlab 是一个基于大模型的自动化代码审查工具,旨在帮助开发团队在代码合并或提交时,快速进行智能化的 Code Review,提升代码质量和开发效率。
用途
当用户在 GitLab 上提交代码(如 Merge Request 或 Push 操作)时,GitLab 自动触发 webhook 事件,调用本系统接口。系统通过第三方大模型对代码进行审查,并将审查结果直接反馈到对应的 Merge Request 或 Commit 的 Note 中,便于团队查看和处理。
主要能力
- 多模型支持:兼容 DeepSeek、ZhipuAI、OpenAI、Anthropic、通义千问和 Ollama,可自由选择。
- 消息即时推送:审查结果一键直达钉钉、企业微信或飞书。
- 自动化日报生成:基于 GitLab、GitHub、Gitea Commit 记录,自动整理每日开发进展。
- 可视化 Dashboard:集中展示所有 Code Review 记录,提供项目统计、开发者统计。
- Review Style 可选:提供专业型、讽刺型、绅士型、幽默型四种风格。
- Agentic Review 模式(可选):LLM 拥有工具调用能力(read_file / 沙箱 run_command),可在本地克隆的代码库内自主探索,产出更全面的 review 结果。shell 默认仅允许读类命令(ls / cat / grep / find / git log 等),具备沙箱、路径越界检查、30s 超时三重防护。任意阶段失败(clone / fetch / LLM / 工具调用)自动降级回 diff_only,保证至少返回与原版一致的 review。
使用方式
Docker 部署
配置 conf/.env 文件中的关键参数后,主服务访问 http://your-server-ip:5001 显示 "The code review server is running." 表示启动成功;Dashboard 访问 http://your-server-ip:5002 可看到审查日志页面。
本地 Python 环境部署
使用 Python 环境(建议虚拟环境 venv,Python 版本 3.10+)安装项目依赖,配置文件同 Docker 方案中的 .env。
配置 GitLab Webhook
- 方法一:在 GitLab 个人设置中创建 Personal Access Token。
- 方法二:在 GitLab 项目设置中创建 Project Access Token。 在 GitLab 项目设置中配置 Webhook:
- URL:http://{your-server-ip}:5001/review/webhook
- Trigger Events:勾选 Push Events 和 Merge Request Events(不要勾选其它 Event)
- Secret Token:上面配置的 Access Token(可选)
系统优先使用 .env 文件中的 GITLAB_ACCESS_TOKEN;如果未配置,则使用 Webhook 传递的 Secret Token。需确保 GitLab 能够访问本系统,内网环境受限时建议部署在外网服务器。
消息推送配置
以钉钉为例,在钉钉群中添加自定义机器人获取 Webhook URL,更新 .env 中的配置:
#钉钉配置
DINGTALK_ENABLED=1 #0不发送钉钉消息,1发送钉钉消息
DINGTALK_WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=xxx #替换为你的Webhook URL
企业微信和飞书推送配置类似。
Agentic Review Mode(可选)
通过 REVIEW_STRATEGY 环境变量切换:
diff_only(默认):仅对 diff 做 review,行为与原版完全一致。agentic:LLM 拥有工具调用能力(read_file / 沙箱 shell),可在本地克隆的代码库内自主探索,产出更全面的 review 结果。
agentic 模式会按需在 REPO_CACHE_DIR 下克隆/更新目标项目(约 10MB~2GB/项目)。任意阶段失败(clone / fetch / LLM / 工具调用异常)都会自动降级回 diff_only。额外开销:内存单次 session 峰值约 500MB;Token 单次 review 平均 5k-50k tokens(diff_only 的 3-10 倍);时延 30s~5min/review。shell 工具有沙箱(命令白名单+黑名单+路径越界检查+30s 超时),默认只允许读类命令;如需放开请通过 AGENT_SHELL_ALLOWLIST / AGENT_SHELL_BLOCKLIST 调整。
适用场景
适用于使用 GitLab 进行代码托管、希望引入 AI 辅助 Code Review 的开发团队,尤其适合需要将审查结果推送到钉钉/企业微信/飞书进行协作、并自动生成开发日报的场景。也适合希望自托管部署、对数据有控制需求的团队。
限制
- 依赖第三方大模型,审查效果受所选模型能力影响。
- Agentic 模式增加内存、Token 消耗和时延。
- 内网环境受限时需部署在外网服务器。
- 其他具体限制或收费信息暂未提供。