Claude Code를 오래 쓰다 보면, 실력의 차이는 "한 번에 잘 쓰는 프롬프트"가 아니라 "컨텍스트를 관리하는 구조"에서 벌어집니다. 컨텍스트가 커질수록 비용이 늘고, 모델이 실제로 활용할 수 있는 유효 정보 비율은 떨어지며, 결국 잡음이 성능을 갉아먹습니다.1 그래서 이 챕터의 결론은 단순합니다.
한 에이전트에 다 넣지 마세요. 역할과 컨텍스트를 분리하면 품질이 오릅니다.
이 원칙을 실무에서 구현하는 도구가 바로 Skills(지식/절차 모듈), 에이전트(역할 프롬프트), 서브에이전트(격리된 실행 컨텍스트)입니다.
컨텍스트가 커지면 왜 품질이 떨어질까
에이전트 코딩은 탐색, 실행, 관찰(로그·파일·검색 결과)을 반복합니다. 문제는 이 관찰이 대부분 장문이고, 회차가 늘수록 쌓여서 컨텍스트가 "기억"이 아니라 "소음"이 된다는 점입니다.1 게다가 긴 컨텍스트는 단지 비싸기만 한 게 아니라, 잘못된 정보가 섞여 들어오면 이후 모든 판단을 오염시키기도 합니다(컨텍스트 포이즈닝), 정보가 많아져 중요한 단서가 묻히기도 합니다(컨텍스트 디스트랙션).2
이때 해결책은 두 갈래로 나뉩니다.
첫째는 압축(요약/트리밍/마스킹)입니다. 예를 들어 관찰(툴 결과)만 오래된 것부터 숨기거나, 별도 모델이 과거 대화를 요약하는 식입니다.1
둘째는 격리(isolate)입니다. 작업을 여러 컨텍스트 창으로 나누는 방식인데, 이것이 바로 서브에이전트의 핵심 가치입니다.2
요약하면, "컨텍스트를 늘려 해결"하는 방향은 금방 한계에 부딪힙니다. 대신 반복되는 지식은 모듈로 빼서 재사용하고(Skills), 일회성 탐색/조사는 서브에이전트로 보내서 컨텍스트를 더럽히지 않게 해야 합니다.
Skills: '컨텍스트를 절약하는' 재사용 가능한 절차
Skills는 "특정 작업을 항상 같은 방식으로 수행하게 만드는, 작고 표준화된 지침 패키지"입니다.3 매번 긴 설명을 채팅에 붙여 넣는 대신, 프로젝트/개인 환경에 저장해 두고 필요할 때만 로드하는 방식이기 때문에 컨텍스트를 절약합니다.
실무 감각으로 말하면, Skills는 아래 둘을 묶어 둔 것입니다.
판단 기준(체크리스트/정책): 무엇을 위험으로 볼지, 어떤 규칙을 우선할지
절차(워크플로): 어떤 순서로 파일을 읽고, 무엇을 검증하고, 어떤 산출물을 남길지
Skills 폴더 구조와 최소 템플릿
Claude Code는 프로젝트/사용자 레벨의 Skills 경로를 관례적으로 찾습니다.3 보통은 다음 중 하나를 씁니다.
프로젝트:
.claude/skills/<skill-name>/사용자:
~/.claude/skills/<skill-name>/
Skill은 SKILL.md가 사실상 엔트리 포인트입니다.3 최소 템플릿은 아래처럼 시작합니다.
---
name: webapp-testing
description: 로컬 웹앱의 핵심 플로우를 Playwright로 검증하고 report.md를 생성한다.
---
# Webapp Testing
## When to Use This Skill
- 릴리스 전 회귀 테스트가 필요할 때
- UI 플로우가 간헐적으로 깨진다고 보고됐을 때
- PR에서 프론트엔드 변경이 컸을 때
## Instructions
1) 테스트 대상 URL/환경을 확인한다.
2) 핵심 사용자 여정(로그인/결제/검색 등)을 시나리오로 정의한다.
3) 자동화 실행 후 실패 케이스는 스크린샷/로그를 첨부한다.
4) report.md에 '재현 단계/기대 동작/실제 동작/원인 후보/다음 액션'을 기록한다.
## Examples
- "Webapp Testing skill로 체크아웃 플로우를 검증하고 report.md를 만들어줘."핵심은 '사용자에게 설명하는 문서'가 아니라 '모델에게 내리는 작업 지시서'라는 점입니다.3
Skill 설계 규칙: 작게, 단단하게
Skills를 잘못 만들면 오히려 컨텍스트가 늘어납니다. 아래 원칙을 추천합니다.
스킬 하나는 "20~30분 안에 끝나는 반복 작업"을 목표로 합니다.
입력(필수 전제)과 출력(산출물 파일/형식)을 고정합니다.
예외 처리를 써 둡니다. 예를 들어 "테스트 실행이 불가능하면, 실행 커맨드 후보 3개를 제시하고 사용자의 선택을 받는다" 같은 규칙이 스킬의 완성도를 올립니다.
서브에이전트: 병렬화보다 중요한 것은 '격리'
서브에이전트는 메인 세션과 독립된 컨텍스트 창에서 한 가지 하위 작업을 수행하고, 결과만 요약해 돌아오는 형태입니다. 즉, 메인 에이전트가 읽기/검색/로그 같은 "지저분한 작업 흔적"을 직접 떠안지 않아도 됩니다.45
많은 사람들이 서브에이전트를 "빨리 끝내는 병렬 처리"로만 이해하지만, 더 큰 효용은 컨텍스트 압축입니다. 하위 작업이 파일 8개를 읽고 툴 호출 15번을 해도, 메인에는 몇백 토큰짜리 결과만 남길 수 있습니다.6
Anthropic이 공개한 멀티 에이전트 리서치 시스템도 같은 논리를 씁니다. 서브에이전트가 각자 좁은 주제를 병렬로 탐색한 뒤, 리드 에이전트가 결과를 압축해 합칩니다.4
언제 서브에이전트를 쓰고, 언제 쓰지 말까
서브에이전트가 항상 정답은 아닙니다. 비용도 늘고(여러 인스턴스가 토큰을 각각 씁니다), 조율도 필요합니다.46
아래처럼 나누면 판단이 쉬워집니다.
서브에이전트를 쓰기 좋은 경우
조사/탐색이 길어질 것 같다(로그, 많은 파일, 외부 문서)
서로 독립인 하위 작업이 2개 이상이다(도메인 분리 가능)
보안/권한을 분리해야 한다(외부 검색 전용 등)
메인에서 직접 처리하기 좋은 경우
수정할 파일이 명확하다(한두 파일)
순차 의존이 강하다(스키마→API→UI처럼 앞 단계가 다음 입력을 만든다)
대화형으로 빠르게 왔다 갔다 해야 한다
오케스트레이터-워커 패턴: 메인은 '조율', 서브는 '실행'
서브에이전트를 잘 쓰려면 메인 에이전트를 "만능 해결사"가 아니라 오케스트레이터(조율자)로 바꿔 생각해야 합니다.45
메인(조율자)의 책임: 목표 정의, 작업 분해, 경계 설정, 결과 통합, 최종 의사결정
서브(워커)의 책임: 제한된 범위에서 조사/분석/검증을 끝내고 요약 보고
이때 가장 중요한 것은 서브에이전트에게 주는 '브리프' 품질입니다. '인증 고쳐줘'처럼 뭉뚱그리면, 서브는 잘못된 가정을 크게 키운 채 돌아옵니다. 반대로 "증상/범위/출력 형식/참고 파일"이 들어가면 성공률이 올라갑니다.7
브리프(서브에이전트 호출문) 5요소
서브에이전트를 동료 개발자라고 생각하고, 다음 5가지를 항상 넣으세요.
Subject(주제): 무엇을 조사하는가(추적 가능한 제목)
Scope(범위): 포함/제외할 영역(모듈, 폴더, 파일, 시간 범위)
Inputs(재료): 증상, 재현 절차, 참고 커밋/이슈, 중요한 파일 경로
Output(산출물): 요약 포맷(예: "원인 후보 3개 + 근거 파일/라인 + 확인 실험 2개")
Stop rule(정지 조건): 무엇이 되면 멈추나(예: "근거 없는 추측 금지, 모르면 '추가 정보 필요'로 종료")
병렬 작업 루틴: Fan-out → Gather
병렬 작업의 정석은 Fan-out(흩뿌리기) → Gather(모으기)입니다.8 코딩 업무에서는 보통 "탐색/분석"을 fan-out 하고, "계획/수정"은 gather 이후 메인이 합니다.
예시 1) 버그 조사 분리(서브에이전트 3개)
상황: "결제 플로우가 간헐적으로 실패한다."
메인에서 곧장 코드를 고치려 하지 말고, 아래처럼 조사 축을 분리합니다.
서브 A(로그/에러 패턴): 실패 로그/스택트레이스에서 공통 패턴 추출
서브 B(결제 도메인 코드): 결제 모듈에서 타임아웃/리트라이/멱등성 처리 탐색
서브 C(경계면): 프론트 요청→백엔드 API→외부 결제사 호출의 연결 지점 점검
메인이 받는 것은 각 서브의 "핵심 근거"뿐입니다. 긴 로그 전체를 들고 오지 말고, 대표 로그 3줄 + 파일/라인 + 재현 실험만 가져오게 하세요.
예시 2) '대안 설계'는 병렬로, '선택'은 메인이
캐시를 도입해야 하는데 방법이 불확실하면, 서브에이전트에게 각각 다른 해법을 맡깁니다.
서브 A: Redis 캐시 설계(키 전략, TTL, 무효화)
서브 B: 인메모리 LRU 설계(프로세스/스케일링 제약 포함)
서브 C: 하이브리드(핫키만 인메모리, 나머지 Redis)
이 패턴은 VS Code의 서브에이전트 사용 시나리오에서도 권장됩니다. 메인 컨텍스트를 깨끗하게 유지한 채, 옵션을 독립적으로 탐색시킨 뒤 요약만 받는 방식입니다.5
전용 리뷰어/테스터 에이전트 운영하기
역할 분리의 체감이 가장 큰 지점은 리뷰와 테스트입니다. 구현 에이전트는 목표를 달성하려는 관성이 강해, 자신이 만든 코드를 자신이 검증하면 기준이 무너지는 순간이 생깁니다. 그래서 리뷰/테스트는 가능하면 "다른 눈"으로 보게 하세요.
Google의 멀티 에이전트 패턴 가이드에서도, 생성(Generator)과 비평(Critic)을 분리해 품질을 올리는 루프가 소개됩니다.8
운영 방식: "구현 → 테스트 → 리뷰"를 게이트로 만든다
가장 단순한 형태는 순차 파이프라인입니다.
구현 에이전트: 변경을 만들고 자체 체크(빌드/간단 테스트)까지
테스터 에이전트: 재현·테스트 추가·실행 결과 요약(통과/실패 근거)
리뷰어 에이전트: 아키텍처/보안/성능/가독성 관점에서 diff 기반 리뷰
VS Code 문서도 "특화된 리뷰 관점(보안/성능/a11y 등)을 병렬로 돌리고, 최종 요약을 합치는 방식"을 권장합니다.5
핵심 요령 1) 테스터/리뷰어는 '읽기 전용'에 가깝게
가능하다면 권한을 이렇게 나누는 편이 안전합니다.
구현 에이전트: 편집 권한
테스터/리뷰어: 읽기/실행 중심(수정은 '제안'으로 남기기)
권한 분리는 보안뿐 아니라 품질에도 도움이 됩니다. 리뷰어가 마음대로 코드를 고치기 시작하면, 리뷰가 아니라 "또 다른 구현"이 되기 쉽습니다.
핵심 요령 2) 핸드오프 파일을 한 장 만든다
서브에이전트가 늘수록 "무엇을 바꿨는지"가 흐려집니다. 그래서 핸드오프 파일(예: work/feature-x-handoff.md)을 한 장 두고, 메인이 그 파일만 업데이트하게 하세요.
핸드오프 파일에는 이 정도면 충분합니다.
변경 요약(무엇을, 왜)
수정한 파일 목록
검증 방법(명령어/기대 결과)
남은 위험/열린 질문
이 한 장이 있으면, 테스터/리뷰어는 긴 대화 히스토리 없이도 독립적으로 판단할 수 있습니다. 결국 이것도 컨텍스트 절약입니다.
비용·속도·정확도의 균형 잡기
멀티/서브 에이전트는 토큰을 더 씁니다. Anthropic은 멀티 에이전트가 일반 채팅 대비 훨씬 많은 토큰을 사용한다고도 말합니다.4 따라서 "항상 멀티"가 아니라 "필요할 때만 멀티"가 정답입니다.
실무에서 잘 맞는 규칙은 다음입니다.
병렬 서브에이전트는 2~4개가 대부분의 상한입니다(그 이상은 조율 비용이 커집니다).9
서브에이전트의 출력은 요약만 허용합니다. 원문 로그/파일 덤프는 금지합니다.
가능하면 서브에이전트는 더 저렴한 모델, 메인은 더 강한 모델처럼 역할을 나눕니다(정교한 조율은 메인에게 남겨 둡니다).7
정말 중요한 것은 "병렬 처리"가 아니라 "컨텍스트 오염 방지"라는 목적을 잊지 않습니다.6
마무리: '한 에이전트에 다 넣지 않기' 체크리스트
이번 챕터를 오늘부터 적용하려면, 아래 네 줄만 기억해도 충분합니다.
반복되는 절차는 Skill로 빼서, 매번 프롬프트에 붙이지 않는다.
조사/탐색/외부 검색은 서브에이전트로 보내고, 결과만 요약으로 받는다.
구현과 검증(테스트/리뷰)은 다른 역할로 분리해 서로를 견제하게 만든다.
핸드오프 파일 한 장으로 컨텍스트를 고정하고, 세션이 길어지면 그 파일만 남긴다.
이 구조가 자리 잡히면, Claude Code는 "대화 잘하는 코딩 도구"를 넘어 "팀처럼 움직이는 개발 환경"이 됩니다.
참고
1Cutting Through the Noise: Smarter Context Management for LLM-Powered Agents
2Context Engineering for Agents
4How we built our multi-agent research system
5Subagents in Visual Studio Code
6The 3 Essential Sub-Agent Patterns for Production-Grade AI Systems
7Claude Code Sub-Agents: Parallel vs Sequential Patterns
8Developer's guide to multi-agent patterns in ADK
9Parallel Sub-Agents in Claude Code: Multiplying Your Development Speed
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.