VoltAgent を使用した AI 駆動の GitHub Pull Request レビューエージェント
このプロジェクトは、AI エージェントを使用してGitHub Pull Requestの自動レビューを行うシステムです。複数の専門エージェントが協力して、コード品質、セキュリティ、スタイルなどの観点から包括的なレビューを提供します。
- マルチエージェント分析: 専門性の異なる複数のAIエージェントによる詳細な分析
- 包括的レビュー: コード品質、セキュリティ、パフォーマンス、スタイルを総合評価
- 自動コメント投稿: GitHub PRに直接レビューコメントを投稿
- リアルタイム分析: PR作成・更新時の自動トリガー
- 詳細レポート: GitHub Actions Job Summary での詳細な分析結果表示
- スーパーバイザーエージェント (
supervisor) - 全体の調整と品質管理 - コード解析エージェント (
code-analysis) - コード品質とメトリクス分析 - セキュリティエージェント (
security) - セキュリティ脆弱性とベストプラクティス - スタイルエージェント (
style) - コーディングスタイルと規約 - サマリーエージェント (
summary) - 結果統合と最終レポート生成
- Node.js 21.0.0 以上
- GitHub Actions 環境(自動レビュー用)
- AIプロバイダーAPIキー(OpenAI、Anthropic、Googleのいずれか)
# リポジトリをクローン
git clone https://github.com/your-username/pr-review-agent.git
cd pr-review-agent
# 依存関係をインストール
npm install
# TypeScriptをビルド
npm run build.env ファイルを作成し、以下の環境変数を設定:
# GitHub API
GITHUB_TOKEN=your_github_token_here
# AI Provider (いずれか一つ以上を設定)
OPENAI_API_KEY=your_openai_api_key_here
# ANTHROPIC_API_KEY=your_anthropic_api_key_here
# GOOGLE_AI_API_KEY=your_google_ai_api_key_here
# ログ設定
LOG_LEVEL=info
# レビュー設定 (オプション)
AI_REVIEW_MAX_FILES=20
AI_REVIEW_MAX_LINES=5000リポジトリの Settings > Secrets and variables > Actions で以下のシークレットを追加:
OPENAI_API_KEY(またはその他のAIプロバイダーキー)GITHUB_TOKENは自動で設定されます
プロジェクトには以下のGitHub Actionsワークフローが含まれています:
name: PR Review Agent
on:
pull_request:
types: [opened, synchronize, reopened]
branches: [main, master]
permissions:
contents: read
pull-requests: write
issues: writeリポジトリの Settings > Secrets and variables > Actions で以下を設定:
| シークレット名 | 必須 | 説明 |
|---|---|---|
ANTHROPIC_API_KEY |
❌ | Anthropic Claude APIキー |
OPENAI_API_KEY |
❌ | OpenAI GPT APIキー |
GOOGLE_AI_API_KEY |
❌ | Google Gemini APIキー |
注意: 少なくとも1つのAI APIキーが必要です。GITHUB_TOKENは自動で提供されます。
- Pull Request が作成・更新されると自動でトリガー
- Node.js 21環境をセットアップ
- 依存関係をインストールしプロジェクトをビルド
- PR情報を環境変数として渡してレビューエージェントを実行
- レビュー結果をPRコメントとして自動投稿
- Actions タブ: 実行ログとJob Summaryで詳細分析結果を確認
- Pull Request: AIレビューコメントが自動投稿
- Checks セクション: PRページでレビュー状況を確認
# 開発モードで実行
npm run dev
# テストを実行
npm test
# 本番モードで実行
npm start# 特定のPRをレビュー
node dist/index.js --pr 123 --repo owner/repository
# 設定のテスト
node dist/index.js --test-config複数のAIプロバイダーに対応しています:
- OpenAI GPT-4: 高い精度の分析(推奨)
- Anthropic Claude: 安全性重視の分析
- Google Gemini: コスト効率の良い分析
src/utils/config.ts でレビューの詳細設定が可能:
export const config = {
review: {
maxFiles: 20, // 分析する最大ファイル数
maxLines: 5000, // 分析する最大行数
skipDraftPR: true, // ドラフトPRをスキップ
languages: ['ts', 'js', 'py', 'java'], // 対象言語
},
agents: {
timeout: 30000, // エージェント実行タイムアウト
retries: 3, // リトライ回数
},
};各問題に対して以下の情報を提供:
- 🔴 重大: 即座に修正が必要
- 🟠 エラー: 修正を強く推奨
- 🟡 警告: 改善を推奨
- ℹ️ 情報: 参考情報や学習機会
- 全体スコア: 0-100のコード品質スコア
- 推奨事項: Approve / Request Changes / Comment
- カテゴリ別分析: セキュリティ、品質、パフォーマンス等
# 1. 環境変数を設定
cp .env.example .env
# .envファイルにOPENAI_API_KEYを設定
# 2. ビルドとテスト
npm run build
npm test
# 3. エージェントの動作確認
npm run test:agents# GitHub Secretsに以下の環境変数を設定:
# OPENAI_API_KEY: OpenAI APIキー
# GITHUB_TOKEN: GitHubトークン(自動設定)# テスト用ブランチを作成
git checkout -b test/pr-review-demo
echo 'const password = "test123";' > demo-file.ts
git add demo-file.ts
git commit -m "test: demo PR for AI review"
git push origin test/pr-review-demo- GitHub ActionsのJob Summaryで詳細な分析結果を確認
- PRコメントで自動レビューを確認
- 各エージェントの分析結果を確認
# 環境変数を設定してワークフローを直接実行
GITHUB_TOKEN="your_token" \
GITHUB_REPOSITORY="owner/repo" \
node dist/index.js正常に動作している場合、以下のような結果が期待されます:
- ハードコードされたパスワードの検出
- SQLインジェクション脆弱性の検出
- XSS脆弱性の検出
- コード品質の評価
- 複雑度の分析
- パフォーマンス問題の検出
- 命名規則の確認
- フォーマットの問題検出
- ベストプラクティスの評価
- 統合されたレビュー結果
- 重要度別の問題整理
- 建設的な改善提案
# APIキーの確認
echo $OPENAI_API_KEY
# インターネット接続の確認
curl -I https://api.openai.com/v1/models
# 権限の確認
curl -H "Authorization: Bearer $OPENAI_API_KEY" https://api.openai.com/v1/models- Secrets設定の確認
- ワークフローファイルの構文確認
- ログの詳細確認
# 依存関係の再インストール
rm -rf node_modules package-lock.json
npm install
# TypeScriptビルドエラーの確認
npm run type-check
# Lintエラーの確認
npm run lint# 全テストを実行
npm test
# ウォッチモードでテスト
npm run test:watch
# エージェント動作確認テスト
npm run test:agents
# TypeScript型チェック
npm run type-checkこのプロジェクトでは Biome を使用してlintとformatを行っています。
# Linting(lint、format、import整理を一括チェック)
npm run check
# 自動修正
npm run check:fix
# Lintのみ
npm run lint
npm run lint:fix
# Formatのみ
npm run format
npm run format:fixVSCode での使用:
- Biome VSCode拡張をインストール
- 保存時の自動フォーマットが有効になります
- 設定ファイル(
.vscode/settings.json)で設定済み
詳細なログを有効にする:
LOG_LEVEL=debug npm run dev- このリポジトリをフォーク
- フィーチャーブランチを作成 (
git checkout -b feature/amazing-feature) - 変更をコミット (
git commit -m 'Add amazing feature') - ブランチにプッシュ (
git push origin feature/amazing-feature) - Pull Request を作成
- TypeScript を使用
- テストを含める
- ESLint ルールに従う
- コミットメッセージは日本語OK
このプロジェクトは MIT ライセンスの下で公開されています。詳細は LICENSE ファイルを参照してください。
問題や質問がある場合:
- Issues で報告
- Discussions で議論
- プロジェクトをスターして応援 ⭐