Autopilot
プルリクエストを HeyDeer に任せましょう。Autopilot は未対応の項目を修正して PR のブランチにプッシュし、PR がマージできる状態になるか、人の判断が必要になるまで、変更ごとにレビューします。
利用条件
- プルリクエストがオープンで、そのブランチがフォークではなく同じリポジトリにあること。
- リポジトリへの書き込み権限があり、レビューを依頼できるユーザーの設定に含まれていること。
- ワークスペースが有料プランであること。プランをご覧ください。
- HeyDeer に Contents と Pull requests の読み取りと書き込み権限があること。GitHub App と権限をご覧ください。
Autopilot の開始と停止
Autopilot は次のいずれかの方法で開始できます。
- HeyDeer のレビューページで Autopilot を選択し、Autopilot を開始を選択します。
- GitHub の HeyDeer のレビューコメントで Autopilot ボタンを選択し、HeyDeer でAutopilot を開始を選択します。
- PR に
@heydeer autopilotとコメントします。
停止するには、HeyDeer の Autopilot ページで Autopilot を停止を選択するか、@heydeer autopilot stop とコメントします。Autopilot をもう一度開始すると、ラウンド数がリセットされ、新しい回答やコメントも反映されます。
Autopilot の実行中は、その PR で修正を開始したりレビューを依頼したりできません。先に Autopilot を停止してください。修正の実行中は Autopilot を開始できません。
Autopilot が修正するもの
| 項目 | 対象 |
|---|---|
| 指摘事項 | リポジトリのフィードバックの範囲に含まれる指摘事項と、まだ未解決の HeyDeer の以前の問題です。HeyDeer Review チェックと同じ基準で数えます。 |
| 依頼 | 人が始めた未解決のレビューの会話のうち書き込み権限を持つ人が最後に書き込んだものと、Autopilot の起点となったレビュー以降にその人たちが PR に投稿したコメントやレビュー本文です。Autopilot の実行中は、HeyDeer 自身のレビューの会話も含め、PR で @heydeer をメンションすると、別の依頼を始めるのではなく Autopilot への依頼になります。 |
| 失敗したチェック | ブランチルールで必須チェックが指定されていればそのチェック、なければ HeyDeer Review 以外のすべてのチェックです。 |
| マージコンフリクト | HeyDeer はベースブランチをマージしてコンフリクトを解決します。リベースや強制プッシュは行わず、ブランチが遅れているというだけでは更新しません。 |
Autopilot は、ボットや書き込み権限のない人のコメントを無視します。HeyDeer は対応した会話それぞれに返信し、人の判断が必要な依頼にはその会話で質問します。
HeyDeer は失敗した各チェックのタイトル、概要、アノテーションを読み取り、GitHub Actions のジョブでは失敗したステップのログも読み取ります。隔離されたサンドボックスで失敗を再現し、そこでコードを編集してテストを実行します。再現できない失敗は、残っている項目として示されます。ログの読み取りには Actions 権限が必要です。権限がない場合は、それ以外の情報をもとに対応します。コード実行の隔離方法についてはセキュリティを参照してください。
Autopilot のコミットでは .github/workflows/ 内のファイルを変更できません。変更されたワークフローは、誰かが内容を確認する前にリポジトリのシークレットを使って実行されてしまうためです。
Autopilot が停止するとき
| 理由 | 状況 |
|---|---|
| 準備完了 | 修正が必要な項目は残っていません。 |
| 回答が必要 | HeyDeer が会話またはレビューで質問したか、以前の問題が解決済みかどうかの確認を求めており、それ以外はすべて修正済みです。その場所で回答してから、Autopilot をもう一度開始してください。 |
| 他の人がプッシュした | HeyDeer 以外によるプッシュです。GitHub の Update branch ボタンによるものも含みます。HeyDeer は進行中のラウンドと保留中のレビューを破棄します。 |
| ラウンドの上限 | Autopilot が 5 ラウンド実行しました。 |
| 進展なし | あるラウンドで何も変更されず同じ項目が残っている場合、2 回続けて何も解決できなかった場合、または未対応の項目がすべて、ラウンドが人の対応が必要と判断したものである場合です。コメントには、シークレットの追加やワークフローの変更など、各項目について人が行う必要のある対応が示されます。 |
| チェックが完了しなかった | 1 時間たってもチェックが実行中でした。 |
| マージキュー | PR がマージキューに入っており、プッシュするとキューから外れてしまいます。 |
| プッシュが拒否された | ブランチルールでこのブランチにプッシュできるユーザーが制限されている場合などに、GitHub が HeyDeer のプッシュを拒否しました。 |
| クレジットまたはプラン | ワークスペースのクレジットがなくなったか、有料プランではなくなりました。 |
| 誰かが停止した | リポジトリへの書き込み権限を持つ人なら誰でも停止できます。 |
| アクセス権の削除 | Autopilot を開始した人が、このリポジトリでレビューを依頼できなくなりました。 |
| GitHub がアクセスを拒否 | GitHub によって HeyDeer が PR を読み取ったり更新したりできなくなりました。たとえば、HeyDeer がリポジトリへのアクセス権を失った場合です。 |
| PR の変更 | PR がクローズまたはマージされたか、ベースブランチが変更されました。 |
| 未完了 | HeyDeer がラウンド、または最新のコミットのレビューを完了できませんでした。 |
HeyDeer が GitHub に投稿する内容
- PR 上の Autopilot コメント 1 件。作業に合わせて更新され、現在の作業内容と修正中の項目を示します。完了した各ラウンドのコミットと対応した項目は履歴にまとめられます。HeyDeer は以前の Autopilot コメントを古いものとして非表示にします。
- PR のブランチへのコミットと、対応した会話への返信。
- HeyDeer Review チェック。Autopilot の実行中は進行中のままです。
- Autopilot が停止したときの、最新コミットのレビュー(ほかの人がプッシュした場合や PR が変更された場合を除く)と、コメントに示される結果(停止した理由と、まだあなたの対応が必要な事項)。回答が必要なときや解決できない問題があるときは、Autopilot を開始した人をメンションする新しいコメントを投稿します。
Autopilot のプッシュでは自動レビューは始まらず、HeyDeer が誰かにレビューを依頼することもありません。Autopilot の実行中、HeyDeer のレビューコメントには HeyDeer で修正 と Autopilot のボタンは表示されません。
HeyDeer が公開するレビューには、自動承認がいつもどおり適用されます。HeyDeer のプッシュ後に人による承認を必須にするには、ブランチルールで Require approval of the most recent reviewable push をオンにしてください。自動承認をご覧ください。
HeyDeer の Autopilot には、あなたが閲覧できるリポジトリのすべての実行が一覧表示されます。各実行のページには、状態、まだ未対応の項目、使用したクレジットと、各ラウンドで対応した項目、コミットと返信、エージェントの要約が表示されます。
クレジット
各ラウンドの修正とレビューは、ほかの修正やレビューと同じようにワークスペースのクレジットを消費します。Autopilot 自体に別料金はかかりません。クレジットの仕組みを参照してください。