logo
5
4
Login
feat: 支持评分和最大评论数两参数同时有效

AI 代码评审

支持使用 AI 进行四类操作,代码评审、PR 标题和描述的可读性检测、提交注释可读性检测、变更总结。

注意:结果仅供参考,不建议作为最终依据。

镜像名

cnbcool/ai-review

参数说明

  • type: 操作类型,默认为 code-review
    • code-review: 代码评审
    • pr-info-readability-check: PR 标题和描述的可读性检测
    • commit-message-readability-check: 提交注释可读性检测
    • diff-summary: 变更总结
  • message: type=commit-message-readability-check 时,可指定 message 参数,表示提交注释,不指定默认取 CNB_COMMIT_MESSAGE
  • pr_comment: truefalse,默认为 true。是否将 pr 评论发表为 pull_request 行内评论。type=code-review 时有效
  • max_comments: 最大评论数,最多 10 条。type=code-review 时有效。max_commentsscore_for_add_comment 两个参数同时设置时都有效,都不设置时,默认发表 1 条评论。
  • prompt_output_file: 非必填,文件相对路径,如 ./prompt.txt。如传入则将 prompt 保存到文件中。
  • result_output_file: 非必填,文件相对路径,如 ./result.txt。如传入则将 ai 输出结果保存到文件中。
  • score_for_add_comment: 非必填,type=code-reviewpr_comment 为 true 时,可指定此参数,表示评论分数阈值。低于这个分数的评审意见才发评论到 PR。max_commentsscore_for_add_comment 两个参数同时设置时都有效,都不设置时,默认发表 1 条评论。
  • ai_chat_url: 非必填,AI 对话服务地址。例如 https://ai.xxx.com/chat/completions。不传默认使用 CNB 提供的 AI 服务。
  • ai_token: 非必填,AI 对话服务 token。不传默认使用 CNB 提供的 AI 服务的 token。
  • ai_model: 非必填,AI 对话服务模型。不传默认使用 CNB 提供的 AI 服务的模型。

输出结果

  • pr-info-readability-check: 输出环境变量名 status,值为 yes 或 no
  • commit-message-readability-check: 输出环境变量名 status,值为 yes 或 no
  • diff-summary: 输出环境变量名 summary,表示变更总结内容

在 CNB 中使用

代码评审

默认会将 ai 评审意见发送评论到 pr,目前仅支持发送一条评论

main: pull_request: - stages: - name: 代码评审 image: cnbcool/ai-review:latest settings: type: code-review

PR 标题和描述的可读性检测

main: pull_request: - stages: - name: 标题和描述的可读性检测 image: cnbcool/ai-review:latest settings: type: pr-info-readability-check exports: status: STATUS - name: 标题和描述的可读性检测结果 script: | case "${STATUS}" in yes) echo "✅ 标题和描述的可读性检测通过" ;; no) echo "⚠️ 标题和描述的可读性检测不通过" exit 1 ;; esac

提交注释的可读性检测

main: push: - stages: - name: 提交注释的可读性检测 image: cnbcool/ai-review:latest settings: type: commit-message-readability-check exports: status: STATUS - name: 提交注释的可读性检测结果 script: | case "${STATUS}" in yes) echo "✅ 提交注释的可读性检测通过" ;; no) echo "⚠️ 提交注释的可读性检测不通过" exit 1 ;; esac

变更总结

main: pull_request: - stages: - name: 变更总结 image: cnbcool/ai-review:latest settings: type: diff-summary exports: summary: SUMMARY - name: 输出变更总结 script: echo $SUMMARY