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회차를 진행했습니다. |
| 진전 없음 | 한 회차에서 아무것도 변경하지 않았고 같은 항목이 남아 있거나, 두 회차 연속으로 해결된 항목이 없거나, 남은 항목이 모두 회차에서 사람이 처리해야 한다고 한 것일 때입니다. 댓글에는 시크릿 추가나 워크플로 변경처럼 각 항목에 대해 사람이 해야 할 일이 표시됩니다. |
| 검사가 끝나지 않음 | 1시간이 지나도 검사가 계속 실행 중이었습니다. |
| 병합 대기열 | PR이 병합 대기열에 있어 푸시하면 대기열에서 빠집니다. |
| 푸시 거부됨 | 브랜치 규칙에서 이 브랜치에 푸시할 수 있는 사용자를 제한하는 경우 등에 GitHub가 HeyDeer의 푸시를 거부했습니다. |
| 크레딧 또는 요금제 | 워크스페이스의 크레딧이 소진되었거나 더 이상 유료 요금제가 아닙니다. |
| 누군가 멈춤 | 저장소에 쓰기 권한이 있는 사람은 누구나 멈출 수 있습니다. |
| 접근 권한 제거됨 | Autopilot을 시작한 사람이 더 이상 저장소에서 검토를 요청할 수 없습니다. |
| GitHub가 접근 거부 | GitHub가 HeyDeer의 PR 읽기나 업데이트를 막았습니다. 예를 들어 HeyDeer가 저장소에 대한 접근 권한을 잃은 경우입니다. |
| PR 변경됨 | PR이 닫혔거나 병합되었거나 기준 브랜치가 바뀌었습니다. |
| 완료되지 않음 | HeyDeer가 회차나 최신 커밋 검토를 완료하지 못했습니다. |
HeyDeer가 GitHub에 게시하는 내용
- PR의 Autopilot 댓글 하나로, 작업에 따라 업데이트됩니다. 지금 하는 일과 수정 중인 항목을 보여 주며, 완료된 각 회차의 커밋과 처리한 항목은 기록에 있습니다. 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 자체에는 별도 요금이 없습니다. 크레딧 사용 방식을 참고하세요.