gemini-reviewer-core

module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 18, 2025 License: MIT

README

🤖 Gemini Reviewer Core

Language Go Version GitHub tag (latest by date)

Gemini Reviewer Core は、Google Gemini API を活用し、Gitリポジトリのブランチ間の差分を分析してAIコードレビューを自動生成するためのコアライブラリです。クリーンなアーキテクチャ設計により、Git操作、AI通信、プロンプト管理といった外部依存性を完全に分離しています。

✨ 技術スタック (Technology Stack)

要素 技術 / ライブラリ 役割
言語 Go (Golang) ツールの開発言語。クロスプラットフォームでの高速な実行を実現します。
Git 操作 go-git クローン、フェッチ、3-dot diff (共通祖先からの差分) の取得まですべてを Go のコード内で完結させ、ssh-key-pathに基づくSSH認証とホストキー検証の設定を統合しました。
I/O 連携 github.com/shouni/go-remote-io GCSとローカルファイルシステムへのI/O操作を抽象化し、GCSへのレビュー結果保存を実現します。
Markdown to HTML github.com/shouni/go-text-format AIが出力したMarkdown形式のレビュー結果を、スタイル付きの完全なHTMLドキュメントに変換・レンダリングするために使用します。
AI モデル Google Gemini API 取得したコード差分を分析し、レビューコメントを生成するために使用します。(温度設定による応答制御を適用済み)

✨ 主要な機能と特徴

1. 🔍 高度なGit差分分析
  • SSHネイティブ対応: go-git を使用し、外部のSSHコマンドに依存せず、ssh-key-path 指定によるセキュアなSSH認証とホストキー検証をサポートします。
  • 正確な差分取得: ベースブランチとフィーチャーブランチ間のマージベース(共通祖先)を基準とした 3-dot diff (A...B) を取得し、正確でクリーンな差分のみをAIに提供します。
2. 🧱 責務の厳密な分離
  • アダプターパターンの採用: Git操作、Gemini APIへの通信は、それぞれ独立したアダプターpkg/adapters)として実装されており、コアロジックはこれらのインターフェース(ポート)に依存します。
  • プロンプト管理の集中: プロンプトテンプレート (prompt_release.md など) の埋め込みとデータ注入は pkg/prompts パッケージに集約され、AIとの対話戦略を一元管理します。
3. 💾 柔軟なI/Oと出力
  • リモートI/Oサポート: go-remote-io を活用し、ローカルファイルへの出力に加え、Google Cloud Storage (GCS) へのレビュー結果の保存に対応します。
  • HTMLレンダリング: AIのMarkdown出力を、組み込みテンプレートとCSSを使用した完全なHTMLドキュメントに変換し、視認性の高いレビュー結果を提供します。

📐 ライブラリ構成

このライブラリは、クリーンアーキテクチャに基づき、コアロジックを外部のインフラストラクチャから分離しています。特に、アダプター層 (pkg/adapters) とプロンプト層 (pkg/prompts) が、外部依存の責務を負います。

gemini-reviewer-core
├── pkg
│   ├── adapters  # 外部システムへの接続層 (Port and Adapter パターン)
│   │   ├── gemini_adapter.go # Gemini API通信の実装
│   │   ├── git_service.go    # go-gitを使用したGit操作の実装
│   │   └── html_runner.go    # go-text-formatを使用したHTML変換の実装
│   └── prompts   # AIプロンプトのデータとロジック管理
│       ├── template_builder.go # テンプレートの選択とデータ注入ロジック
│       ├── template_data.go    # プロンプトの入力データ構造
│       └── prompt_*.md         # go:embed される生プロンプトファイル

📜 ライセンス (License)

このプロジェクトは MIT License の下で公開されています。

Directories

Path Synopsis
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL