type
status
date
slug
summary
tags
category
icon
password
catalog
sort

项目介绍

本项目是一个基于 Flow阿里云云效(Yunxiao) 的自动化 AI 代码审核工具,旨在通过调用大模型(如 Qwen、DeepSeek 等),对 Git 合并请求(MR)中的代码变更进行自动审查,并在发现问题时自动生成评论提交到 MR 中。
云效流水线Flow提供了灵活的集成机制,企业可以在云效Flow内开发一个自定义步骤来调用DeepSeek等大模型,对云效Codeup提交的代码评审进行智能评审,并通过云效的API,将这些评审意见回写到合并请求中。 同时,结合云效流水线Flow的能力还可以对提交的代码进行单元测试、代码扫描等任务,并将这些结果一并展示回云效Codeup的提交历史中,反馈每个commit的代码质量状态

功能介绍

  • AI 代码审查:使用大模型(Qwen、DeepSeek 等)对 MR 进行代码审查。
  • 问题检测:聚焦于冗余代码、逻辑错误、潜在问题、SQL 性能优化等关键维度。
  • 自动生成评论:根据模型输出的问题,自动在 MR 上提交评论。
  • 支持多种模型:可选择不同的大模型进行代码审查。

解决的问题

  1. 人工评审效率低:传统的代码评审依赖人工逐行检查,容易遗漏逻辑错误、安全隐患等问题。
  1. 提高代码质量:通过 AI 审查逻辑错误、资源泄漏、SQL 性能问题等关键缺陷,提升整体代码质量。
  1. 减少重复性工作:自动化处理常见的代码规范和逻辑问题,释放开发人员时间用于更复杂的任务。

触发场景

  • 当开发者提交合并请求(Merge Request)到 Codeup。
  • 流水线触发后,执行该自定义步骤。
  • 工具会拉取代码差异,调用大模型分析问题,并将结果反馈至 MR 页面。
notion image

如何使用?

1. 安装依赖

2. 配置参数

配置以下环境变量:
参数名称
描述
modelName
大模型名称(例如 qwen、deepseek)
yunxiaoToken
云效 Token(可在流水线中配置)为了能够让大模型调用云效API获取合并请求详情,并把Review的结果写到合并请求中,我们需要创建一个云效API的访问令牌。<br/>点击右上角的头像-个人设置-新建令牌,并按照下图中设置令牌的权限:代码比较设置为只读,合并请求设置为读写
dashscopeApikey
百炼 API Key
llmChatPrompt
自定义提示词
模型温度值

3. 构建并运行

4. 配置流水线

  1. 首先,安装flow-cli的最新版本(需要本地有安装nodejs)
    1. 运行flow-cli的登录命令,选择你的云效组织。
      1. 修改其中的step.yaml文件,修改第4~5行,为步骤id和name, 注意步骤ID为云效全局唯一
      1. 命令行切换到代码的代码库的根目录,执行下面的命令以发布步骤。
        1. 注:flow-cli的详细操作可参见文档:https://help.aliyun.com/zh/yunxiao/user-guide/use-flow-cli-to-customize-development-steps
          步骤发布后,访问https://flow.aliyun.com/,在步骤管理-组织步骤中可以看到MergeRequestLLMReviewer 步骤,即表示步骤发布成功。如果你看不到步骤管理菜单项,是因为你当前账号没有步骤管理的权限,可以切换为管理员账号或者让管理员赋予你步骤管理的权限。
      1. 在云效流水线编辑页的 变量与缓存 中配置 YUNXIAO_TOKENBAILIAN_APIKEY。选择使用模型

      类结构图与设计思路

      核心类说明

      1. IParams

      负责从环境变量中读取所有必要的参数,包括 token、API 密钥、文件路径等。

      2. CodeSource

      表示代码来源,包含仓库地址、项目 ID、合并请求 ID 等信息。

      3. CodeReviewPatch / CodeReviewPatches

      封装了 MR 补丁集的相关信息,支持获取基础补丁集和目标补丁集。

      4. CompareResult

      解析 Git Diff 数据,提取变更块(hunk),并提供方法将 diff 转换为 Hunk 对象。

      5. Hunk

      表示一个具体的代码变更块,包含文件名、行号和变更内容。

      6. CodeupClient

      与 Codeup 平台交互的核心类,负责:
      • 获取差异补丁
      • 提交评论到 MR
      • 构建 MR URL

      7. Chat / ReviewResult

      • Chat: 封装与大模型的交互逻辑,发送请求并接收审查结果。
      • ReviewResult: 表示模型返回的审查结果,包含文件名、行号和问题描述。

      8. codeReview

      主流程函数,整合所有组件,函数协调整个流程,控制 MR 审查的开始、执行和结束 完成整个审查流程。

      异步并发处理

      • 使用 pLimit 控制并发数量,防止一次性请求过多影响性能。默认30

      可扩展性

      • 支持多种大模型(Qwen、DeepSeek 等)。
      • 提供自定义提示词配置,满足不同团队的需求。

      方法调用时序图

      notion image

      自定义开发指南

      1. 扩展支持的模型

      只需修改 step.yaml的模型可选项,添加新的模型支持。

      2. 自定义提示词

      Flow中参数 llmChatPrompt ,调整模型的行为逻辑。例如:

      3. 添加新功能

      例如增加日志分析或集成 Slack 通知,只需新增模块并在 codeReview 主流程中调用即可。

      4. 自定义审查规则

      修改 getHunksFromDiffreviewCode 方法,实现特定规则的审查逻辑。

      示例输出

      MR 评论格式


      总结

      该项目通过结合 Flow + Yunxiao + 大模型 实现了高效的自动化代码审查机制,解决了传统人工评审效率低、易遗漏等问题。适用于需要高频提交 MR 的团队,尤其适合注重安全性、稳定性与性能的 Web 应用开发场景。
      当我的代码评审开始 “AI 打工”:聊聊这个让我摸鱼更心安的神器Java 多线程全文深度剖析
      Loading...