本文介绍云效 AI 助手在智能评审场景的功能。AI 助手结合代码内容变更,提供代码评审、修复建议、自定义规则、智能对话等能力,可降低人工评审成本,提高代码评审效率。
计费方式和功能开启
代码智能评审是云效 AI 助手的功能之一,由 AI 助手统一收费,计费方式为按量计费。
-
计量单位:积分(AI_Credits)。
-
查看消耗:组织管理员可在云效管理后台 > 智能化用量页面查看 AI 助手的积分消耗情况。单击查看资源明细可查看详细的积分使用记录,支持按时间范围筛选和导出。一次评审大约消耗 100 积分,具体消耗随代码量和复杂度变化,以积分记录为准。
-
账单出处:云效 AI 助手使用 STAROps(全域智能运维平台)的核心能力,计费由 STAROps 统一处理,具体计费规则参考STAROps 计费说明。
初次使用时,需由组织拥有者在管理后台开启代码智能评审功能,入口为管理后台 > AI 助手管理 > 公共 AI 助手。开启后所有代码库均可启用代码智能评审功能,评审将产生费用,请关注云效的 AI 积分明细和 STAROps 的费用明细。
评审标题/描述自动生成
-
代码库开发者及以上角色创建合并请求,选择源/目标分支;
-
点击标题或描述输入框中的自动生成图标,可触发对应内容的自动生成;
创建完成后,进入评审详情也支持基于变更内容触发自动生成更新描述信息。
代码智能评审
设置 AI 评审规则
-
代码库管理员进入代码库设置,选择 AI 助手设置;
-
配置 AI 评审默认设置:
-
若选择 无,代表任意分支作为目标分支新建合并请求时,都不会自动触发评审;
-
若选择全部,代表任意分支作为目标分支新建合并请求时,都会自动触发评审;
-
支持指定命名的分支,作为目标分支新建合并请求时,能够自动触发评审。分支名称支持通配符,书写规则为 glob 语法:
-
?匹配单个字符(不包括/)。 -
*匹配单级路径下的多个字符。 -
**匹配多级路径。 -
具体规则请参考: glob。
-
-
-
配置自定义 AI 评审规则(可选):通过配置适合团队评审偏好的评审规则,可以提高精度和降低幻觉。
自定义 AI 评审规则说明
云效支持通过 yaml 文件的形式定义评审规则,以源分支下命名为 .aliyun/code/code_review.yaml 的 yaml 文件为准,评审规则针对当前仓库所有分支生效。
yaml 文件支持的语法
基于以下示例进行说明,文件标识关键字 reviews,支持通过关键字 ignores 设置忽略评审的文件,通过 language 配置评审语言,通过 problem_level 设置评审的严格程度, review_mode 设置评审模式,以及通过关键字 path_instructions 设置指定路径的自定义评审规则。在 BY_COMMIT 评审模式下,还可以通过关键字 enable_review_commit_message 设置是否对提交说明进行评审。
reviews:
# files that ignore to review, glob pattern
ignores:
- myfile.txt
- myfolder/
- "*.log"
- "**/logs"
- /debug.log
# basic config
language: "zh-CN" # 可选值 [zh-CN|en-US]
problem_level: "CRITICAL" # 可选值 [BLOCKER|CRITICAL|MAJOR|MINOR]
review_mode: "DEFAULT" # 可选值 [DEFAULT|BY_COMMIT]
enable_review_commit_message: true # 仅当 review_mode 为 BY_COMMIT 时生效,可选值 [true|false]
# instructions match specify file path
path_instructions:
- path: "**/*.js"
instructions: 'Review the JavaScript code against the Alibaba JavaScript style
guide and point out any mismatches'
- path: "tests/**.*"
instructions: |-
Review the following unit test code written using the Mocha test library. Ensure that:
- The code adheres to best practices associated with Mocha.
- Descriptive test names are used to clearly convey the intent of each test.
-
忽略部分文件不进行评审。
针对部分配置文件、测试文件可能无需进行评审,支持通过 ignores 关键词配置忽略评审的文件路径规则,路径描述支持 glob 语法设置通配符,具体规则参考 glob。
reviews:
# files that ignore to review, glob pattern
ignores:
- myfile.txt
- myfolder/
- "*.log"
- "**/logs"
- /debug.log
-
设置评审基础配置
-
language 参数:支持选择 zh-CN(中文) 或者 en-US(英文),默认中文;
-
problem_level 参数:支持选择 BLOCKER(仅报阻断问题)、CRITICAL(报严重及以上问题)、MAJOR(报主要及以上问题)、MINOR(报建议及以上问题),评审严格程度递减,默认为 CRITICAL。如果设置为 MINOR,可能产生较多的评审问题;
-
review_mode 参数:支持选择 DEFAULT(默认评审模式)或者 BY_COMMIT(单提交评审模式),默认为默认评审模式;
-
enable_review_commit_message 参数:仅当 review_mode 参数选择 BY_COMMIT 时生效,用于决定在单提交评审模式中是否启用针对提交说明的评审,默认为 true。开启后,将会在评审总结中增加“提交说明建议”模块,依次对每个提交的提交说明给出改进建议;
reviews:
# basic config
language: "zh-CN" # 可选值 [zh-CN|en-US]
problem_level: "CRITICAL" # 可选值 [BLOCKER|CRITICAL|MAJOR|MINOR]
review_mode: "DEFAULT" # 可选值 [DEFAULT|BY_COMMIT]
enable_review_commit_message: true # 仅当 review_mode 为 BY_COMMIT 时生效,可选值 [true|false]
-
自定义评审规则。
团队可能存在自己的评审偏好,支持通过 path_instructions 关键词配置指定文件路径的自定义评审规则,可通过自然语言进行描述。路径描述支持 glob 语法设置通配符,具体规则参考 glob。
reviews:
# instructions match specify file path
path_instructions:
- path: "**/*.js"
instructions: 'Review the JavaScript code against the Alibaba JavaScript style
guide and point out any mismatches'
- path: "tests/**.*"
instructions: |-
Review the following unit test code written using the Mocha test library. Ensure that:
- The code adheres to best practices associated with Mocha.
- Descriptive test names are used to clearly convey the intent of each test.
-
沙箱配置(可选)
云效支持通过沙箱配置,控制 AI 评审运行环境及高级分析能力。开启跨文件分析能力后,评审 Token消耗和耗时会有所增加。
-
enable 参数:是否启用沙箱环境运行 AI 评审,可选值 [true|false],默认 false。仅开启此项不会生效,需配合具体能力开关使用。
-
enable_crossfile_analyze 参数:是否启用跨文件变更检测能力,可选值 [true|false],默认false,仅在 enable 为 true 时生效。开启后,AI评审将自动识别跨文件的破坏性变更(如返回值语义变化、未处理异常、参数顺序调整等)。
reviews:
# 沙箱配置(可选)
sandbox:
enable: true
enable_crossfile_analyze: true
后续将提供更多沙箱内高级能力,敬请期待。
全局代码评审配置
云效支持在企业级别配置统一的代码评审规则,所有仓库可自动继承。
配置方法:在企业下创建名为 yx-ai-codereview 的代码库,在该仓库中创建.aliyun/code/code_review.yaml.aliyun/code/code_review.yaml 配置文件,配置格式与本节上述内容相同。
配置合并规则:
|
字段类型 |
合并策略 |
|
ignores |
追加合并,本地配置在前,全局配置在后 |
|
path_instructions |
智能覆盖,文件被本地规则匹配则忽略全局规则 |
|
language、problem_level 等基本字段 |
本地配置完全覆盖全局配置 |
常见问题:
Q1: 全局配置仓库必须叫什么名字?
A: 必须命名为 `yx-ai-codereview`。
Q2: 如何让某个仓库不使用全局配置?
A: 在仓库中创建本地配置文件即可覆盖。
使用 AI 智能评审
评审限制
AI 评审目前对变更大小的限制如下:
-
不支持评审超过 1000 个变更行;
-
不支持评审超过 100 个变更文件;
触发评审
-
新建合并请求时,支持设置新建后是否立即执行 AI 评审,若AI 评审默认设置已配置分支规则,则命中目标分支规则时将自动勾选 AI 评审。
-
合并请求详情中,支持开发者及以上角色的用户手动触发评审。
-
若有 AI 评审或评论正在进行中,则不可频繁触发,需等待执行完成后触发。
-
若当前版本已经执行过 AI 评审,则不可重复触发,需更新代码内容后再次触发。
在右侧面板的AI 评审区域,单击云效AI助手旁的请求评审按钮即可触发评审。
评审效果
-
代码变更内容摘要,包括更改文件的列表和文件描述。
AI智能评审结果还包含变更时序图,用于展示代码涉及的组件间调用关系。
-
代码行级问题审查和修复建议。
云效AI助手在合并请求的代码差异视图中,针对具体代码行标注问题并给出修复建议。评审评论包含问题严重级别(如Critical | Bugs)、问题详情以及修复方案的代码差异对比(例如为status字段添加.refine()校验逻辑以限制有效状态ID范围),右侧面板显示AI评审状态和待解决问题计数。
-
评审总结
评审报告包含评审意见概览,按 Blocker、Critical、Major、Minor 四个严重等级分类统计问题数量,并在下方列出各等级的具体问题描述及对应代码文件与行号。
-
评审模式:可选的评审模式包含默认评审模式和单提交评审模式,在评审规则文件中可通过关键字 review_mode 进行指定。
-
默认评审模式:将合并请求中所有提交合并成一个整体代码变更来评审,适合小型、原子化的变更;
-
单提交评审模式:对合并请求中的提交逐一评审,适合提交数量多、变更行数大的复杂合并请求;
-
评审粒度更小,更容易关注到小而关键的改动;
-
评审时结合提交说明,理解开发者的真实意图,从而给出更贴切的建议和更少的误判:例如,AI助手在评审中检测到代码
FILE_MAX_SIZE = 1024 * 1024L(即1MB)与提交信息描述的1GB不一致,判定为 Critical 级别 Bug,并建议修改为FILE_MAX_SIZE = 1024L * 1024 * 1024以匹配实际需求。 -
评审提交说明,从内容质量、格式问题等方面给出提交说明修改建议:工具生成提交说明建议页面,针对每个提交记录检查格式问题(如主题行是否使用英文、是否使用 imperative mood)和内容质量(如描述是否清晰、body 是否存在重复描述),并给出改进建议,例如将中文主题改写为英文祈使句
Add file meta info to file list API response。
-
单提交评审模式的局限性:相比于默认评审模式,单提交评审由于评审粒度更小,当提交数量较大时会使评审耗时显著提高,极端情况下耗时会达到默认评审模式的 3 倍以上。请结合具体需求选择合适的评审模式。
智能评审记忆功能
评审记忆沉淀能够在后续评审中复用的团队规则、技术约束和代码库偏好。
|
记忆类型 |
典型内容 |
能解决的问题 |
|
代码库规则 |
某些包、模块、类、接口必须遵守的固定约定 |
避免智能评审不了解仓库规范,导致漏报或误报 |
|
业务约束 |
兼容旧链路、外部系统字段、灰度发布要求等背景 |
让评审意见结合业务真实风险,而不是只看表面代码 |
|
团队偏好 |
团队长期选择的实现方式、命名风格、异常处理策略 |
减少同类偏好在不同 MR 中反复沟通 |
|
风险经验 |
某类改动历史上容易引发问题,需要额外检查 |
帮助智能评审在相似场景中主动提醒 |
功能开启
代码库管理员可以进入“代码库设置 > AI 助手设置 > 智能评审 > 评审记忆”,开启或关闭当前代码库的评审记忆能力。
记忆功能
管理员可以根据团队需要开启记忆功能。
-
开启记忆:云效 AI 助手根据和用户的对话产生记忆,云效 AI 助手会参考生效的记忆进行代码评审,管理员可以在后台进行记忆管理。
-
关闭记忆:不产生或使用记忆,记忆后台管理功能不可用。
审批功能
管理员可以根据团队需要开启记忆审批功能。
-
开启审批:新生成的候选记忆需要管理员确认通过后才会生效。
-
关闭审批:新生成的候选记忆直接生效。
产生记忆
用户可以在评论中主动告知智能评审希望被记住的内容:
请记住:当【什么情况】时,请注意【什么规则或要求】。
云效 AI 助手会将自然语言整理成适合沉淀的记忆,并显示“添加记忆”的具体内容。
此时记忆可能有两种状态:
-
已生效:记忆在下次评审直接生效。
-
待管理员审批:需要联系管理员审批通过此记忆,通过后在下次评审中生效。
使用记忆
评审过程中云效 AI 助手会自动参考所有已生效状态的记忆内容,并显示“参考记忆”的具体内容。
管理记忆
代码库管理员可以进入“代码库设置 > AI 助手设置 > 智能评审 > 评审记忆”,对记忆内容进行管理。
支持多种操作:
|
记忆状态 |
含义 |
常见操作 |
|
待确认 |
新生成但尚未审核,不参与后续评审 |
编辑、通过、拒绝 |
|
已生效 |
已通过或自动生效,可用于后续评审 |
编辑、停用 |
|
已停用 |
暂时不参与后续评审 |
编辑、重新启用、删除 |
|
已拒绝 |
管理员判断不适合作为记忆 |
作为终态保留记录 |
|
已删除 |
已从可管理记忆中删除 |
作为终态处理 |
记忆内容
为了让记忆更准确、更稳定,建议优先沉淀长期有效、边界清晰、后续可复用的信息。
-
适合记住的内容包括:
-
当前代码库或特定模块长期适用的开发规范。
-
与历史兼容、外部系统、线上稳定性相关的业务约束。
-
团队明确选择并反复执行的技术方案边界。
-
某类改动需要持续关注的风险点或检查项。
-
已经在评审中多次解释过、未来还会重复出现的上下文。
-
-
不建议沉淀为记忆的内容包括:
-
只针对当前 MR 的临时修改建议。
-
没有明确适用范围的模糊反馈。
-
个人情绪化表达或一次性讨论结论。
-
已经完全由测试、配置或静态规则强约束的问题。
-
一条高质量记忆,最好包含四个要素:
|
要素 |
应该说明什么 |
|
适用范围 |
规则适用于哪个仓库、模块、目录或代码类型 |
|
具体规则 |
必须做什么,或不能做什么 |
|
背后原因 |
业务背景、兼容性要求或团队约定 |
|
后续动作 |
后续评审遇到什么情况时如何提示 |