{"id":26921445,"url":"https://github.com/sunmh207/ai-codereview-gitlab","last_synced_at":"2025-04-09T05:11:05.046Z","repository":{"id":262803080,"uuid":"888350460","full_name":"sunmh207/AI-Codereview-Gitlab","owner":"sunmh207","description":"基于大模型(DeepSeek,OpenAI等)的 GitLab 自动代码审查工具；支持钉钉/企业微信/飞书推送消息和生成日报；支持Docker部署；可视化 Dashboard。","archived":false,"fork":false,"pushed_at":"2025-04-01T14:28:40.000Z","size":2474,"stargazers_count":168,"open_issues_count":8,"forks_count":40,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-01T15:39:22.178Z","etag":null,"topics":["ai","codereview","deepseek","gitlab","gpt","llm"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sunmh207.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-14T08:48:26.000Z","updated_at":"2025-04-01T14:28:45.000Z","dependencies_parsed_at":"2024-11-14T11:34:05.501Z","dependency_job_id":"b29180e5-a786-4b8c-bf08-6f3bc0654baa","html_url":"https://github.com/sunmh207/AI-Codereview-Gitlab","commit_stats":null,"previous_names":["sunmh207/ai-codereview-gitlab"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunmh207%2FAI-Codereview-Gitlab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunmh207%2FAI-Codereview-Gitlab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunmh207%2FAI-Codereview-Gitlab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunmh207%2FAI-Codereview-Gitlab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sunmh207","download_url":"https://codeload.github.com/sunmh207/AI-Codereview-Gitlab/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247980837,"owners_count":21027808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","codereview","deepseek","gitlab","gpt","llm"],"created_at":"2025-04-01T23:27:45.784Z","updated_at":"2025-04-09T05:11:05.024Z","avatar_url":"https://github.com/sunmh207.png","language":"Python","readme":"![Push图片](./doc/img/ai-codereview-cartoon.png)\n\n## 项目简介\n\n本项目是一个基于大模型的自动化代码审查工具，帮助开发团队在代码合并或提交时，快速进行智能化的审查(Code Review)，提升代码质量和开发效率。\n\n## 功能\n\n- 🚀 多模型支持\n  - 兼容 DeepSeek、ZhipuAI、OpenAI 和 Ollama，想用哪个就用哪个。\n- 📢 消息即时推送\n  - 审查结果一键直达 钉钉、企业微信 或 飞书，代码问题无处可藏！\n- 📅 自动化日报生成\n  - 基于 GitLab \u0026 GitHub Commit 记录，自动整理每日开发进展，谁在摸鱼、谁在卷，一目了然 😼。\n- 📊 可视化 Dashboard\n  - 集中展示所有 Code Review 记录，项目统计、开发者统计，数据说话，甩锅无门！\n- 🎭 Review Style 任你选\n  - 专业型 🤵：严谨细致，正式专业。 \n  - 讽刺型 😈：毒舌吐槽，专治不服（\"这代码是用脚写的吗？\"） \n  - 绅士型 🌸：温柔建议，如沐春风（\"或许这里可以再优化一下呢~\"） \n  - 幽默型 🤪：搞笑点评，快乐改码（\"这段 if-else 比我的相亲经历还曲折！\"）\n\n**效果图:**\n\n![MR图片](./doc/img/mr.png)\n\n![Note图片](./doc/img/note.jpg)\n\n![Dashboard图片](./doc/img/dashboard.jpg)\n\n## 原理\n\n当用户在 GitLab 上提交代码（如 Merge Request 或 Push 操作）时，GitLab 将自动触发 webhook\n事件，调用本系统的接口。系统随后通过第三方大模型对代码进行审查，并将审查结果直接反馈到对应的 Merge Request 或 Commit 的\nNote 中，便于团队查看和处理。\n\n![流程图](./doc/img/process.png)\n\n## 部署\n\n### 方案一：Docker 部署\n\n**1. 准备环境文件**\n\n- 克隆项目仓库：\n```aiignore\ngit clone https://github.com/sunmh207/AI-Codereview-Gitlab.git\ncd AI-Codereview-Gitlab\n```\n\n- 创建配置文件：\n```aiignore\ncp conf/.env.dist conf/.env\n```\n\n- 编辑 conf/.env 文件，配置以下关键参数：\n\n```bash\n#大模型供应商配置,支持 zhipuai , openai , deepseek 和 ollama\nLLM_PROVIDER=deepseek\n\n#DeepSeek\nDEEPSEEK_API_KEY={YOUR_DEEPSEEK_API_KEY}\n\n#支持review的文件类型(未配置的文件类型不会被审查)\nSUPPORTED_EXTENSIONS=.java,.py,.php,.yml,.vue,.go,.c,.cpp,.h,.js,.css,.md,.sql\n\n#钉钉消息推送: 0不发送钉钉消息,1发送钉钉消息\nDINGTALK_ENABLED=0\nDINGTALK_WEBHOOK_URL={YOUR_WDINGTALK_WEBHOOK_URL}\n\n#Gitlab配置\nGITLAB_ACCESS_TOKEN={YOUR_GITLAB_ACCESS_TOKEN}\n```\n\n**2. 启动服务**\n\n```bash\ndocker-compose up -d\n```\n\n**3. 验证部署**\n\n- 主服务验证：\n  - 访问 http://your-server-ip:5001\n  - 显示 \"The code review server is running.\" 说明服务启动成功。\n- Dashboard 验证：\n  - 访问 http://your-server-ip:5002\n  - 看到一个审查日志页面，说明 Dashboard 启动成功。\n\n### 方案二：本地Python环境部署\n\n**1. 获取源码**\n\n```bash\ngit clone https://github.com/sunmh207/AI-Codereview-Gitlab.git\ncd AI-Codereview-Gitlab\n```\n\n**2. 安装依赖**\n\n使用 Python 环境（建议使用虚拟环境 venv）安装项目依赖(Python 版本：3.10+):\n\n```bash\npip install -r requirements.txt\n```\n\n**3. 配置环境变量**\n\n同 Docker 部署方案中的.env 文件配置。\n\n**4. 启动服务**\n\n- 启动API服务：\n\n```bash\npython api.py\n```\n\n- 启动Dashboard服务：\n\n```bash\nstreamlit run ui.py --server.port=5002 --server.address=0.0.0.0\n```\n\n### 配置 GitLab Webhook\n\n#### 1. 创建Access Token\n\n方法一：在 GitLab 个人设置中，创建一个 Personal Access Token。\n\n方法二：在 GitLab 项目设置中，创建Project Access Token\n\n#### 2. 配置 Webhook\n\n在 GitLab 项目设置中，配置 Webhook：\n\n- URL：http://your-server-ip:5001/review/webhook\n- Trigger Events：勾选 Push Events 和 Merge Request Events (不要勾选其它Event)\n- Secret Token：上面配置的 Access Token(可选)\n\n**备注**\n\n1. Token使用优先级\n  - 系统优先使用 .env 文件中的 GITLAB_ACCESS_TOKEN。\n  - 如果 .env 文件中没有配置 GITLAB_ACCESS_TOKEN，则使用 Webhook 传递的Secret Token。\n2. 网络访问要求\n  - 请确保 GitLab 能够访问本系统。\n  - 若内网环境受限，建议将系统部署在外网服务器上。\n\n### 配置消息推送\n\n#### 1.配置钉钉推送\n\n- 在钉钉群中添加一个自定义机器人，获取 Webhook URL。\n- 更新 .env 中的配置：\n  ```\n  #钉钉配置\n  DINGTALK_ENABLED=1  #0不发送钉钉消息，1发送钉钉消息\n  DINGTALK_WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=xxx #替换为你的Webhook URL\n  ```\n\n企业微信和飞书推送配置类似，具体参见 [常见问题](doc/faq.md)\n\n## 其它\n\n**1.如何对整个代码库进行Review?**\n\n可以通过命令行工具对整个代码库进行审查。当前功能仍在不断完善中，欢迎试用并反馈宝贵意见！具体操作如下：\n\n```bash\npython -m biz.cmd.review\n```\n\n运行后，请按照命令行中的提示进行操作即可。\n\n**2.其它问题**\n\n参见 [常见问题](doc/faq.md)\n\n## 交流\n\n若本项目对您有帮助，欢迎 Star ⭐️ 或 Fork。 有任何问题或建议，欢迎提交 Issue 或 PR。\n\n也欢迎加微信/微信群，一起交流学习。\n\n\u003cp float=\"left\"\u003e\n  \u003cimg src=\"doc/img/wechat.jpg\" width=\"400\" /\u003e\n  \u003cimg src=\"doc/img/wechat_group.jpg\" width=\"400\" /\u003e \n\u003c/p\u003e\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=sunmh207/AI-Codereview-Gitlab\u0026type=Timeline)](https://www.star-history.com/#sunmh207/AI-Codereview-Gitlab\u0026Timeline)","funding_links":[],"categories":["NLP"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunmh207%2Fai-codereview-gitlab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsunmh207%2Fai-codereview-gitlab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunmh207%2Fai-codereview-gitlab/lists"}