news 2026/4/18 10:45:47

收藏必备!用本地大模型打造AI代码审查系统,提升团队开发效率

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
收藏必备!用本地大模型打造AI代码审查系统,提升团队开发效率

本文介绍如何利用本地大模型(qwen3-coder:30b)构建AI代码审查系统,解决疫情后团队人力不足问题。通过Ollama搭建本地模型服务,用Go编写静态编译程序提取Git diff信息并调用模型评估,集成到Gitea CI/CD工作流中。实验证明,该系统可有效识别代码漏洞和问题,提供改进建议,通过Pull Request流程实现高危代码拦截,4090显卡下30b模型可秒级完成审核,显著提升代码质量和开发效率。


需求来源

疫情后对产品研发工作的最大影响,是随着经济下行,公司在不停地裁员,导致研发团队人力资源严重不足。 事情多得做不完,过去还在定期组织的质量控制手段–code review,现在也忙得没有时间组织了。

早就听说*-coder系列开源大模型在编码方便挺强悍,于是决定尝试使用本地大模型加入到CICD流程中,在团队提交代码的时候,由AI进行code review工作。

计划

我们的源代码管理环境使用gitea,只要配置workflow工作流就可以了。在工作流中把diff信息交给本地编程大模型进行评估,并把结果输出,根据结果决定后续行为。

所以,我们需要:

  1. 一个workflow配置文件
  2. 一个程序负责提取diff并调用到模型并反馈结果
  3. 一个本地大模型服务

我们倒序进行实现。

本地编程大模型服务

参考[《LLM:使用Ollama访问本地大模型》],我们使用Ollama搭建本地编程大模型服务。

curl -fsSL https://ollama.com/install.sh | sh ollama serve

编程大模型这里选择口碑极好的qwen3-coder:30b

ollama pull qwen3-coder:30b

代码检测程序

使用Python调用ollama非常容易,但是考虑到gitea的runner是一个docker环境,在同一的镜像中,运行Python和相关的库需要从网络拉取依赖包会导致一些麻烦。所以这里使用go静态编译,直接生成一个bin文件放在本地文件服务器上,runner直接拉取一个bin就可以工作,不需要任何依赖环境,流程更简洁速度也更快。

定义本地ollama地址和模型

var ( ollamaURL = getEnv("OLLAMA_ENDPOINT", "http://ai.internal:11434") model = "qwen3-coder:30b" )

获取diff信息:

func getGitDiff() (string, error) { cmd := exec.Command("git", "diff", "HEAD^", "HEAD") output, err := cmd.Output() if err != nil { return "", fmt.Errorf("获取 git diff 失败: %w", err) } return string(output), nil }

最后传递这样一个提示词

你是一个代码质量审查专家。请分析以下 Git Diff 代码变更,并严格按 JSON 格式返回结果。JSON 格式要求:{{ "score": (0-100的整数,代表代码质量和安全性), "summary": "简短的总结", "risks": ["风险点1", "风险点2"], "suggestions": ["改进建议1"]}}代码变更内容:{diff_text}

静态编译后,放置在本地文件服务器上

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ai-codereview ai-codereview.go rsync -vhP ai-codereview user@fileserver:/gitea/action/

在工作流中加入AI代码审查

现在万事俱备,只欠东风。先找一个不那么重要的项目进行实验,比如testcase项目,

首先在gitea的设置的action中,添加变量

OLLAMA_ENDPOINT=http://ai.internal:11434

然后创建工作流

# 创建工作流mkdir -p .gitea/workflowstouch ai-codereview.yaml

在jobs中添加流程:

- name:AI Code Review env: OLLAMA_ENDPOINT:${{ secrets.OLLAMA_ENDPOINT }} run:| curl -sSL http://10.0.1.1/gitea/action/ai-codereview -o /tmp/ai-codereview chmod +x /tmp/ai-codereview /tmp/ai-codereview 2>&1 | tee ai_report.log

提交代码,这个项目就已经具有AI智能代码审核功能了。

本次提交的AI评审报告:

---AI评审报告---得分:75总结:代码变更引入了新的AI审核机制,通过调用ollama模型进行代码质量分析。整体结构清晰,但存在安全和可维护性风险。风险:使用硬编码的默认 ollama 地址可能导致配置错误或安全漏洞,从外部 URL 下载可执行文件(/tmp/ai-codereview)存在执行未验证代码的风险,未对AI返回结果做充分校验,可能影响审核逻辑的准确性[结果] ✅ 代码质量合格。

验证

创建TUI的helloword代码,提交

--- AI 评审报告 ---得分: 65总结: 代码功能变更但存在安全隐患和可读性问题风险: 使用了非ASCII字符和特殊符号,可能导致终端显示异常或编码问题, 代码可读性差,难以维护和理解原始功能意图[结果] ✅ 代码质量合格。

给项目增加个README

--- AI 评审报告 ---得分: 100总结: 本次变更主要涉及工作流名称的修改和README文件的更新,均为非核心代码变更,无安全风险。风险: [结果] ✅ 代码质量合格。

下面编写一个存在CVE漏洞的代码并提交,得到:

--- AI 评审报告 ---得分: 35总结: 代码存在严重安全漏洞,包括路径遍历攻击和不安全的文件操作风险: 路径遍历攻击漏洞:直接使用用户输入的文件名拼接路径,可访问任意文件, 使用已废弃的ioutil.ReadFile函数:应使用os.ReadFile替代, 缺少输入验证和过滤:未对用户输入进行任何安全检查[结果] ❌ 代码质量未达标,拒绝合并!

实际效果达到预期

高危代码阻断工作流

上述实验中使用的方法是通过Push 触发的 Action,代码是进入仓库后才执行的审核,无法实现高危代码拦截。 可以通过gitea的Pull Request工作流(简称PR)来实现合并代码前拦截,思路如下。

  1. 禁止直接 push 到 main 分支
  2. 强制通过 PR 合并代码
  3. PR 触发 AI 审核,审核通过才合并到main

在gitea的设置/分支中,做如下设置:

  • main分支禁止直接 push

开发流程稍作调整,本地在分支上开发,提交后创建PR,并由AI进行审核,审核通过后才可以合并到main

改进后的流程如下:

开发者 → feature分支 → 创建PR到main → 触发AI审核 → 通过才能合并 ↓ 失败则阻止合并

这样就可以防止高危代码进入main分支了。

结论

一些toB的AI商业产品也在做类似的事情,其实自己做一个实现也并不复杂。

实验证明,本地离线大模型确实可以识别风险代码,并对代码问题提出有价值的改进建议,使用4090显卡的话,30b大模型可以秒级完成代码审核(测试代码改动幅度小于一屏的条件下),完全值得你把它放到CICD流程中来。


最后,用AI给AI审核员生成一个形象:

A photorealistic image of an 18-year-old Asian code reviewer girl in a high-tech office, with a futuristic background.

如何学习AI大模型?

如果你对AI大模型入门感兴趣,那么你需要的话可以点击这里大模型重磅福利:入门进阶全套104G学习资源包免费分享!

这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

这是一份大模型从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!


第一阶段:从大模型系统设计入手,讲解大模型的主要方法;

第二阶段:在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段:大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段:大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段:大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段:以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段:以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

100套AI大模型商业化落地方案

大模型全套视频教程

200本大模型PDF书籍

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

LLM面试题合集

大模型产品经理资源合集

大模型项目实战合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/4 10:39:55

day159—动态规划—打家劫舍(LeetCode-198)

题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋…

作者头像 李华
网站建设 2026/4/17 23:18:07

学长亲荐自考必看TOP8 AI论文平台测评对比

学长亲荐自考必看TOP8 AI论文平台测评对比 2026年自考论文写作工具测评:为何需要这份榜单? 随着AI技术的不断进步,越来越多的自考生开始借助AI论文平台提升写作效率。然而,面对市场上琳琅满目的工具,如何选择真正适合自…

作者头像 李华
网站建设 2026/4/17 18:15:35

AI技术驱动的文科核心期刊投稿优化方案

8大文科论文查重工具核心对比 排名 工具名称 查重准确率 数据库规模 特色功能 适用场景 1 Aicheck 98% 10亿文献 AI降重、AIGC检测 初稿查重与修改 2 Aibiye 96% 8亿文献 智能改写、格式调整 终稿精细优化 3 秒篇 95% 6亿文献 一键生成降重报告 快速查重…

作者头像 李华
网站建设 2026/4/15 16:15:24

基于Springboot+Vue的乡村信息管理系统(源码+lw+部署文档+讲解等)

课题介绍 本课题针对乡村信息传递分散、事务管理低效、资源整合不足、数据追溯困难等痛点,设计并实现基于SpringbootVue的乡村信息管理系统,构建集政务公开、民生服务、资源管控、数据统计于一体的数字化乡村治理平台。系统以MySQL为数据存储核心&#x…

作者头像 李华
网站建设 2026/3/10 1:50:26

人体设计提示词

人体设计提示词方案 模板:主题(主题定位) 人体(人体形态) 色彩(色彩策略) 背景(背景设计) 细节(细节增强) 参数(技术参数)…

作者头像 李华