cirolini/genai-code-review

GitHub Action that reviews pull request diffs with an LLM and posts the comments on the PR

解决的问题

该项目提供一个 GitHub Action,使用大型语言模型(LLMs)自动审查拉取请求的差异,并发布行内评论。它特别解决了「审查疲劳」问题,通过实施评论预算机制,仅突出显示最关键的发现,而不是让评审者被大量低价值评论淹没。

工作原理

  1. 过滤:在将数据发送给 LLM 之前,先移除匹配 ignore_paths 的文件(如锁文件或生成代码)。
  2. 增量审查:在后续推送时,仅分析自上次审查以来的新提交。
  3. 分块处理:将差异拆分为多个块以适应模型的上下文窗口;无法容纳的内容将在摘要中报告。
  4. 基于模式的分析:模型根据 JSON 模式(包括严重性、置信度和理由)生成发现。如果输出验证失败,工具会尝试一次修复。
  5. 验证:检查发现是否与差异匹配,确保其能在 GitHub 上正确放置。无效的放置将移至摘要。
  6. 发布:将按严重性和置信度排序的前 max_comments 个发现作为分组审查发布,并更新固定摘要评论。

适用人群

使用 GitHub 并希望获得专注且高信号 AI 辅助代码审查的开发者和团队,尤其适用于使用 OpenAI、Anthropic、Google Gemini 或自托管 OpenAI 兼容服务器(如 Ollama、vLLM)的用户。

主要亮点

  • 评论预算:通过限制行内评论数量,并在摘要中明确列出被抑制的发现,防止评审者疲劳。
  • 广泛的提供商支持:支持 Gemini、OpenAI、Anthropic 以及任何 OpenAI 兼容 API。
  • 安全优先设计:将差异视为不受信任的数据,使用哨兵防止提示注入,并避免在 fork PR 中使用 pull_request_target
  • 零磁盘占用:通过 API 读取拉取请求,无需 actions/checkout
  • 透明报告:摘要评论会明确说明哪些内容未被审查(例如,被截断的差异或被忽略的文件)。

相关

  • 项目
  • 项目
  • 项目
  • 项目