muaco Tech Note

Claude Codecode.claude.com

Claude Code 서브에이전트 사용법언제 나누고 어떻게 정의하나

Claude Code 서브에이전트가 무엇인지 이해하고, 일을 언제 나눌지 정해 파일 하나로 직접 정의해 볼 수 있습니다.

안녕하세요, muaco입니다.

대화창이 금방 꽉 찰 때 꺼내 쓰는 기능이 서브에이전트입니다. Claude Code에게 큰일을 맡기면 검색 결과와 로그가 계속 쌓입니다. 그러다 보면 처음에 나눈 이야기를 Claude가 흐릿하게 기억하기 시작합니다.

오늘은 세 가지를 차례로 살펴보겠습니다. 서브에이전트가 무엇인지, 언제 일을 나누면 좋은지, 파일 하나로 어떻게 정의하는지입니다.

한 줄로 말하면 따로 일하는 팀원입니다

팀장이 "경쟁사 자료 좀 정리해 주세요" 하고 부탁하는 장면을 떠올려 보세요. 팀원은 자기 자리에서 수십 개 문서를 읽습니다. 그래도 팀장 책상에는 그 문서가 하나도 쌓이지 않습니다.

책상에 올라오는 결과는 정리된 보고서 한 장뿐입니다.

Claude Code에서도 구조는 같습니다. 지금 대화 중인 Claude가 팀장, 따로 불려 나가 일하는 Claude가 팀원. 이 팀원을 서브에이전트라고 부릅니다.

공식 문서는 서브에이전트를 자기만의 분리된 컨텍스트 창에서 특정 작업을 처리하는 전문 도우미로 설명합니다. 여기서 컨텍스트 창이란 무엇일까요? AI가 한 번에 기억하고 볼 수 있는 책상 넓이라고 생각하면 됩니다.

서브에이전트는 책상이 좁아서 생겼습니다

AI의 책상은 넓이가 정해져 있습니다. 파일 백 개를 뒤지고 테스트 로그 수천 줄을 읽으면 그 내용이 전부 책상에 올라옵니다. 정작 다시 볼 일 없는 자료인데도 말입니다.

결과는 어떨까요? 원래 하던 이야기가 밀려나고 답이 점점 엉뚱해집니다.

문서가 꼽는 장점은 다음과 같습니다. 우선 대화 맥락을 지키고, 쓸 수 있는 도구를 좁혀 실수를 막습니다.

한 번 만든 팀원은 여러 프로젝트에서 다시 쓸 수 있습니다. 쉬운 일이라면 Haiku처럼 빠르고 싼 모델에 넘겨 비용도 아낄 수 있습니다.

일은 이렇게 흘러갑니다

핵심은 팀원마다 붙이는 설명(description)입니다. Claude는 이 설명을 읽고 "이 일은 저 팀원 담당이네" 하고 알아서 넘깁니다. 설명에 "use proactively" 같은 말을 넣으면 더 적극적으로 맡긴다고 문서에 나와 있습니다.

기본으로 들어 있는 팀원도 셋입니다. 읽기만 하며 코드를 빠르게 뒤지는 Explore, 계획 모드에서 조사를 맡는 Plan, 여러 단계 작업을 모두 처리하는 general-purpose. 따로 만들지 않아도 Claude가 필요할 때 이 셋을 불러 씁니다.

내 팀원을 만들고 싶다면 마크다운 파일 하나면 충분합니다. 맨 위에 이름표를 붙이고, 그 아래에 팀원에게 줄 업무 지시를 적습니다. 아래는 문서에 실린 예시입니다.

---
name: code-reviewer
description: Reviews code for quality and best practices
tools: Read, Glob, Grep
model: sonnet
---

You are a code reviewer. When invoked, analyze the code and provide
specific, actionable feedback on quality, security, and best practices.

name과 description은 반드시 있어야 합니다. tools는 쓸 수 있는 도구 목록입니다. 이 줄을 아예 적지 않으면 모든 도구를 물려받습니다.

위 예시에는 읽기 도구만 주었습니다. 그래서 이 팀원은 파일을 고치지 못합니다.

model에 적을 수 있는 값은 이렇습니다. sonnet, opus, haiku, fable 같은 별칭, claude-opus-5 같은 전체 모델 ID, inherit(지금 대화와 같은 모델). 생략하면 지금 대화의 모델을 씁니다.

파일은 주로 두 군데에 둡니다. 이 프로젝트에서만 쓸 팀원은 .claude/agents/에, 모든 프로젝트에서 쓸 팀원은 ~/.claude/agents/에 넣으세요. 같은 이름이 두 곳에 있으면 프로젝트 쪽이 우선입니다.

프로젝트 폴더에 두면 어떤 점이 좋을까요? git으로 팀 동료와 함께 쓸 수 있습니다.

여기서 다들 한 번 멈칫합니다. 예전 글에는 /agents 명령으로 만드는 화면이 나옵니다. 그런데 문서에 따르면 v2.1.198부터 이 명령은 화면을 열지 않고 파일 위치만 알려 줍니다.

지금은 파일을 직접 쓰거나 Claude에게 만들어 달라고 부탁하면 됩니다.

나눌 때와 나누지 않을 때

문서는 기준을 꽤 분명하게 제시합니다. 먼저 서브에이전트가 맞는 경우부터 보겠습니다.

  • 결과물이 길고 지저분한데 내 대화창에는 필요 없을 때. 테스트를 모두 돌리고 실패 항목만 보고받는 일이 좋은 예입니다.
  • 도구나 권한을 좁혀 두고 싶을 때. 읽기만 해야 하는 검토 담당이 여기에 해당합니다.
  • 일이 따로 떨어져 있어 요약 한 장으로 돌려받으면 충분할 때.

반대로 지금 대화에서 바로 처리하는 편이 나은 경우도 있습니다.

  • 여러 번 주고받으며 다듬어야 하는 일. 팀원은 요약만 들고 오니 중간에 방향을 틀기 어렵습니다.
  • 여러 단계가 같은 맥락을 많이 나눠 쓰는 일.
  • 한두 줄 고치는 작은 일. 팀원을 새로 부르면 처음부터 자료를 다시 읽어 오히려 느려집니다.
  • 빨리 답을 받아야 할 때.

병렬로 돌릴 때 주의할 점

서로 관계없는 조사라면 여러 팀원을 동시에 보낼 수 있습니다. "인증, 데이터베이스, API 모듈을 각각 다른 서브에이전트로 동시에 조사해 줘"처럼 부탁하면 됩니다.

이렇게 하면 가장 느린 팀원이 끝나는 시점에 전부 끝납니다. 다만 시작 전에 몇 가지를 알아 두세요.

  • 토큰 사용량이 늘어납니다. 팀원 수만큼 따로 일하니 사용량도 그만큼 불어나는 셈. 자칫하면 요금제 한도에 빨리 닿습니다.
  • 보고서도 책상을 차지합니다. 팀원마다 긴 결과를 들고 오면 결국 내 대화창이 다시 찹니다. 그러니 "요약만", "실패 항목만"처럼 돌려받을 양을 정해 주세요.
  • 같은 파일을 동시에 고치면 부딪힙니다. 이럴 때는 isolation: worktree를 적어 팀원마다 별도 작업 폴더(git worktree)를 주세요.
  • 한꺼번에 돌 수 있는 수에는 한도가 있습니다. 기본값은 동시에 20개.

팀원이 또 다른 팀원을 부를 수도 있습니다. 기본으로 지금 대화 아래 세 층까지 내려갑니다. 너무 깊어지면 어디서 무슨 일이 벌어지는지 알기 어렵습니다.

그래서 처음에는 한 층만 쓰는 편이 마음 편합니다.

첫걸음은 읽기 전용 팀원 하나

처음이라면 파일을 고치지 못하는 검토 담당 하나부터 만들어 보세요. Claude Code에 "읽기 전용이고 Sonnet을 쓰는 코드 검토 서브에이전트를 .claude/agents/에 만들어 줘"라고 부탁하면 됩니다. 그러면 Claude가 파일을 써 줍니다.

이름이 code-reviewer라면 @"code-reviewer (agent)"처럼 @로 불러 일을 맡겨 보세요. @로 부르면 그 팀원이 반드시 실행됩니다.

요약만 돌아오고 내 대화창이 깨끗하게 남는지 확인해 보세요. 이 기능이 왜 있는지 바로 감이 옵니다.

팀원을 잘 두면 팀장 책상이 가벼워집니다. 다만 팀원이 많다고 일이 저절로 잘되지는 않습니다. 먼저 갖춰야 할 능력은 나눌 일과 직접 할 일을 가르는 눈입니다.

이상으로 글 마치겠습니다.

출처

#Claude Code#서브에이전트#에이전트#병렬 처리#AI 코딩#업무 자동화

같은 분류의 글