서브에이전트는 메인 에이전트(오케스트레이터)가 큰 작업 중 일부를 떼어 맡기는 하위 실행 단위로, 독립된 컨텍스트에서 일하고 메인에는 결과 요약만 돌려준다. 조사·검색처럼 결론만 필요한 일을 넘기거나 서로 독립적인 작업을 병렬로 돌릴 때 쓴다.
| 구분 | 메인 에이전트 | 서브에이전트 |
|---|---|---|
| 역할 | 계획, 분배, 최종 판단 | 맡은 작업 하나 수행 |
| 컨텍스트 | 전체 대화 유지 | 새로 시작, 독립 |
| 돌려주는 것 | 사용자에게 답변 | 메인에 결과 요약 |
에이전트가 파일을 수십 개 읽고 검색을 반복하면 컨텍스트가 금방 찬다. 이 탐색을 서브에이전트에 넘기면 중간 과정은 서브에이전트 쪽에만 쌓이고, 메인은 "관련 파일은 이 세 개다" 같은 결론만 받는다. 긴 작업에서도 메인 에이전트가 처음 목표를 잃지 않는 이유가 이것이다.
Claude Code에서는 메인 에이전트가 필요할 때 스스로 서브에이전트를 띄운다. 자주 쓰는 역할은 직접 만들어 둘 수 있다. /agents 명령으로 만들거나, 프로젝트의 .claude/agents/ 폴더에 마크다운 파일을 두고 이름, 설명, 쓸 수 있는 도구, 시스템 프롬프트를 적으면 된다.
설명을 구체적으로 적어야 메인 에이전트가 알맞은 때에 그 서브에이전트를 부른다. 리뷰 전용 서브에이전트라면 읽기 도구만 허용해 실수로 파일을 고치지 못하게 막는 식으로 권한도 좁힐 수 있다. Codex, LangChain Deep Agents 같은 다른 도구도 이름과 설정 방식은 달라도 같은 개념을 제공한다.
서브에이전트는 메인 대화의 맥락을 모르고 시작한다. 그래서 앞뒤가 긴밀히 얽힌 작업에는 맞지 않는다.
| 상황 | 서브에이전트 | 이유 |
|---|---|---|
| 코드베이스 조사, 원인 탐색 | 쓴다 | 결론만 필요하다 |
| 서로 다른 모듈 병렬 수정 | 쓴다 | 서로 영향이 없다 |
| 작성 후 독립 검토 | 쓴다 | 새 시각으로 본다 |
| 같은 파일을 여럿이 수정 | 피한다 | 변경이 충돌한다 |
| 앞 단계 결과에 바로 이어지는 일 | 피한다 | 맥락 전달 비용이 크다 |
서브에이전트는 맡긴 지시문만 보고 일한다. 목표, 범위, 돌려받을 형식을 분명히 적어야 엉뚱한 결과가 줄어든다. 결과 요약에 빠진 내용은 메인이 알 수 없으니 중요한 판단은 메인이 다시 확인하는 게 좋다.
또 서브에이전트마다 새 컨텍스트로 시작해 같은 파일을 다시 읽는 일이 생기므로, 전체 토큰 사용량은 혼자 처리할 때보다 늘어나기 쉽다. 작은 작업까지 쪼개기보다 무거운 탐색이나 병렬 처리에만 쓰는 편이 효율적이다.
가장 흔한 쓰임은 코딩 에이전트의 탐색 담당이다. 메인은 계획과 수정에 집중하고, 넓게 뒤져야 하는 조사나 독립된 검토는 서브에이전트에 넘겨 결론만 받는다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 코드베이스 조사 | "이 기능 관련 파일을 찾아라"를 맡기고, 파일 목록과 요약만 돌려받는다 |
| 병렬 작업 | 서로 다른 모듈의 수정이나 테스트 실행을 서브에이전트 여럿에 동시에 나눈다 |
| 코드 리뷰 | 읽기 도구만 허용한 리뷰 서브에이전트가 작성된 변경을 새 시각으로 검토한다 |
| 리서치 에이전트 | 여러 주제의 자료 조사를 나눠 맡기고, 메인이 요약을 모아 최종 답을 쓴다 |