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 · code.claude.com
GitHub Actions에서 Claude Code로 PR 자동 리뷰 만들기: 토큰과 워크플로 설정
GitHub 저장소에 Claude Code 리뷰 워크플로를 넣어 PR을 열 때마다 리뷰 댓글이 자동으로 달리게 만들고, 12월 2일 pull_request_target 기본 차단에 대비해 점검합니다.
Claude Code · github.com
Claude Code 작업 디렉터리 밖 파일 쓰기 막기: settings.json 한 줄 설정
settings.json에 한 줄을 넣어 Claude Code가 작업 디렉터리 밖에 파일을 쓰지 못하게 막고, 실제로 거부되는지 확인하는 법을 알려 드립니다.
Claude Code · code.claude.com
Claude Code 스크립트에서 부르기: claude -p와 JSON 출력 사용법
Claude Code를 화면 없이 claude -p로 불러 답을 받고, JSON 출력과 셸 스크립트로 반복 작업에 끼워 넣는 법을 따라 합니다.