AI-powered Pull Request Agent for GitHub - Semantic Kernelを使用したC#製PRレビュー・要約・承認ツール
サーバーレス・GitHub Actionsで動作
- PRレビュー: AIがコード変更を分析し、構造化されたレビューを提供
- PR要約: 変更内容を簡潔に要約
- PR承認: レビュー結果に基づき、AIが承認可否を判断して自動承認
- マルチエージェントアーキテクチャ: ReviewAgentとApprovalAgentが連携して判断
- OpenAI互換エンドポイント対応: 柔軟なAIバックエンド選択
- リポジトリ別設定:
.github/pragent.ymlでカスタムプロンプト・設定可能
ワークフローファイルをコピーせず、PRAgentリポジトリを参照して使用します。
自分のリポジトリに .github/workflows/pr-review.yml を作成:
name: PR Review
on:
pull_request:
types: [opened, synchronize]
permissions:
contents: read
pull-requests: write
jobs:
pr-agent:
uses: actbit/PRAgent/.github/workflows/pragent-native.yml@main
with:
pr_number: ${{ github.event.pull_request.number }}
command: review
secrets:
ai_api_key: ${{ secrets.AI_API_KEY }}Secretsを設定:
Settings → Secrets and variables → Actions → New repository secret
| Secret | 値 |
|---|---|
AI_API_KEY |
OpenAI APIキー(sk-...) |
完了: PRを作成するだけで自動レビューが実行されます。
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm test
pr-agent:
uses: actbit/PRAgent/.github/workflows/pragent-native.yml@main
needs: test # テスト成功後のみ実行
with:
pr_number: ${{ github.event.pull_request.number }}
secrets:
ai_api_key: ${{ secrets.AI_API_KEY }}完全なカスタマイズが必要な場合、ワークフローファイルをコピーして使用します。
このリポジトリのファイルを自分のリポジトリにコピーします:
.github/workflows/pragent-native.yml- Native版(高速).github/workflows/pragent-docker.yml- Docker版(環境依存なし)
jobs:
pr-agent:
uses: actbit/PRAgent/.github/workflows/pragent-docker.yml@main
with:
pr_number: ${{ github.event.pull_request.number }}
command: review
secrets:
ai_api_key: ${{ secrets.AI_API_KEY }}1. GitHub Secrets:
Settings → Secrets and variables → Actions → New repository secret
| Secret | 値 | 取得方法 |
|---|---|---|
AI_API_KEY |
OpenAI APIキー(sk-...) |
OpenAI API Keys |
注:
GITHUB_TOKENはGitHub Actionsが自動的に提供します(設定不要)
2. GitHub Personal Access Token(手動実行の場合のみ)
ローカル環境や手動実行で使用する場合、GitHub Personal Access Token が必要です:
-
GitHubでTokenを作成:
Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token (classic) -
権限を設定:
repo(フルコントロール)pull_requests:write(PRコメント・承認用)
-
Tokenをコピー(一度しか表示されません)
GitHub Variables(オプション):
Settings → Secrets and variables → Actions → Variables → New repository variable
| Variable | 値(デフォルト) |
|---|---|
AI_ENDPOINT |
https://api.openai.com/v1 |
AI_MODEL_ID |
gpt-4o-mini |
PRを作成・更新すると自動で実行されます(30秒〜1分)
Actionsタブ
├── PRAgent (Native) → Run workflow (高速)
└── PRAgent (Docker) → Run workflow (環境依存なし)
手動実行では、以下を選択できます:
- PR番号
- コマンド(review/summary/approve)
| 項目 | Native(参照) | Native(コピー) | Docker(参照) | Docker(コピー) |
|---|---|---|---|---|
| 導入方法 | uses: で参照 |
ファイルをコピー | uses: で参照 |
ファイルをコピー |
| 自動実行 | ✓ | ✓ | - | - |
| 手動実行 | ✓ | ✓ | ✓ | ✓ |
| 実行速度 | 30秒〜1分 | 30秒〜1分 | 2〜4分 | 2〜4分 |
| 更新の反映 | 自動 | 手動 | 自動 | 手動 |
| カスタマイズ | 限定的 | 完全 | 限定的 | 完全 |
| 用途 | 通常使用(推奨) | カスタムが必要 | トラブルシューティング | トラブルシューティング |
git clone <repository-url>
cd PRAgent
dotnet build -c Release方法1: 環境変数(推奨)
# OpenAI API設定
export AISettings__Endpoint=https://api.openai.com/v1
export AISettings__ApiKey=your-api-key
export AISettings__ModelId=gpt-4o-mini
# GitHub Token(Personal Access Token)
export PRSettings__GitHubToken=your-github-tokenGitHub Tokenの取得方法:
GitHub Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token (classic)必要な権限:
repo(フルコントロール)
方法2: appsettings.json
{
"AISettings": {
"Endpoint": "https://api.openai.com/v1",
"ApiKey": "your-api-key",
"ModelId": "gpt-4o-mini"
},
"PRSettings": {
"GitHubToken": "your-github-token"
}
}# ヘルプ
dotnet run -- help
# PRレビュー
dotnet run -- review --owner "org" --repo "repo" --pr 123 --post-comment
# PR要約
dotnet run -- summary -o "org" -r "repo" -p 123 --post-comment
# 手動承認
dotnet run -- approve -o "org" -r "repo" -p 123 --comment "LGTM"
# AI判断で自動承認
dotnet run -- approve -o "org" -r "repo" -p 123 --auto --threshold minor| 値 | 説明 |
|---|---|
critical |
Criticalな問題がない場合のみ承認 |
major |
Major以上の問題がない場合のみ承認 |
minor |
Minor以上の問題がない場合のみ承認(デフォルト) |
none |
常に承認 |
対象リポジトリに .github/pragent.yml を配置することで、カスタム設定が可能です:
pragent:
enabled: true
# システムプロンプトの上書き
system_prompt: |
あなたは経験豊富なコードレビュアーです。
以下の点に特に注意してください:
- セキュリティ脆弱性
- パフォーマンス問題
- 社内コーディング規約への準拠
# レビュー設定
review:
enabled: true
auto_post: false
# 要約設定
summary:
enabled: true
post_as_comment: true
# 承認設定
approve:
enabled: true
auto_approve_threshold: "minor"
require_review_first: true
# 除外パス
ignore_paths:
- "*.min.js"
- "dist/**"
- "node_modules/**"| プラン | 無料枠 | 超過料金 |
|---|---|---|
| パブリックリポジトリ | 無料(無制限) | - |
| プライベートリポジトリ | 2000分/月 | $0.008/分 |
実用例: PRレビュー1回あたり1分 × 月100回 = 100分/月 → 無料
サーバーは一切不要です。
┌─────────────┐
│ ReviewAgent │ ← コードレビューを実行
└──────┬──────┘
│ レビュー結果
▼
┌──────────────┐
│ApprovalAgent │ ← レビュー結果に基づき承認判断
└──────────────┘
│
▼
GitHub PR 承認
- ReviewAgent: コードの品質、セキュリティ、パフォーマンスを分析
- ApprovalAgent: 設定されたしきい値に基づき承認可否を判断
- SummaryAgent: PR変更を簡潔に要約
OpenAI互換エンドポイントであれば動作します:
- OpenAI (GPT-4, GPT-4o, GPT-4o-mini)
- Azure OpenAI
- 各種ローカルLLM (Ollama, LM Studio等)
PRAgent/
├── .github/
│ └── workflows/ # GitHub Actionsワークフロー
│ ├── ci.yml # CI(ビルド&テスト)
│ ├── pr-review.yml # このリポジトリのPR用AIレビュー
│ ├── pragent-native.yml # 外部リポジトリ参照用(Native版)
│ └── pragent-docker.yml # 外部リポジトリ参照用(Docker版)
├── PRAgent/
│ ├── CommandLine/ # CLIコマンド解析・ハンドラー
│ ├── Configuration/ # DI設定
│ ├── Plugins/ # プラグイン
│ │ ├── GitHub/ # GitHub操作プラグイン
│ │ └── PRAnalysis/ # AI分析プラグイン
│ ├── Services/ # サービス層
│ ├── Agents/ # エージェント実装
│ ├── Models/ # 設定モデル
│ └── Program.cs # エントリーポイント
└── PRAgent.Tests/ # テストプロジェクト
- Program.cs: 510行 → 120行(76%削減)
- CLIコマンド構造: 専用ハンドラークラスに分離
- 設定管理: ServiceCollectionExtensionsに集約
- 保守性: 各機能が独立したクラスに配置
MIT License
注意: このツールはAIによる自動レビューを補助するものです。最終的な承認判断は人間が行うことを推奨します。