847 字约 3 分钟
借助 AI 能力,你可以让流水线自动对 PR(Pull Request)进行代码评审,快速发现潜在问题、提升代码质量。
云原生构建 支持两种方式进行 AI 代码评审,你可以根据实际场景选择适合的方式。
令牌说明
流水线中提供了三个与 NPC 相关的环境变量,权限一致,都代表流水线触发者,仅用于区分不同的 NPC 角色:
| 环境变量 | 说明 |
|---|---|
CNB_TOKEN | 提及自定义 NPC 角色时,代表被提及的自定义角色 |
CNB_TOKEN_FOR_CODEBUDDY | 提及系统角色 CodeBuddy 时,代表系统角色 CodeBuddy |
CNB_TOKEN_FOR_AI | 可由用户在非 NPC 流水线中根据情况选用 |
方式对比
| 对比项 | 方式一:AI 评审插件 | 方式二:NPC 事件 |
|---|---|---|
| 触发方式 | 流水线自动触发 | 在 PR 评论上提及 NPC |
| 使用的令牌 | CNB_TOKEN_FOR_AI | CNB_TOKEN(自定义角色)或 CNB_TOKEN_FOR_CODEBUDDY(系统角色) |
| 适用场景 | 每次 PR 事件都自动评审 | 按需评审,可灵活控制 |
| 配置位置 | .cnb.yml 流水线配置 | .cnb.yml + .cnb/settings.yml(自定义角色) |
方式一:使用 AI 评审插件
使用 cnbcool/ai-review 镜像作为流水线插件,当 PR 事件触发时自动进行代码评审。
配置示例
.cnb.yml
main:
pull_request:
- stages:
- name: 代码评审
image: cnbcool/ai-review:latest
settings:
type: code-review工作原理
- 当有 PR 创建或更新事件推送到
main分支时,流水线自动触发。 - 流水线上插件使用
CNB_TOKEN_FOR_AI环境变量调用 OpenAPI 的 AI 能力。 - AI 会对 PR 的代码变更进行评审,并将评审结果以评论形式提交到 PR 上。
适用场景
- 每次提交 PR 都希望自动获得 AI 评审反馈
- 需要在代码合并前统一进行质量把控
方式二:触发 NPC 事件
在 PR 上通过评论提及 NPC 角色,触发 NPC 事件流水线执行 AI 评审。
触发方式
- 系统 NPC:直接在 PR 评论中提及
@CodeBuddy,例如:
@CodeBuddy 代码评审- 自定义 NPC:先在仓库中配置自定义 NPC 角色,然后在 PR 评论中提及,例如:
@cnb/feedback(评审专家) 代码评审NPC 事件工作原理
- 当有人在 PR 上评论并提及 NPC 时,触发
pull_request.comment@npc事件。 - 系统加载 NPC 所属仓库的
.cnb.yml配置,解析对应角色的事件流水线。 - 流水线使用令牌调用 OpenAPI AI 能力进行评审:
- 提及自定义 NPC 时,使用
CNB_TOKEN,代表被提及的自定义角色 - 提及系统角色 CodeBuddy 时,使用
CNB_TOKEN_FOR_CODEBUDDY,代表系统角色 CodeBuddy
- 提及自定义 NPC 时,使用
- 评审结果会以 NPC 的身份提交到 PR 评论中。
详细配置说明请参考 NPC 文档。
NPC 事件适用场景
- 需要按需触发评审,不必每次 PR 都自动评审
- 希望使用自定义的评审角色和风格
- 希望在评审同时让 NPC 执行其他自动化任务
注意事项
- 两种方式都需要确保流水线有足够的权限访问代码仓库和提交评论。
- NPC 事件触发的流水线执行时,其 TOKEN 权限仅限于当前仓库。
- 如果需要在评审过程中进行代码修改,可以开启 NPC 工作模式。