cirolini/genai-code-review
GitHub Action that reviews pull request diffs with an LLM and posts the comments on the PR
解决的问题
该项目提供一个 GitHub Action,使用大型语言模型(LLMs)自动审查拉取请求的差异,并发布行内评论。它特别解决了「审查疲劳」问题,通过实施评论预算机制,仅突出显示最关键的发现,而不是让评审者被大量低价值评论淹没。
工作原理
- 过滤:在将数据发送给 LLM 之前,先移除匹配
ignore_paths的文件(如锁文件或生成代码)。 - 增量审查:在后续推送时,仅分析自上次审查以来的新提交。
- 分块处理:将差异拆分为多个块以适应模型的上下文窗口;无法容纳的内容将在摘要中报告。
- 基于模式的分析:模型根据 JSON 模式(包括严重性、置信度和理由)生成发现。如果输出验证失败,工具会尝试一次修复。
- 验证:检查发现是否与差异匹配,确保其能在 GitHub 上正确放置。无效的放置将移至摘要。
- 发布:将按严重性和置信度排序的前
max_comments个发现作为分组审查发布,并更新固定摘要评论。
适用人群
使用 GitHub 并希望获得专注且高信号 AI 辅助代码审查的开发者和团队,尤其适用于使用 OpenAI、Anthropic、Google Gemini 或自托管 OpenAI 兼容服务器(如 Ollama、vLLM)的用户。
主要亮点
- 评论预算:通过限制行内评论数量,并在摘要中明确列出被抑制的发现,防止评审者疲劳。
- 广泛的提供商支持:支持 Gemini、OpenAI、Anthropic 以及任何 OpenAI 兼容 API。
- 安全优先设计:将差异视为不受信任的数据,使用哨兵防止提示注入,并避免在 fork PR 中使用
pull_request_target。 - 零磁盘占用:通过 API 读取拉取请求,无需
actions/checkout。 - 透明报告:摘要评论会明确说明哪些内容未被审查(例如,被截断的差异或被忽略的文件)。
相关
- 项目
- 项目
- 项目
- 项目