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 上提交评论。
- 支持多种模型:可选择不同的大模型进行代码审查。
解决的问题
- 人工评审效率低:传统的代码评审依赖人工逐行检查,容易遗漏逻辑错误、安全隐患等问题。
- 提高代码质量:通过 AI 审查逻辑错误、资源泄漏、SQL 性能问题等关键缺陷,提升整体代码质量。
- 减少重复性工作:自动化处理常见的代码规范和逻辑问题,释放开发人员时间用于更复杂的任务。
触发场景
- 当开发者提交合并请求(Merge Request)到 Codeup。
- 流水线触发后,执行该自定义步骤。
- 工具会拉取代码差异,调用大模型分析问题,并将结果反馈至 MR 页面。

如何使用?
1. 安装依赖
2. 配置参数
配置以下环境变量:
参数名称 | 描述 |
modelName | 大模型名称(例如 qwen、deepseek) |
yunxiaoToken | 云效 Token(可在流水线中配置)为了能够让大模型调用云效API获取合并请求详情,并把Review的结果写到合并请求中,我们需要创建一个云效API的访问令牌。<br/>点击右上角的头像-个人设置-新建令牌,并按照下图中设置令牌的权限:代码比较设置为只读,合并请求设置为读写 |
dashscopeApikey | 百炼 API Key |
llmChatPrompt | 自定义提示词 |
模型温度值 |
3. 构建并运行
4. 配置流水线
- 首先,安装flow-cli的最新版本(需要本地有安装nodejs)
- 运行flow-cli的登录命令,选择你的云效组织。
- 修改其中的step.yaml文件,修改第4~5行,为步骤id和name, 注意步骤ID为云效全局唯一
- 命令行切换到代码的代码库的根目录,执行下面的命令以发布步骤。
注:flow-cli的详细操作可参见文档:https://help.aliyun.com/zh/yunxiao/user-guide/use-flow-cli-to-customize-development-steps步骤发布后,访问https://flow.aliyun.com/,在步骤管理-组织步骤中可以看到MergeRequestLLMReviewer 步骤,即表示步骤发布成功。如果你看不到步骤管理菜单项,是因为你当前账号没有步骤管理的权限,可以切换为管理员账号或者让管理员赋予你步骤管理的权限。
- 在云效流水线编辑页的 变量与缓存 中配置
YUNXIAO_TOKEN
和BAILIAN_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 等)。
- 提供自定义提示词配置,满足不同团队的需求。
方法调用时序图

自定义开发指南
1. 扩展支持的模型
只需修改 step.yaml的模型可选项,添加新的模型支持。
2. 自定义提示词
Flow中参数
llmChatPrompt
,调整模型的行为逻辑。例如:3. 添加新功能
例如增加日志分析或集成 Slack 通知,只需新增模块并在
codeReview
主流程中调用即可。4. 自定义审查规则
修改
getHunksFromDiff
或 reviewCode
方法,实现特定规则的审查逻辑。示例输出
MR 评论格式
总结
该项目通过结合 Flow + Yunxiao + 大模型 实现了高效的自动化代码审查机制,解决了传统人工评审效率低、易遗漏等问题。适用于需要高频提交 MR 的团队,尤其适合注重安全性、稳定性与性能的 Web 应用开发场景。
- 作者:Honesty
- 链接:https://blog.hehouhui.cn/archives/2230c7d0-9e17-8019-aa9e-f9bb1fb432c7
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章