GitHub Copilot CLI가 작업 위임을 더 선별적으로 하도록 만든 방법 (새 탭에서 열림)
GitHub는 Copilot CLI가 단순한 작업까지 불필요하게 서브에이전트에 위임해 발생하던 검색 반복, 도구 실패, 대기 시간을 줄이기 위해 위임 정책을 개선했다. 핵심은 좁고 명확한 작업은 메인 에이전트가 직접 처리하고, 독립적인 탐색·복잡한 조사·병렬 실행이 필요한 경우에만 서브에이전트를 활용하는 것이다. 그 결과 도구 실패가 23% 감소하고 P95 사용자 대기 시간이 5% 줄었으며, 품질 저하 없이 Copilot CLI 전체 트래픽에 적용됐다.
서브에이전트 위임은 항상 효율적이지 않다
- 서브에이전트는 복잡한 작업을 분해하고 여러 조사를 병렬로 수행하는 데 유용하다.
- 하지만 단순한 파일 수정까지 위임하면 오히려 다음과 같은 비용이 발생한다.
- 불필요한 에이전트 간 인계와 조정
- 동일하거나 겹치는 저장소 검색
- 메인 에이전트가 결과를 기다리는 시간
- 오래된 파일 경로, 잘못된 상대 경로, 워크스페이스 불일치에 따른 도구 실패
- 특히 메인 에이전트가 이미 충분한 맥락을 알고 있는데도 탐색 서브에이전트를 실행하면, 서브에이전트가 저장소를 다시 검색하면서 작업이 지연된다.
데이터 분석으로 불필요한 위임 패턴 식별
- GitHub는 에이전트의 전체 실행 궤적을 LLM으로 분석해 위임이 실제로 도움이 되는지 확인했다.
- 분석 결과, 다음과 같은 작업에 서브에이전트가 과도하게 사용되고 있었다.
- 범위가 좁고 명확한 작업
- 필요한 정보가 이미 핸드오프에 포함된 작업
- 파일을 찾고 읽은 뒤 한 곳을 수정하는 작업
- 이를 바탕으로 “간단한 탐색과 수정은 메인 에이전트가 직접 처리한다”는 방향을 개선 목표로 삼았다.
좁은 작업은 직접 처리하고 복잡할 때만 위임
- Copilot CLI의 새로운 정책은 가장 간단한 실행 경로에서 시작한다.
- 파일 찾기
- 파일 읽기
- 특정 부분 수정
- 변경 사항 검증
- 다음과 같은 경우에는 서브에이전트 위임이 효과적이다.
- 익숙하지 않은 대규모 저장소 탐색
- 서로 독립적인 코드 영역 조사
- 장시간 실행되는 명령 수행
- 여러 작업을 동시에 진행할 수 있는 경우
- 작업이 복잡하거나 불확실할 때 위임하고, 다시 작업 범위가 좁아지면 메인 에이전트가 직접 처리하도록 한다.
- 서브에이전트는 메인 에이전트를 멈추게 하는 “일시정지 버튼”이 아니라, 독립 작업을 병렬화하는 도구로 사용해야 한다.
구체적인 핸드오프와 병렬 실행
- 서브에이전트를 실행할 때는 핸드오프에 다음 내용을 명확히 포함해야 한다.
- 사용자가 요청한 전체 목표
- 메인 에이전트가 이미 파악한 정보
- 서브에이전트가 담당할 범위
- 반환해야 하는 결과의 형태
- 메인 에이전트는 서브에이전트의 결과를 기다리기만 하지 않고, 그동안 독립적으로 수행할 수 있는 작업을 계속 진행해야 한다.
- 이 방식은 중복 검색과 순차적 대기를 줄이고, 실제로 병렬 처리가 가능한 작업에서 위임의 이점을 높인다.
오프라인 평가와 운영 환경 A/B 테스트
- GitHub는 자동 생성 회귀 테스트와 기존 벤치마크를 이용해 정책 변경을 먼저 오프라인에서 검증했다.
- 이후 내부 사용자와 공개 사용자를 대상으로 A/B 테스트를 진행했다.
- 평가 항목은 다음과 같았다.
- 도구 안정성
- 사용자 응답성과 대기 시간
- 서브에이전트 사용량
- 최종 결과 품질
- 성능 향상은 개별 LLM 호출 자체를 빠르게 만든 결과가 아니라, 불필요한 서브에이전트 실행을 줄여 오케스트레이션 비용을 낮춘 결과였다.
측정된 개선 효과
- 세션당 도구 실패가 23% 감소
- 검색 도구 실패: 27% 감소
- 편집 도구 실패: 18% 감소
- 사용자 대기 시간 개선
- P95: 5% 감소
- P75: 3% 감소
- 품질 저하는 관찰되지 않았다.
- 개선된 위임 기능은 Copilot CLI 운영 트래픽의 100%에 배포됐다.
- 사용자는
/update명령으로 Copilot CLI 1.0.42 이상으로 업데이트하면 적용된 기능을 사용할 수 있다.
간단한 작업에는 직접 실행을 우선하고, 서브에이전트는 독립성·복잡성·병렬성 때문에 실제 이득이 있을 때만 사용하는 것이 효율적이다. 이를 위해 위임 여부뿐 아니라 핸드오프의 구체성, 메인 에이전트의 병렬 진행 여부까지 함께 설계해야 한다.