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。 - 透明報告:摘要評論會明確說明哪些內容未被審查(例如,被截斷的差異或被忽略的檔案)。
相關
- 專案
- 專案
- 專案
- 專案