← 返回首頁

開源 AI 程式碼審查系統 OpenReview 實作解析

OPM
OPM
@mihirtwt
91🔁 8
𝕏 (Twitter)🔥
AI 中文摘要Claude 生成

開源 AI 程式碼審查系統 OpenReview 實作解析。

OpenReview 是一個正在開發中的開源 AI 程式碼審查系統,旨在透過整合向量搜尋與全程式庫索引,提供具備實際程式碼脈絡的審查體驗。該專案目前正積極開發中,目標是實現與 CodeRabbit 等商業產品的功能對等,並作為開發者深入理解複雜系統運作的實作範例。

核心架構與索引機制
系統透過 GitHub Webhook 觸發事件,並在使用者安裝時自動對程式庫進行索引。其資料流設計包含以下關鍵步驟:

  • 系統會自動過濾無關檔案,排除 node_modules、二進位 asset、建置產物(如 dist.next)以及 minified 檔案。
  • 索引流程採用分塊策略(Chunking),以 500 行為單位進行切分,並保留 50 行重疊以維持上下文連續性。
  • 每個檔案區塊會生成向量嵌入(Embeddings)並存入 Pinecone 向量資料庫,以便後續進行語意搜尋。
  • 採用「非同步」佇列架構處理索引任務,確保系統在高負載下的穩定性與可擴展性。

智慧化差異分析與優化
為了避免全量重新索引帶來的資源浪費,系統實作了基於差異(Diff-based)的索引邏輯:

  • 系統會比較提交前後的雜湊值(SHA-256),僅針對變更的檔案進行處理,未變更檔案則直接跳過。
  • 透過 GitHub Compare API 僅擷取變更檔案(新增、修改、刪除),並從索引中移除已刪除的檔案。
  • 針對強制推送(Force push)、首次提交或大型差異(超過 500 個檔案)等邊緣情況,系統會自動降級回全量索引,確保資料一致性。

自動化審查流程
當使用者發起 Pull Request 時,系統會自動啟動審查工作流:

  • 透過 pr-processor 獲取詳細的程式碼差異,並將任務加入審查佇列。
  • 利用向量搜尋檢索程式庫中的相似程式碼,為 AI 提供必要的上下文脈絡。
  • 由 AI (Gemini) 生成審查建議,內容包含行內註解(Inline comments)、詳細摘要,甚至包含序列圖與 walkthrough,並透過 GitHub 介面回饋給使用者。

技術堆疊與發展藍圖
該專案採用 Monorepo 架構,全專案使用 TypeScript 開發,並整合 Turborepo 進行建置管理。目前已實現 PR 處理、向量索引與 AI 審查生成等核心功能。開發者規劃的未來藍圖包括:

  • 互動式功能:聊天介面以進行後續追問、程式碼解釋。
  • 審查增強:自定義審查規則(安全性、效能、最佳實踐)、測試生成。
  • 管理與商業化:多租戶管理、訂閱計費、API 外部存取介面。
  • 進階分析:提交層級分析、審查自動化規則配置。