ð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èªèšŒçšã®ç§å¯ããŒã¯ã³ïŒä»»æã®æååïŒ
-
personal_access_token
personal_access_tokenã¯GitLabã®ãPreferences > Access TokenãããååŸã§ããŸããã¹ã³ãŒãapiã«ãã§ãã¯ãå ¥ããŠäœã£ãŠãã ããã -
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 ãããžã§ã¯ãèšå®ç»é¢ã«ã¢ã¯ã»ã¹
- GitLabã®ãããžã§ã¯ãããŒãžã«ã¢ã¯ã»ã¹
- å·Šãµã€ãããŒã®ã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ãããžã§ã¯ããžã®ã¢ã¯ã»ã¹æš©éã確èª
ð ã»ãã¥ãªãã£èæ ®äºé
-
èªèšŒæ å ±ã®ç®¡ç
-
.secrets.toml
ãã¡ã€ã«ã¯çµ¶å¯Ÿã«ã³ãããããªã - APIí€åããŒã¯ã³ã¯å®æçã«ããŒããŒã·ã§ã³
-
-
ãããã¯ãŒã¯ã»ãã¥ãªãã£
- æ¬çªç°å¢ã§ã¯é©åãªãã¡ã€ã¢ãŠã©ãŒã«èšå®ã宿œ
- HTTPSéä¿¡ã䜿çš
-
ã¢ã¯ã»ã¹å¶åŸ¡
- å¿ èŠæå°éã®æš©éã§Personal Access Tokenãäœæ
- Webhook URLã¯é©åã«ä¿è·
ð ãªã³ã¯
ãŸãšã
ãã®æé æžã«åŸã£ãŠèšå®ããããšã§ãGitLabã§AIã«ããèªåã³ãŒãã¬ãã¥ãŒãå©çšã§ããããã«ãªããŸããããŒã å šäœã®ã³ãŒãå質åäžãšéçºå¹çã®åäžãæåŸ ã§ããŸãã
èšå®ãéçšã§äžæãªç¹ãããå Žåã¯ãPR-Agentã®å ¬åŒããã¥ã¡ã³ãã GitHub Issuesãåç §ããŠãã ããã
ðè¬èŸ
ãã®æé æžã¯ã@ssc-yshikedaãäœæãããæé ãåèã«äœæããŠããŸãã
å
¬éäžããããããšãããããŸãã
ð Appendix.
configuration.toml
èšå®é
ç®äžèЧ
ãã®ããã¥ã¡ã³ã㯠configuration.toml
ãã¡ã€ã«ã§èšå®å¯èœãªé
ç®ããŸãšãããã®ã§ãã
ç®æ¬¡
-
ðPR-Agentã€ã³ã¹ããŒã«ã¬ã€ã
- æŠèŠ
- â åææ¡ä»¶
- ð èšå®æé
- â å©ç𿹿³
- ðšãã©ãã«ã·ã¥ãŒãã£ã³ã°
- ð ã»ãã¥ãªãã£èæ ®äºé
- ð ãªã³ã¯
- ãŸãšã
-
ð Appendix.
-
configuration.toml
èšå®é ç®äžèЧ - å
šè¬èšå® (
[config]
) - ã¬ãã¥ãŒ (
[pr_reviewer]
) - 説ææçæ (
[pr_description]
) - 質å (
[pr_questions]
) - ã³ãŒãææ¡ (
[pr_code_suggestions]
) - ã«ã¹ã¿ã ããã³ãã (
[pr_custom_prompt]
) - ããã¥ã¡ã³ãè¿œèš (
[pr_add_docs]
) - CHANGELOGæŽæ° (
[pr_update_changelog]
) - åæ (
[pr_analyze]
) - ãã¹ãçæ (
[pr_test]
) - ã³ã³ããŒãã³ãæ¹å (
[pr_improve_component]
) - ãã§ã㯠(
[checks]
) - ãã«ã (
[pr_help]
) - èšå® (
[pr_config]
) - ãã«ãããã¥ã¡ã³ã (
[pr_help_docs]
) - Git ãããã€ãèšå®
- ãã®ä»ãµãŒãã¹é£æº
- ãã¹ããã©ã¯ãã£ã¹
-
ã¬ãã¥ãŒå質ãåäžãããããã®èšå® (
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" |
[pr_update_changelog]
)
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_config]
)
GitHub Action (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_app]
)
Gitea (
[bitbucket_app]
)
Bitbucket (
[local]
)
Local (
[gerrit]
)
Gerrit (
[bitbucket_server]
)
Bitbucket Server (
[azure_devops_server]
)
Azure DevOps Server (äžèšãããã€ããåæ§ã«ãå®è¡ããã³ãã³ããªã©ãèšå®ããŸãã
ãã®ä»ãµãŒãã¹é£æº
[litellm]
)
LiteLLM (
[pr_similar_issue]
)
é¡äŒŒ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ã€ã®ã¢ãããŒãã§è¡ãããŸãã
- AIãžã®æç€ºãå ·äœåããã¬ãã¥ãŒã®èгç¹ãæç¢ºã«ãã
- ã¬ãã¥ãŒã®å¿ é é ç®ãå¢ãããç¶²çŸ æ§ãé«ãã
ããããå®çŸããããã«ãç¹ã«éèŠãªããã€ãã®èšå®é ç®ã以äžã«ç€ºããŸãã
extra_instructions
)
1. ã¬ãã¥ãŒã®èгç¹ãå
·äœçã«æç€ºãã (èšå®é
ç®: [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
ã«ããŠæè»æ§ãé«ãããªã©ããããžã§ã¯ãã®ç¹æ§ã«åãããŠèª¿æŽããŸãã
suggestions_score_threshold
)
3. ã³ãŒãææ¡ã®å質ã調æŽãã (èšå®é
ç®: [pr_code_suggestions].suggestions_score_threshold
ç®ç:
AIãçæããã³ãŒãææ¡ã®ãã¡ãã©ã®çšåºŠç¢ºä¿¡åºŠãé«ããã®ã衚瀺ããããå¶åŸ¡ããŸããéŸå€ãäžããããšã§ããã€ãºã®å°ãªãããã質ã®é«ãææ¡ã«çµãããšãã§ããŸãã
èšå®å¡äŸ:
[pr_code_suggestions]
# 確信床ã7以äžã®ã質ã®é«ãææ¡ã®ã¿ã衚瀺ãã
suggestions_score_threshold = 7
解説:
ããã©ã«ã㯠0
ã§å
šãŠã®ææ¡ã衚瀺ããŸãããææ¡ãå€ãããŠãã€ãºã«æããå Žå㯠5
ã 7
ã®ãããªå€ã«èšå®ããããšã§ãéçºè
ã¯æ¬åœã«äŸ¡å€ã®ããææ¡ã«éäžã§ããŸããã©ã®å€ãæé©ãã¯ãããžã§ã¯ããããŒã ã®å¥œã¿ã«ããããã調æŽããªããæé©ãªå€ãèŠã€ããã®ãè¯ãã§ãããã
model
)
4. AIã¢ãã«ã®éžæ (èšå®é
ç®: [config].model
ç®ç:
ã¬ãã¥ãŒãåçš®ã¿ã¹ã¯ã«äœ¿çšããAIã¢ãã«ãéžæããŸãããã髿§èœãªã¢ãã«ãæå®ããããšã§ãäžè¬çã«ã¬ãã¥ãŒã®ç²ŸåºŠãã³ãŒãçè§£ã®æ·±åºŠãåäžããŸãã
èšå®å¡äŸ:
[config]
# ãã髿§èœãªææ°ã¢ãã«ãæå®ãã
model = "gpt-4-turbo"
# ãããã¯ãç¹å®ã®ã¿ã¹ã¯ã«ç¹åããã¢ãã«ãããã°ãããæå®
解説:
ã¢ãã«ã®æ§èœã¯ã¬ãã¥ãŒå質ã«çŽçµããŸããã³ã¹ããšã®ãã¬ãŒããªãã«ãªããŸãããå質ãæåªå
ããå Žåã¯ãå©çšå¯èœãªç¯å²ã§æã髿§èœãªã¢ãã«ãéžæããããšãæšå¥šãããŸãã
num_max_findings
)
5. ææäºé
ã®æå€§æ°ã調æŽãã (èšå®é
ç®: [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ã€ã玹ä»ããŸãã
pr_reviewer_prompts.toml
)
1. ã¬ãã¥ãŒããã³ããã®ã«ã¹ã¿ãã€ãº (ç®ç:
ãã®ãã¡ã€ã«ã¯ /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ã®ã¬ãã¥ãŒã®èŠç¹ãèªå°ããå質ãåäžãããããšãã§ããŸãã
custom_labels.toml
)
2. ã«ã¹ã¿ã ã©ãã«ã®å®çŸ© (ç®ç:
/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
ã®éçšãæ¢åã®ã¯ãŒã¯ãããŒã«ã¹ã ãŒãºã«çµ±åã§ããŸãã
ignore.toml
)
3. ç¡èŠãªã¹ãã®æŽ»çš (ç®ç:
èªåçæããããã¡ã€ã«ããã¹ãçšã®ããŒã¿ãããã¥ã¡ã³ããªã©ãAIã«ããã¬ãã¥ãŒãäžèŠãªãã¡ã€ã«ãæå®ããŸããã¬ãã¥ãŒå¯Ÿè±¡ããããããé€å€ããããšã§ãAIã¯æ¬åœã«ã¬ãã¥ãŒãå¿
èŠãªã³ã¢ããžãã¯ã«éäžã§ããŸããããã«ããããã€ãºãæžããéèŠãªã³ãŒãã«å¯Ÿããã¬ãã¥ãŒã®è³ªãåäžããŸãã
èšå®å¡äŸ:
# ignore.toml
[ignore]
# ãã¡ã€ã«ãã¹ã®ãã¿ãŒã³ (glob圢åŒ)
patterns = [
"**/__snapshots__/*",
"*.lock",
"dist/*",
"docs/**/*.md"
]
解説:
package-lock.json
ã®ãããªããã¯ãã¡ã€ã«ãããã«ãã«ãã£ãŠçæããã dist
ãã£ã¬ã¯ããªãªã©ãæå®ããŸããããã«ãããäžèŠãªã¬ãã¥ãŒã³ã¡ã³ããé²ããã¬ãã¥ã¢ãŒã確èªãã¹ãææäºé
ãæç¢ºã«ããããšãã§ããŸãã
4. Issueã®å 容ã«åºã¥ããã¬ãã¥ãŒãè¡ã
ãã®èšå®ãæå¹ã«ãªã£ãŠãããšã/review
ã³ãã³ããå®è¡ããéã«ãpr-agent
ã¯ä»¥äžã®ã¹ãããã§ã¬ãã¥ãŒãè¡ããŸãã
- Issueæ å ±ã®ååŸ: PRã«ãªã³ã¯ãããŠããIssueã®ã¿ã€ãã«ãæ¬æãã³ã¡ã³ããªã©ãèªåã§ååŸããŸãã
- ã¬ãã¥ãŒã³ã³ããã¹ããžã®è¿œå : ååŸããIssueã®æ å ±ããã³ãŒãã¬ãã¥ãŒãè¡ãéã®AIãžã®ããã³ããïŒã³ã³ããã¹ãïŒã«å«ããŸãã
-
ç®çæåã®ã¬ãã¥ãŒ: 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