基于 CodeBuddy CLI 的 Pull Request 代码评审工具,自动对 PR 代码变更进行 AI 评审并发送评论。
注意,仅支持在以下流水线事件中使用:
output:评审结果输出文件路径。指定后评审结果会保存为 JSON 文件,不指定则直接输出到终端。context:生成 diff 时包含的上下文行数,即变更代码前后各显示多少行。值越大,AI 能看到更多上下文,评审更准确,但也会增加 token 消耗。默认 5verbose:是否显示详细日志。开启后会输出更多调试信息,包括 Git 命令执行、文件过滤详情等。默认 falsecomment:是否将评审结果发送到 PR 评论。开启后会在 PR 页面添加评审总结评论和针对具体代码行的问题评论。默认 truemax_comments:发送 PR 评论时的最大评论数量。为避免评论过多影响阅读,会按问题严重程度排序后截取。默认 10max_diff_size:允许的最大 diff 大小(字符数)。超过此大小的 diff 会被截断,部分文件可能不会被评审。默认 100000(约 10 万字符)max_files:允许的最大评审文件数。超过此数量时只评审前 N 个文件,避免文件过多导致评审超时或 token 消耗过大。默认 30fail_on_critical:当评审发现严重问题(critical)时是否返回非零退出码。开启后可用于流水线门禁,阻止有严重问题的代码合并。默认 falseprompt_output:将发送给 AI 的完整 prompt 输出到指定文件路径。用于调试和查看实际发送的评审内容,包括系统提示词和代码 diff。不指定则不输出在 .cnb.yml 中配置:
main:
pull_request:
- stages:
- name: code-review
image: cnbcool/code-review:latest
settings:
# 输出文件路径
output: ./code_review.json
context: 10
comment: true
max_comments: 10
max_diff_size: 100000
# 是否在代码评审发现严重问题时返回非零退出码(流水线会失败)
fail_on_critical: false
# 将 prompt 输出到文件(调试用)
# prompt_output: ./prompt.txt
code_review.json 评审结果为 JSON 格式:
{
"status": "passed | needs_modification | critical",
"issues": [
{
"severity": "critical | warning | info",
"file": "文件路径",
"start_line": 42,
"end_line": 45,
"problem": "问题描述",
"suggestion": "修复建议"
}
]
}
passed:代码质量良好,可以合并needs_modification:存在需要修改的问题critical:存在严重问题,必须修复critical:严重问题(安全漏洞、严重 Bug),必须修复warning:中等问题(潜在风险、代码质量),建议修复info:小问题/建议(代码风格、最佳实践),可选修复0:评审完成,无严重问题1:评审失败或运行错误2:发现严重问题(需启用 fail_on_critical)