CodeRabbit Pro
这是CodeRabbit的旧版本,现在处于维护模式。我们推荐从CodeRabbit安装专业版。专业版是全面重新设计的,提供显著更好的评论功能,能从您的使用中学习并随着时间的推移不断改进。CodeRabbit Pro对开源项目是免费的。
基于AI的PR审核和摘要工具
概述
CodeRabbit ai-pr-reviewer
是一个基于AI的代码审核和摘要工具,专为GitHub拉取请求设计,使用了OpenAI的gpt-3.5-turbo
和gpt-4
模型。它设计用于作为GitHub Action,每个拉取请求和评论都可以进行配置运行。
审核功能:
- PR摘要生成:生成拉取请求中更改的摘要和发布说明。
- 逐行代码更改建议:逐行审核更改,并提供代码更改建议。
- 持续增量审核:审核在每个提交内进行,而不是一次性审核整个拉取请求。
- 高效且减少噪音:增量审核通过跟踪提交和拉取请求基准之间的变更文件,节省OpenAI成本并减少噪音。
- “轻量级”摘要模型:设计用于“轻量级”摘要模型(例如
gpt-3.5-turbo
)和“重型”审核模型(例如gpt-4
)。为了获得最佳效果,请将gpt-4
用作“重型”模型,因彻底的代码审查需要强大的推理能力。 - 与机器人对话:支持在代码行或整个文件的上下文中与机器人对话,有助于提供上下文、生成测试用例和减少代码复杂性。
- 智能审核跳过:默认情况下,对于简单更改(例如拼写错误修正)和大部分看起来不错的更改,跳过深入审核。可以通过设置
review_simple_changes
和review_comment_lgtm
为true
来禁用此功能。 - 可定制的提示:可根据特定的审核过程或更改审核目标来定制
system_message
,summarize
和summarize_release_notes
提示。
要使用此工具,您需要将提供的YAML文件添加到您的代码库,并配置所需的环境变量,例如GITHUB_TOKEN
和OPENAI_API_KEY
。有关使用、示例、贡献和常见问题的更多信息,请参阅以下部分。
安装说明
ai-pr-reviewer
作为GitHub Action运行。将以下文件添加到您的代码库.github/workflows/ai-pr-reviewer.yml
中:
name: Code Review
permissions:
contents: read
pull-requests: write
on:
pull_request:
pull_request_review_comment:
types: [created]
concurrency:
group:
${{ github.repository }}-${{ github.event.number || github.head_ref ||
github.sha }}-${{ github.workflow }}-${{ github.event_name ==
'pull_request_review_comment' && 'pr_comment' || 'pr' }}
cancel-in-progress: ${{ github.event_name != 'pull_request_review_comment' }}
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: coderabbitai/ai-pr-reviewer@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
with:
debug: false
review_simple_changes: false
review_comment_lgtm: false
环境变量
GITHUB_TOKEN
:这应该已经在GitHub Action环境中可用。用于向拉取请求添加评论。OPENAI_API_KEY
:用于与OpenAI API进行身份验证。您可以在这里获取。请将此密钥添加到您的GitHub Action秘密中。OPENAI_API_ORG
:(可选)如果您有多个组织,可使用此选项指定与OpenAI API使用的组织。请将此密钥添加到您的GitHub Action秘密中。
模型:gpt-4
和gpt-3.5-turbo
推荐在较轻任务(如总结变更)中使用gpt-3.5-turbo
(在配置中为openai_light_model
),在更复杂的审核和评论任务中使用gpt-4
(在配置中为openai_heavy_model
)。
成本:gpt-3.5-turbo
非常便宜。gpt-4
则贵了好几个数量级,但结果要好得多。通常,我们为20人的开发团队使用gpt-4
进行审核和评论每天花费约20美元。
提示和配置
参见:action.yml
提示:您可以通过配置system_message
值来改变机器人的个性。例如,要审核文档/博客文章,可以使用以下提示:
博客审核提示
system_message: |
你是`@coderabbitai`(又名`github-actions[bot]`),一个由OpenAI训练的语言模型。你的目的是充当一个高度经验丰富的DevRel(开发者关系)专业人士,重点关注云原生基础设施。
公司背景 -
CodeRabbit 是一个AI驱动的代码审核工具。它提高了代码质量,减少了人工的工作量。提供上下文感知、逐行反馈,突出关键更改,支持与机器人的互动,并允许您直接从GitHub提交建议。
在审阅或生成内容时,重点关注以下关键领域 -
- 准确性
- 相关性
- 清晰度
- 技术深度
- 行动号召
- SEO优化
- 品牌一致性
- 语法和写作风格
- 拼写错误
- 超链接建议
- 图形或图像(如有需要,建议使用Dall-E图像提示)
- 同理心
- 参与度
与CodeRabbit对话
您可以回复由此操作做出的审核评论,并根据差异上下文获得响应。另外,您可以在评论中@机器人(@coderabbitai
)邀请它进行对话。
示例:
@coderabbitai 请为此文件生成一个测试计划。
注意:审核评论是对拉取请求中的差异或文件进行的评论。
忽略PR
有时忽略某个PR是有用的。例如,如果您使用此操作审阅文档,可以忽略只更改文档的PR。要忽略PR,请在PR描述中添加以下关键词:
@coderabbitai: ignore
示例
一些ai-pr-reviewer
完成的审核
任何关于改进提示的建议或拉取请求都非常感谢。
贡献
开发
首先,您需要有一个比较现代的
node
版本,已经在node 17+上进行了测试。
安装依赖项
$ npm install
构建TypeScript并将其打包分发
$ npm run build && npm run package
常见问题
审阅来自分支的拉取请求
GitHub Actions限制了来自分支代码库提取请求的秘密访问。要启用此功能,您需要在工作流文件中使用pull_request_target
事件,而不是pull_request
事件。注意,使用pull_request_target
时,您需要额外配置以确保检出正确的提交:
name: Code Review
permissions:
contents: read
pull-requests: write
on:
pull_request_target:
types: [opened, synchronize, reopened]
pull_request_review_comment:
types: [created]
concurrency:
group:
${{ github.repository }}-${{ github.event.number || github.head_ref ||
github.sha }}-${{ github.workflow }}-${{ github.event_name ==
'pull_request_review_comment' && 'pr_comment' || 'pr' }}
cancel-in-progress: ${{ github.event_name != 'pull_request_review_comment' }}
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: coderabbitai/ai-pr-reviewer@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
with:
debug: false
review_simple_changes: false
review_comment_lgtm: false
另请参阅: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target
检查与OpenAI服务器之间的消息
在工作流文件中设置debug: true
以启用调试模式,这将显示消息。
免责声明
- 您的代码(文件、差异、PR标题/描述)将被发送到OpenAI的服务器进行处理。在将此操作用于您的私有代码库之前,请与您的合规团队核对。
- 使用OpenAI的API,而不是在其门户上的ChatGPT会话。OpenAI API有比其ChatGPT产品更为保守的数据使用政策。
- 此操作与OpenAI无关。