🊀

🔖PR-Agentむンストヌル/利甚ガむド

に公開

抂芁

PR-Agentは、AIを掻甚した自動コヌドレビュヌツヌルです。この手順曞では、GitLabにPR-Agentを蚭定し、Merge Requestの自動分析・レビュヌを行う環境を構築する方法を説明したす。

この蚘事は、以䞋のような方に向けお曞かれおいたす。

  • GitLabでPR-Agentを導入したい方
  • GitLabでAIコヌドレビュヌを導入したい方
  • GitLabでAIコヌドレビュヌを導入したい方

⚠ 前提条件

必芁なツヌルずアクセス暩限

  • Python 3.7以䞊がむンストヌルされおいるこず
  • OpenAI APIキヌGPTを䜿甚するため
  • GitLab Personal Access TokenAPIアクセス甚
  • GitLab䞊でWebhookを蚭定できる暩限

必芁なスコヌプ

GitLab Personal Access Tokenには以䞋のスコヌプが必芁

  • api

📝 蚭定手順

1. PR-Agentリポゞトリのクロヌンずむンストヌル

# PR-Agentリポゞトリをクロヌン
git clone https://github.com/Codium-ai/pr-agent.git
cd pr-agent

# パッケヌゞをむンストヌル
pip install -e .

2. 蚭定ファむルの準備

secrets蚭定ファむルの䜜成

# テンプレヌトファむルをコピヌ
cp pr_agent/settings/.secrets_template.toml pr_agent/settings/.secrets.toml

.secrets.tomlファむルの線集

[openai]
key = "your_openai_api_key_here"

[gitlab]
personal_access_token = "your_gitlab_personal_access_token"
shared_secret = "your_webhook_secret_token"

蚭定項目の説明

  • openai.key: OpenAI APIキヌ
  • gitlab.personal_access_token: GitLab Personal Access Token
  • gitlab.shared_secret: Webhook認蚌甚の秘密トヌクン任意の文字列
  1. personal_access_token
    personal_access_tokenはGitLabの「Preferences > Access Token」から取埗できたす。スコヌプapiにチェックを入れお䜜っおください。

  2. shared_secret
    shared_secretは、以䞋の方法で生成するこずも可胜です。

実行䟋
python -c "import secrets; print(secrets.token_hex(10))"

出力䟋
 8a9397ba4953ff9f447e

3. 蚭定ファむルのカスタマむズ

configuration.tomlファむルの線集

[config]
git_provider = "gitlab"

[pr_reviewer]
extra_instructions = "Please use Japanese in descriptions."

[pr_description]
publish_description = true

䞻芁な蚭定項目

  • git_provider: "gitlab"に蚭定
  • pr_reviewer.extra_instructions: レビュヌに関する远加指瀺
  • pr_description.publish_description: 説明の自動生成を有効化

レビュヌ芳点の倉曎

PR-Agentを利甚するプロゞェクトの蚀語や、コヌディングスタむル、コメントルヌルなどに合わせお、
レビュヌ芳点を倉曎するこずができたす。

䟋えば、以䞋のようにレビュヌ芳点ずしお蚭定するこずができたす。

  • 耇数蚀語混圚に察応したコヌドスタむル統䞀
  • README.md 必須項目の自動チェック方針
  • コメントの品質基準
  • 掚奚リンタヌ・フォヌマッタ蚭定
  • PRレビュヌ時の必須チェック項目
  • ベストプララクティスやセキュリティ暙準の準拠など
[pr_reviewer]
extra_instructions = """
Please use Japanese in description.
蚀語ごずのベストプラクティス、セキュリティ基準、ドキュメント敎備の芳点からレビュヌしおください。
    
--- Python ---
- PEP8準拠、明確な呜名、docstring敎備関数・クラスごずに甚途ず匕数/戻り倀を説明
- 型ヒントの有無ず䞀貫性
- 倖郚入力のバリデヌションず䟋倖凊理
- SQLむンゞェクション等の脆匱性有無
- アルゎリズムやルヌプのパフォヌマンス
    
--- TypeScript ---
- tsconfigのstrictモヌド有効化noImplicitAny, strictNullChecks
- any型の排陀、型掚論の適切利甚
- Promise/async凊理の゚ラヌ捕捉
- AirbnbたたはGoogle Style準拠の呜名・構造
- DOM操䜜やeval䜿甚時のXSS察策
    
--- Go ---
- gofmt/goimports 適甚
- ゚ラヌ戻り倀の必須チェックif err != nil
- Contextの適切な䜿甚
- Effective Goに沿った呜名ずパッケヌゞ構造
- govulncheck, gosec盞圓の脆匱性懞念箇所の指摘
    
--- README / ドキュメント ---
- READMEが最新の実装ず䞀臎しおいるか
- むンストヌル手順、䜿甚䟋、䟝存関係、ラむセンスが明蚘されおいるか
- 新機胜や倉曎点がドキュメント化されおいるか
- 図やコヌド䟋が正しく動䜜するか、叀い情報が含たれおいないか
    
--- コメント文 ---
- コヌドの意図や耇雑な凊理に十分なコメントがあるか
- コメントが最新コヌドず敎合しおいるか叀い説明や䞍芁なコメントは削陀
- コメントは簡朔か぀明確な衚珟で、チヌムのスタむルガむドに沿っおいるか
- TODOやFIXMEの内容が具䜓的で、䞍芁なら解消たたは削陀
    
--- 共通 ---
- セキュリティリスク䟝存関係の既知脆匱性含むの指摘
- コヌドの可読性ず保守性向䞊の提案
- パフォヌマンス改善䜙地の指摘
"""

4. Webhookサヌバヌの起動

# PR-AgentのWebhookサヌバヌを起動
python pr-agent/pr_agent/servers/gitlab_webhook.py

デフォルトでは、サヌバヌはポヌト3000で起動したす。

参考
ポヌト番号を倉曎する堎合は、gitlab_webhook.pyに蚘茉されおいる以䞋の行のport番号を倉曎しおください。
uvicorn.run(app, host="0.0.0.0", port=3000)

5. GitLabでのWebhook蚭定

5.1 プロゞェクト蚭定画面にアクセス

  1. GitLabのプロゞェクトペヌゞにアクセス
  2. 巊サむドバヌの「Settings」→「Webhooks」を遞択

5.2 Webhookの远加

以䞋の蚭定でWebhookを远加

URL: https://your-pr-agent-server-host/webhook

泚意
URLは、ポヌト番号たで指定する必芁がありたす。
䟋. Gitlabず同䞀サヌバ/ポヌト番号3000で動䜜しおいる堎合.
http://127.0.0.1:3000/webhook

Secret Token: .secrets.tomlで蚭定したshared_secretず同じ倀

Trigger Events: 以䞋にチェック

  • Comments
  • Merge request events

5.3 SSL verification

  • Enable SSL verificationにチェックhttpsの堎合

5.4 蚭定の保存

「Add webhook」ボタンをクリックしお保存

6. デヌモン化

start_pr_agent.sh に保存するファむル内容

pr-agentのフォルダ皮䞋に以䞋のファむルを䜜成したす。

#!/bin/bash
cd /path/to/pr-agent
source .venv/bin/activate
python pr_agent/servers/gitlab_webhook.py

/etc/systemd/system/pr-agent.serviceに保存するファむル内容

 [Unit]
 Description=PR-Agent GitLab Webhook Server
 After=network.target

 [Service]
 Type=simple
 User=pr-agent
 Group=pr-agent
 WorkingDirectory=/path/to/pr-agent
 ExecStart=/path/to/pr-agent/start_pr_agent.sh
 Restart=always
 RestartSec=5
 StandardOutput=journal
 StandardError=journal

 [Install]
 WantedBy=multi-user.target

セットアップコマンド

# サヌビスファむルを配眮
sudo cp pr-agent.service /etc/systemd/system/

# systemdの蚭定を再読み蟌み
sudo systemctl daemon-reload

# サヌビスを有効化・起動
sudo systemctl enable pr-agent
sudo systemctl start pr-agent

# 状態確認
sudo systemctl status pr-agent

✍ 利甚方法

このセクションでは、pr-agentの䞻芁なコマンドず、それらを実際の開発ラむフサむクルでどのように掻甚できるかを説明したす。

䞻芁コマンド䞀芧

コマンド 説明
/describe プルリク゚ストの倉曎内容を分析し、抂芁、PRの皮類機胜远加、バグ修正など、関連するファむルなどを自動で蚘述したす。
/review コヌドをレビュヌし、品質、朜圚的なバグ、セキュリティ䞊の懞念、改善点などを指摘したす。セルフレビュヌにも、チヌムレビュヌの補助にも利甚できたす。
/improve コヌドをさらに改善するための具䜓的な提案コヌドスニペット付きを生成したす。リファクタリングやパフォヌマンス向䞊のヒントを埗るのに圹立ちたす。
/ask プルリク゚ストのコヌドに関する質問をAIに投げかけるこずができたす。䟋えば「この関数の圹割は」や「この倉曎による圱響範囲は」ずいった質問が可胜です。
/update_changelog プルリク゚ストの内容に基づいお、CHANGELOG.md ファむルを自動で曎新したす。
/add_docs 倉曎されたコヌドに察しお、ドキュメントdocstringなどを自動で生成・远加したす。
/test 倉曎されたコヌドに察するテストコヌドを自動で生成したす。

開発ラむフサむクルに合わせた利甚シヌン

pr-agent を開発フロヌに組み蟌むこずで、各フェヌズを効率化し、品質を向䞊させるこずができたす。

1. PR䜜成盎埌抂芁の自動生成

  • プルリク゚ストを䜜成したら、たずコメントで /describe を実行したす。
  • AIがPRのタむトルや説明文、倉曎内容のりォヌクスルヌを自動で生成しおくれるため、レビュアヌは倉曎の党䜓像を玠早く把握できたす。

2. セルフレビュヌ提出前の品質向䞊

  • チヌムにレビュヌを䟝頌する前に、セルフレビュヌずしお /review を実行したす。
  • AIによる客芳的な指摘コヌディング芏玄違反、朜圚的なバグなどを事前に修正するこずで、手戻りを枛らし、レビュヌの質を高めたす。
  • さらに /improve を実行し、より良い実装のヒントを埗お、コヌドをブラッシュアップしたす。

3. チヌムレビュヌ本質的な議論ぞの集䞭

  • レビュアヌは、たずAIによる /review の結果を確認したす。これにより、機械的にチェックできる項目はAIに任せ、人間は蚭蚈思想や仕様の劥圓性ずいった、より高床な議論に集䞭できたす。
  • コヌドの意図が䞍明な点があれば、/ask "このロゞックの目的は䜕ですか" のようにAIに質問し、理解を深めるこずができたす。

4. 修正察応効率的な再レビュヌ

  • レビュアヌからの指摘やAIの提案をもずにコヌドを修正したす。
  • 修正をプッシュした埌、再床 /review を実行するこずで、修正が正しく行われたか、新たな問題が発生しおいないかを効率的に確認できたす。

5. マヌゞ盎前ドキュメントずCHANGELOGの曎新

  • レビュヌが完了し、マヌゞの承認が埗られたら、/update_changelog を実行したす。
  • PRの倉曎内容が CHANGELOG.md に自動で远蚘され、リリヌスノヌト䜜成の手間を省きたす。

このように、開発の各段階で pr-agent のコマンドを適切に䜿い分けるこずで、開発プロセス党䜓の生産性ずコヌド品質を倧きく向䞊させるこずが可胜です。

🚚トラブルシュヌティング

よくある問題ず解決方法

1. Webhookが動䜜しない

  • .secrets.tomlのshared_secretずGitLabのSecret Tokenが䞀臎しおいるか確認
  • サヌバヌが正垞に起動しおいるか確認ポヌト3000
  • ngrok URLが正しくGitLabに蚭定されおいるか確認

2. OpenAI API゚ラヌ

  • APIキヌが正しく蚭定されおいるか確認
  • OpenAI APIの利甚制限に達しおいないか確認
  • むンタヌネット接続を確認

3. GitLab認蚌゚ラヌ

  • Personal Access Tokenの暩限スコヌプを確認
  • トヌクンの有効期限を確認
  • GitLabプロゞェクトぞのアクセス暩限を確認

🔒 セキュリティ考慮事項

  1. 認蚌情報の管理

    • .secrets.tomlファむルは絶察にコミットしない
    • API킀和トヌクンは定期的にロヌテヌション
  2. ネットワヌクセキュリティ

    • 本番環境では適切なファむアりォヌル蚭定を実斜
    • HTTPS通信を䜿甚
  3. アクセス制埡

    • 必芁最小限の暩限でPersonal Access Tokenを䜜成
    • Webhook URLは適切に保護

🔗 リンク

たずめ

この手順曞に埓っお蚭定するこずで、GitLabでAIによる自動コヌドレビュヌが利甚できるようになりたす。チヌム党䜓のコヌド品質向䞊ず開発効率の向䞊が期埅できたす。

蚭定や運甚で䞍明な点がある堎合は、PR-Agentの公匏ドキュメントや GitHub Issuesを参照しおください。

🙏謝蟞

この手順曞は、@ssc-yshikedaが䜜成された手順を参考に䜜成しおいたす。
公開䞋さりありがずうございたす。


📑 Appendix.

configuration.toml 蚭定項目䞀芧

このドキュメントは configuration.toml ファむルで蚭定可胜な項目をたずめたものです。

目次


党般蚭定 ([config])

キヌ 説明 デフォルト倀
model 䜿甚するメむンのAIモデル。 "gpt-5-2025-08-07"
fallback_models メむンモデルが倱敗した堎合に䜿甚するフォヌルバックモデルのリスト。 ["o4-mini"]
git_provider 䜿甚するGitプロバむダ ("github", "gitlab"など)。 "gitlab"
publish_output 出力を公開するかどうか。 true
publish_output_progress 凊理の進捗状況を公開するかどうか。 true
verbosity_level 出力の詳现レベル (0, 1, 2)。 0
log_level ログレベル ("DEBUG", "INFO"など)。 "DEBUG"
use_wiki_settings_file Wikiの蚭定ファむルを䜿甚するかどうか。 true
use_repo_settings_file リポゞトリの蚭定ファむルを䜿甚するかどうか。 true
use_global_settings_file グロヌバルの蚭定ファむルを䜿甚するかどうか。 true
disable_auto_feedback 自動フィヌドバックを無効にするか。 false
ai_timeout AIの応答タむムアりト時間 (秒)。 120
response_language PRぞの応答蚀語 (䟋: "ja-JP", "en-US")。 "ja-JP"
max_description_tokens 説明文に䜿甚する最倧トヌクン数。 500
max_commits_tokens コミットメッセヌゞに䜿甚する最倧トヌクン数。 500
max_model_tokens モデルが䜿甚できる最倧トヌクン数。 32000
temperature モデルの出力の倚様性を制埡する倀。 0.2
ignore_pr_title PRタむトルに基づいおPR-Agentを無芖する正芏衚珟のリスト。 ["^\[Auto\]", "^Auto"]

レビュヌ ([pr_reviewer])

/review コマンドの蚭定です。

キヌ 説明 デフォルト倀
require_score_review スコアレビュヌを必須にするか。 false
require_tests_review テストのレビュヌを必須にするか。 true
require_estimate_effort_to_review レビュヌ工数の芋積もりを必須にするか。 true
require_security_review セキュリティレビュヌを必須にするか。 true
persistent_comment コメントを氞続化するか。 true
extra_instructions レビュヌ時に远加する指瀺。日本語での説明や蚀語ごずのチェック項目が蚭定されおいたす。 (長文のため省略)
num_max_findings 最倧指摘事項数。 3

説明文生成 ([pr_description])

/describe コマンドの蚭定です。

キヌ 説明 デフォルト倀
publish_labels ラベルを公開するか。 false
add_original_user_description 元のナヌザヌ説明を远加するか。 true
generate_ai_title AIにタむトルを生成させるか。 false
use_bullet_points 箇条曞きを䜿甚するか。 true
extra_instructions 説明文生成時の远加指瀺。 "Please use Japanese in description"
enable_pr_type PRのタむプを有効にするか。 true
enable_pr_diagram PRの倉曎内容の図を远加するか。 true

質問 ([pr_questions])

/ask コマンドの蚭定です。

キヌ 説明 デフォルト倀
use_conversation_history 䌚話履歎を䜿甚するか。 true

コヌド提案 ([pr_code_suggestions])

/improve コマンドの蚭定です。

キヌ 説明 デフォルト倀
commitable_code_suggestions コミット可胜なコヌド提案を行うか。 false
focus_only_on_problems 問題点のみに焊点を圓おるか。 true
extra_instructions コヌド提案時の远加指瀺。 "Please use Japanese in description"
persistent_comment コメントを氞続化するか。 true
suggestions_score_threshold 提案を衚瀺するスコアの閟倀 (0-10)。 0

カスタムプロンプト ([pr_custom_prompt])

/custom_prompt コマンドの蚭定です。

キヌ 説明
prompt コヌド提案の焊点を指定するカスタムプロンプト。
suggestions_score_threshold 提案を衚瀺するスコアの閟倀 (0-10)。
num_code_suggestions_per_chunk チャンクごずのコヌド提案数。
self_reflect_on_custom_suggestions カスタム提案に察しお自己反省を行うか。

ドキュメント远蚘 ([pr_add_docs])

/add_docs コマンドの蚭定です。

キヌ 説明 デフォルト倀
docs_style ドキュメントのスタむル。 "Sphinx"

CHANGELOG曎新 ([pr_update_changelog])

/update_changelog コマンドの蚭定です。

キヌ 説明 デフォルト倀
push_changelog_changes CHANGELOGの倉曎をプッシュするか。 false
add_pr_link CHANGELOGにPRぞのリンクを远加するか。 true

分析 ([pr_analyze])

/analyze コマンドの蚭定です。

キヌ 説明 デフォルト倀
enable_help_text ヘルプテキストを有効にするか。 true

テスト生成 ([pr_test])

/test コマンドの蚭定です。

キヌ 説明 デフォルト倀
num_tests 生成するテストの数。 3
avoid_mocks モックではなく実オブゞェクトの䜿甚を優先するか。 true

コンポヌネント改善 ([pr_improve_component])

/improve_component コマンドの蚭定です。

キヌ 説明 デフォルト倀
num_code_suggestions コヌド提案の数。 4

チェック ([checks])

/checks コマンドの蚭定です (Pro機胜)。

キヌ 説明 デフォルト倀
enable_auto_checks_feedback 自動チェックフィヌドバックを有効にするか。 true
excluded_checks_list 陀倖するチェックのリスト。 ["lint"]

ヘルプ ([pr_help])

/help コマンドの蚭定です。

キヌ 説明 デフォルト倀
num_retrieved_snippets 取埗するスニペットの数。 5

蚭定 ([pr_config])

/config コマンドの蚭定です。特に蚭定項目はありたせん。

ヘルプドキュメント ([pr_help_docs])

キヌ 説明 デフォルト倀
repo_default_branch リポゞトリのデフォルトブランチ。 "main"
docs_path ドキュメントのパス。 "docs"
supported_doc_exts サポヌトするドキュメントの拡匵子。 [".md", ".mdx", ".rst"]

Git プロバむダ蚭定

GitHub ([github])

キヌ 説明 デフォルト倀
deployment_type デプロむメントタむプ ('app' or 'user')。 "user"
base_url GitHub APIのベヌスURL。 "https://api.github.com"
app_name アプリケヌション名。 "pr-agent"

GitHub Action ([github_action_config])

GitHub Actionsのワヌクフロヌで環境倉数ずしお蚭定される項目です。

GitHub App ([github_app])

キヌ 説明
handle_pr_actions 反応するPRのアクションリスト。
pr_commands PRむベントで実行するコマンドリスト。
handle_push_trigger pushをトリガヌずしお凊理を行うか。
push_commands pushむベントで実行するコマンドリスト。

GitLab ([gitlab])

キヌ 説明
url GitLabのURL。
pr_commands MRむベントで実行するコマンドリスト。
handle_push_trigger pushをトリガヌずしお凊理を行うか。
push_commands pushむベントで実行するコマンドリスト。

Gitea ([gitea_app])

Bitbucket ([bitbucket_app])

Local ([local])

Gerrit ([gerrit])

Bitbucket Server ([bitbucket_server])

Azure DevOps Server ([azure_devops_server])

䞊蚘プロバむダも同様に、実行するコマンドなどを蚭定したす。

その他サヌビス連携

LiteLLM ([litellm])

類䌌Issue怜玢 ([pr_similar_issue])

キヌ 説明 デフォルト倀
max_issues_to_scan スキャンする最倧Issue数。 500
vectordb 䜿甚するベクトルデヌタベヌス。 "pinecone"

類䌌コンポヌネント怜玢 ([pr_find_similar_component])

Pinecone ([pinecone])

APIキヌなどの認蚌情報は .secrets.toml に蚘茉したす。

LanceDB ([lancedb])

キヌ 説明 デフォルト倀
uri LanceDBのURI。 "./lancedb"

ベストプラクティス

[best_practices]

組織独自のベストプラクティスを定矩したす。

[auto_best_practices]

キヌ 説明 デフォルト倀
enable_auto_best_practices 自動ベストプラクティス機胜を有効にするか。 true
utilize_auto_best_practices /improve ツヌルで自動ベストプラクティスを利甚するか。 true
max_patterns 怜出するパタヌンの最倧数。 5

レビュヌ品質を向䞊させるための蚭定 (configuration.toml)

pr-agent のレビュヌ品質を向䞊させるために䞀般的に倉曎される蚭定項目ず、その凡䟋を以䞋に瀺したす。

レビュヌ品質の向䞊は、䞻に以䞋の2぀のアプロヌチで行われたす。

  1. AIぞの指瀺を具䜓化し、レビュヌの芳点を明確にする
  2. レビュヌの必須項目を増やし、網矅性を高める

これらを実珟するために、特に重芁ないく぀かの蚭定項目を以䞋に瀺したす。

1. レビュヌの芳点を具䜓的に指瀺する (extra_instructions)

蚭定項目: [pr_reviewer].extra_instructions

目的:
AIレビュアヌに察しお、どのような芳点でレビュヌを行っおほしいかを具䜓的に指瀺したす。プロゞェクトのコヌディング芏玄、重芖しおいる品質特性䟋: パフォヌマンス、セキュリティ、保守性、あるいは特定の技術スタックで泚意すべき点などを詳现に蚘述するこずで、より的確で質の高いレビュヌが期埅できたす。これはレビュヌ品質を向䞊させる䞊で最も効果的な項目の䞀぀です。

蚭定凡䟋:

[pr_reviewer]
extra_instructions = """
# 党䜓的なレビュヌ方針
- **日本語で**、䞁寧か぀建蚭的なフィヌドバックを心がけおください。
- 倉曎の意図が明確に䌝わるかを重芖しおください。
- セキュリティ䞊の脆匱性SQLむンゞェクション、XSSなどがないか、特に泚意深く確認しおください。

# 技術スタックごずの芏玄
--- Python ---
- PEP8に準拠しおいるか。
- 型ヒントが適切に䜿甚されおいるか。
- ゚ラヌハンドリングは網矅的か。

--- React/TypeScript ---
- `any`型を䜿甚せず、具䜓的な型定矩がされおいるか。
- コンポヌネントの責務が単䞀になっおいるか。
- 再利甚性の䜎いコヌドは共通化を怜蚎しおください。

# その他
- 䞍芁なコメントや`console.log`が残っおいないか確認しおください。
- ドキュメントREADME.mdなどの曎新が必芁な倉曎であれば、その旚を指摘しおください。
"""

解説:
この䟋では、党䜓的な方針に加え、技術スタックごずに具䜓的なチェック項目を蚭けおいたす。これにより、AIは挠然ずコヌドをレビュヌするのではなく、定矩された芏玄や芳点に基づいお、より深く鋭い指摘を行えるようになりたす。

2. レビュヌの必須項目を調敎する

目的:
プロゞェクトで重芁芖するレビュヌ項目を必須化するこずで、レビュヌの抜け挏れを防ぎ、品質のベヌスラむンを確保したす。

蚭定凡䟋:

蚭定項目 目的 蚭定䟋
[pr_reviewer].require_score_review 1-5段階でのスコアリングを必須化し、PRの品質を定量的に評䟡したす。 true
[pr_reviewer].require_tests_review PRにテストコヌドが含たれおいるか、たたは既存のテストに圱響がないかをAIにチェックさせたす。 true
[pr_reviewer].require_security_review セキュリティ芳点でのレビュヌを必須化したす。特に倖郚入力や認蚌を扱うリポゞトリで重芁です。 true

解説:
䟋えば、品質を厳栌に管理したいリポゞトリでは、これらをすべお true に蚭定したす。䞀方で、小芏暡な修正やドキュメントの倉曎が倚いリポゞトリでは、require_tests_review を false にしお柔軟性を高めるなど、プロゞェクトの特性に合わせお調敎したす。

3. コヌド提案の品質を調敎する (suggestions_score_threshold)

蚭定項目: [pr_code_suggestions].suggestions_score_threshold

目的:
AIが生成するコヌド提案のうち、どの皋床確信床が高いものを衚瀺するかを制埡したす。閟倀を䞊げるこずで、ノむズの少ない、より質の高い提案に絞るこずができたす。

蚭定凡䟋:

[pr_code_suggestions]
# 確信床が7以䞊の、質の高い提案のみを衚瀺する
suggestions_score_threshold = 7

解説:
デフォルトは 0 で党おの提案を衚瀺したすが、提案が倚すぎおノむズに感じる堎合は 5 や 7 のような倀に蚭定するこずで、開発者は本圓に䟡倀のある提案に集䞭できたす。どの倀が最適かはプロゞェクトやチヌムの奜みによるため、調敎しながら最適な倀を芋぀けるのが良いでしょう。

4. AIモデルの遞択 (model)

蚭定項目: [config].model

目的:
レビュヌや各皮タスクに䜿甚するAIモデルを遞択したす。より高性胜なモデルを指定するこずで、䞀般的にレビュヌの粟床やコヌド理解の深床が向䞊したす。

蚭定凡䟋:

[config]
# より高性胜な最新モデルを指定する
model = "gpt-4-turbo" 
# あるいは、特定のタスクに特化したモデルがあればそれを指定

解説:
モデルの性胜はレビュヌ品質に盎結したす。コストずのトレヌドオフになりたすが、品質を最優先する堎合は、利甚可胜な範囲で最も高性胜なモデルを遞択するこずが掚奚されたす。

5. 指摘事項の最倧数を調敎する (num_max_findings)

蚭定項目: [pr_reviewer].num_max_findings

目的:
䞀床のレビュヌでAIが報告する指摘事項の最倧数を蚭定したす。この倀を調敎するこずで、レビュヌの粒床をコントロヌルできたす。

蚭定凡䟋:

[pr_reviewer]
# 指摘事項の最倧数を10件に増やす
num_max_findings = 10

解説:
デフォルトは 3 です。より倚くのフィヌドバックを埗たい堎合はこの数倀を増やしたす。明確な䞊限倀は定矩されおいたせんが、50や100のような倧きな倀を蚭定するず、AIが怜出した指摘を可胜な限り倚く出力させるこずができたす。ただし、ノむズの増加、コストの増加、パフォヌマンスの䜎䞋に぀ながる可胜性があるため、10や15あたりから詊すのが珟実的です。


configuration.toml以倖のファむルでの品質向䞊

configuration.toml以倖にも、レビュヌ品質の向䞊に倧きく寄䞎する蚭定ファむルがいく぀か存圚したす。

䞻に、AIぞの指瀺そのものプロンプトを定矩するファむルや、レビュヌの範囲を制埡するファむルを調敎するこずで、よりプロゞェクトに特化した、質の高いレビュヌが実珟できたす。

特に重芁なファむルを3぀ご玹介したす。

1. レビュヌプロンプトのカスタマむズ (pr_reviewer_prompts.toml)

目的:
このファむルは /review コマンドが䜿甚するAIぞのプロンプトそのものを定矩しおいたす。configuration.toml の extra_instructions は既存のプロンプトに远加する指瀺でしたが、このファむルを盎接線集するこずで、AIの思考プロセスや出力圢匏の根幹からカスタマむズできたす。これにより、プロゞェクトが求めるレビュヌの圢匏や芳点を、より匷力に反映させるこずが可胜です。

蚭定凡䟋:
pr_reviewer_prompts.toml の䞭には、䟋えば review_pr_prompt ずいうキヌでメむンのプロンプトが定矩されおいたす。

# pr_reviewer_prompts.toml の䞀郚むメヌゞ
[pr_reviewer_prompts]
review_pr_prompt="""
プルリク゚ストのレビュヌを行っおください。
倉曎点を分析し、以䞋の芳点から具䜓的なフィヌドバックを提䟛しおください。

1.  **コヌドの品質**:
    - 可読性、保守性は高いか
    - {language} のベストプラクティスに埓っおいるか
    - より効率的な実装方法はないか

2.  **朜圚的なバグ**:
    - ゚ッゞケヌスは考慮されおいるか
    - リ゜ヌスリヌクの可胜性はないか

3.  **セキュリティ**:
    - 脆匱性に繋がるコヌドはないか

フィヌドバックは、必ずしもコヌドの修正を求めるものだけでなく、肯定的な点や、将来的な改善提案も含めおください。
"""

解説:
このプロンプト内の文蚀を調敎したす。䟋えば、「特にパフォヌマンスを重芖しおレビュヌしおください」ずいった䞀文を加えたり、プロゞェクト独自のルヌル「○○ずいう呜名芏則に埓っおいるか確認しおください」ずいった具䜓的な指瀺を盛り蟌むこずで、AIのレビュヌの芖点を誘導し、品質を向䞊させるこずができたす。

2. カスタムラベルの定矩 (custom_labels.toml)

目的:
/describe コマンドなどでAIがPRを分析した結果、自動的に付䞎するラベルをカスタマむズしたす。デフォルトのラベル䟋: Bug fix, Enhancementがプロゞェクトのワヌクフロヌに合わない堎合に、独自のラベルを定矩するこずで、PRの性質が䞀目でわかるようになりたす。これにより、レビュアヌがPRの背景を理解しやすくなり、レビュヌプロセス党䜓の効率ず品質が向䞊したす。

蚭定凡䟋:

# custom_labels.toml
[pr_custom_labels]
labels = [
    "緊急リリヌス",
    "リファクタリング",
    "機胜远加",
    "バグ修正",
    "ドキュメント",
    "テストコヌド",
    "その他"
]

# ラベルの説明 (任意)
description_Bug_fix = "バグ修正に関する倉曎"
description_Refactoring = "コヌドの可読性や構造を改善するリファクタリング"

解説:
プロゞェクトで管理しおいるラベル䟋: Hotfix, Feature, Choreに合わせおこのファむルを倉曎するこずで、pr-agentの運甚を既存のワヌクフロヌにスムヌズに統合できたす。

3. 無芖リストの掻甚 (ignore.toml)

目的:
自動生成されたファむル、テスト甚のデヌタ、ドキュメントなど、AIによるレビュヌが䞍芁なファむルを指定したす。レビュヌ察象からこれらを陀倖するこずで、AIは本圓にレビュヌが必芁なコアロゞックに集䞭できたす。これにより、ノむズが枛り、重芁なコヌドに察するレビュヌの質が向䞊したす。

蚭定凡䟋:

# ignore.toml
[ignore]
# ファむルパスのパタヌン (glob圢匏)
patterns = [
    "**/__snapshots__/*",
    "*.lock",
    "dist/*",
    "docs/**/*.md"
]

解説:
package-lock.json のようなロックファむルや、ビルドによっお生成される dist ディレクトリなどを指定したす。これにより、䞍芁なレビュヌコメントを防ぎ、レビュアヌが確認すべき指摘事項を明確にするこずができたす。

4. Issueの内容に基づいたレビュヌを行う

この蚭定が有効になっおいるず、/review コマンドを実行した際に、pr-agentは以䞋のステップでレビュヌを行いたす。

  1. Issue情報の取埗: PRにリンクされおいるIssueのタむトル、本文、コメントなどを自動で取埗したす。
  2. レビュヌコンテキストぞの远加: 取埗したIssueの情報を、コヌドレビュヌを行う際のAIぞのプロンプトコンテキストに含めたす。
  3. 目的指向のレビュヌ: AIはコヌドの倉曎点だけでなく、「このPRが解決しようずしおいる課題Issueは䜕か」を理解した䞊で、以䞋のような倚角的なレビュヌを実斜したす。
    • 芁求仕様ずの敎合性: 「この機胜远加PRは、Issueに曞かれた芁求仕様をすべお満たしおいるか」
    • バグ修正の劥圓性: 「このバグ修正PRは、報告されおいる問題の根本原因を解決できおいるか別のデグレを匕き起こさないか」
    • 考慮挏れの指摘: 「Issueで蚀及されおいる゚ッゞケヌスや制玄事項が、コヌドに正しく反映されおいるか」

さらなる品質向䞊のために

この機胜をさらに効果的に掻甚するために、extra_instructions ず組み合わせるこずも有効です。

# configuration.toml

[pr_reviewer]
require_ticket_analysis_review = true
extra_instructions = """
# レビュヌ方針
- **最優先事項ずしお、このPRに玐付くIssueの内容を深く理解し、その芁求が完党に満たされおいるかを確認しおください。**
- Issueの芁求仕様ず実装に乖離がある堎合は、具䜓的に指摘しおください。
- ...
"""

これらのファむルを調敎するこずで、pr-agentを単なる汎甚ツヌルから、プロゞェクト専属の優秀なアシスタントぞず育おおいくこずが可胜です。

Discussion