티스토리 뷰

Chapter 2 — Agents & Subagents 완전정리 (개념 + 실습 + 심화)

CLAUDE CODE DEEP DIVE WORKSHOP · 시리즈 2/6

② Agents & Subagents — 전문 에이전트에게 위임하기

하나의 세션 안에서 역할별 하위 에이전트를 정의하고, Task 툴로 작업을 자동·병렬 위임하는 법.

이 글의 결론 — Subagent는 역할별로 컨텍스트·권한을 격리한 전문 에이전트입니다. .claude/agents/*.md로 정의하고, Task 툴로 자동/명시/병렬 위임하며, 5대 패턴으로 실전 자동화합니다.

1. 왜 서브에이전트인가

  • Context Isolation — 별도 컨텍스트 창에서 동작 → 메인 세션 토큰 절약, 대화 오염 방지
  • Tool Permission Isolation — 에이전트마다 허용 도구를 따로 제한(예: 리뷰어는 읽기 전용)
  • Cost & Latency — 병렬 위임으로 처리량↑, 단 자체 컨텍스트라 비용·지연 트레이드오프 존재

2. 정의 방법

파일 위치는 프로젝트(.claude/agents/*.md, 팀 공유) 또는 사용자 전역(~/.claude/agents/*.md). 파일은 YAML frontmatter + 시스템 프롬프트 본문 구조입니다.

---
name: code-reviewer
description: PR diff를 검토하고 개선 사항을 제안하는 시니어 리뷰어
tools: Read, Grep, Glob, Bash(git diff:*)
model: claude-sonnet-4-5
---
당신은 시니어 코드 리뷰어입니다.
가독성·안전성·성능·테스트 관점에서 검토하세요.
  • name 고유 이름 · description 언제 쓸지(자동 위임 근거) · tools 도구 화이트리스트 · model 사용 모델
  • Good description — 구체적으로 써야 자동 디스패치가 정확
  • Permission inheritance — tools 미지정 시 부모 권한 상속, 지정 시 그 목록으로 제한
  • 🆕 최신 20260703 에디션 — 스코프는 5계층, 프론트매터는 위 4개 핵심을 포함해 총 15필드(color·proactive 등)로 확장. 상세 표는 아래 심화 섹션 참고.

3. Task Tool — 위임 메커니즘

  • Auto dispatch — description을 보고 Claude가 알아서 위임
  • @멘션 호출@code-reviewer처럼 이름으로 명시 호출
  • Parallel — 독립 작업이면 여러 에이전트 동시 실행
  • 🆕 fork · 중첩(nesting) · resume — 대화 분기, 에이전트 안의 에이전트, 세션 이어가기 (최신 에디션)
  • Context passing / Cost tracking — 필요한 맥락만 전달, 에이전트별 토큰 추적

4. 5대 실전 패턴

패턴 핵심
Code Reviewer 🔍대화형/Headless 리뷰, GitHub Actions 통합, 멀티 에이전트 협업
Tester 🧪커버리지 워크플로(부족분 탐지→보강), CI 통합
Security Scanner 🔒의존성 취약점·시크릿 탐지, Pre-commit hook 통합
Docs Writer 📝README·API 문서·ADR·다국어·Changelog 자동화
Migration Bot 🔄라이브러리 업그레이드·import 경로·API deprecation 대응

실습 체크리스트

☐ .claude/agents/code-reviewer.md 직접 작성
☐ tools 필드로 읽기 전용 권한 격리 실습
☐ auto dispatch 관찰 + 명시 호출 둘 다 실행
☐ 5대 패턴 중 하나(리뷰어 추천) 실제 적용
☐ (심화) 리뷰어+테스터 협업 또는 pre-commit hook 연동

🧪 핸즈온 랩 — 전문 에이전트를 만들고 지휘하기

Task 내용
첫 Subagent.claude/agents/code-reviewer.md 작성(frontmatter + 시스템 프롬프트)
도구 권한 격리tools 필드로 읽기 전용 리뷰어 만들기
에이전트 3종 완성test-writer · docs-writer 추가
Task 디스패치 3패턴자동(auto) / 명시(explicit) / 병렬(parallel)
Headless·CI 맛보기서브에이전트를 무인/CI에서 호출

산출물 — 재사용 가능한 .claude/agents/*.md 3종 + 디스패치 3패턴 경험


🧪 핸즈온 상세 실습 기록

1. 첫 Subagent — code-reviewer

cd ~/claude-lab/ch1
mkdir -p .claude/agents

cat > .claude/agents/code-reviewer.md << 'EOF'
---
name: code-reviewer
description: |
  PR diff를 검토하여 가독성·안전성·성능·테스트 커버리지 관점에서
  개선 사항을 제안하는 시니어 코드 리뷰어.
tools: Read, Grep, Glob, Bash(git diff:*), Bash(git log:*)
model: sonnet
---
당신은 10년 경력의 시니어 코드 리뷰어입니다. ...
EOF

세션에서 호출:

code-reviewer 에이전트를 사용해서 최근 커밋(git diff HEAD~1)을 검토해 주세요

→ Agent(code-reviewer, "Review git diff HEAD~1")
[reviewer] Bash git diff HEAD~1 → Read src/userService.js
[메인] low: 옵셔널 체이닝 적절 / medium: 엣지 케이스 테스트 부재

2. 도구 권한 격리 체험

tools: Read, Grep만 가진 에이전트는 파일 수정을 시도해도 Edit 권한이 없어 분석만 보고합니다. tools에 Edit을 추가하면 그때서야 수정 가능(승인 요청). 권한이 곧 안전 경계임을 체험하는 단계입니다.

[dangerous-test] Read src/users.js
[dangerous-test] 파일 수정이 필요하지만 Edit 도구 권한이 없습니다. 분석만 보고합니다.
# tools에 Edit 추가 후 재실행 → 이번엔 Edit 사용(승인 요청)

3. 에이전트 3종 완성

test-writer(tools: Read/Grep/Glob/Edit/Write/Bash(npm test:*)) + docs-writer 추가. 세션에서 "사용 가능한 서브에이전트를 모두 알려주세요"로 3종 등록 확인.

4. Task 디스패치 3패턴

  • 자동(auto) — "최근 변경을 코드 리뷰해 주세요" → description 매칭으로 code-reviewer 자동 선택
  • 명시(explicit) — "test-writer 에이전트를 사용해서 …"로 직접 지정
  • 병렬(parallel) — "리뷰·테스트·README를 병렬로" → 3개 동시 호출
[메인] 3개의 Subagent를 병렬로 호출
[reviewer] 이슈 2건  [tester] 엣지 케이스 1건 보강  [docs] README 초안
/cost → Main $0.09 + reviewer $0.11 + tester $0.13 + docs $0.09 = $0.42

5. Headless 통합 & CI 맛보기

git diff HEAD~1 | claude -p "code-reviewer로 이 diff를 검토" \
  --output-format json > review-result.json
jq '.summary' review-result.json
jq '.issues | map(select(.severity == "high"))' review-result.json

GitHub Actions pull_request 트리거로 PR마다 code-reviewer를 자동 실행하는 워크플로까지 구성.

🔑 교훈 — description을 구체적으로 써야 자동 디스패치가 정확 · tools 화이트리스트가 안전 경계 · 병렬은 비용이 합산되므로 /cost로 추적.

📚 심화 · 비교 · 트러블슈팅 · FAQ

🤔 언제 서브에이전트를 쓰고, 언제 메인에서 하나

상황선택
반복적·전문적 작업(리뷰/테스트/문서)서브에이전트 (재사용)
여러 작업을 동시에 처리병렬 서브에이전트
메인 대화를 오염시키고 싶지 않은 탐색서브에이전트(격리)
일회성 간단한 수정메인 세션에서 바로

✍️ description 잘 쓰는 법 (자동 위임의 핵심)

Claude는 description을 읽고 어떤 에이전트에 맡길지 판단합니다. 모호하면 위임이 빗나갑니다.

"코드를 도와주는 에이전트"
"PR diff를 가독성·안전성·성능·테스트 커버리지 관점에서 검토. 사용 시점: 코드 리뷰 요청 또는 git diff 검토가 필요할 때."

🔧 tools 필드 문법 치트시트

표기의미
Read, Grep, Glob읽기 전용(안전한 리뷰어)
Bash(git diff:*)git diff 계열만 허용
Edit, Write파일 수정 권한(테스트 작성자 등)
(tools 생략)부모 세션 권한 상속

🧩 서브에이전트 vs 슬래시 커맨드 vs MCP

개념무엇한 줄
서브에이전트역할별 전문 AI"누가 일하나"
슬래시 커맨드재사용 프롬프트 매크로"무엇을 시키나"(Ch4)
MCP외부 도구 연결 프로토콜"무슨 도구를 쓰나"(Ch4)

🧯 자주 막히는 지점

증상처방
자동으로 위임이 안 됨description을 "사용 시점" 포함해 구체화, 또는 이름으로 명시 호출
에이전트가 수정을 못 함tools에 Edit/Write 누락 → 추가
비용이 예상보다 큼병렬은 합산됨 → /cost 확인, 단순 작업은 model: haiku

📐 스코프 5계층 (최신 20260703 에디션)

서브에이전트 정의 파일이 놓일 수 있는 위치는 우선순위를 가진 5계층입니다. 충돌 시 더 구체적인(가까운) 스코프가 이깁니다.

계층위치범위
Enterprise관리자 배포 경로조직 전체 강제
User~/.claude/agents/내 모든 프로젝트
Project.claude/agents/팀 공유(Git)
Local프로젝트 개인 오버라이드나만(미커밋)
Plugin플러그인 번들배포 단위로 묶어 공유

🧾 프론트매터 — 핵심 4 + 확장 (총 15필드)

최소 4개만 있어도 동작하지만, 최신 에디션은 자동 위임·표시·권한을 정교하게 제어하는 필드를 제공합니다.

구분필드
핵심 4name · description · tools · model
표시·위임color · proactive(자동 위임 강도) 등
권한·범위허용/차단 도구 세분화, 추가 디렉토리 등

💡 description에 "PROACTIVELY use when…"처럼 쓰면 자동 위임 적중률이 올라갑니다.

🚦 디스패치 5종 — 위임의 어휘

방식설명
자동 위임description 매칭으로 Claude가 알아서 선택
@멘션@code-reviewer로 특정 에이전트 지정 호출
fork현재 맥락을 복제해 분기 작업
중첩(nesting)에이전트가 또 다른 에이전트를 호출
resume이전 에이전트 세션을 이어서 재개

※ 병렬 실행은 자동 위임/멘션과 결합해 여러 작업을 동시에 처리할 때 쓰입니다.

💡 학습 팁 — PDF보다 Script가 빠르다

Ch2 PDF는 발표 자료라 설명이 얇습니다. 오히려 Script/workshop-code/ch2-agents/의 예시 md(파트당 5~10개)와 하단 한국어 발표자 노트가 이해에 훨씬 도움이 됩니다. (일부 스니펫은 코드블록이 여러 파일로 쪼개져 있으니 합쳐서 보세요.)

❓ FAQ

Q. 에이전트 파일은 어디에 두나요?
A. 팀 공유는 .claude/agents/(Git 커밋), 개인 전역은 ~/.claude/agents/.

Q. 몇 개까지 만들 수 있나요?
A. 제한은 없지만, 역할이 겹치면 자동 위임이 헷갈립니다. 명확히 구분되는 소수로 시작하세요.

다음 편 → ③ Admin Setup
조직 단위 배포·자격증명·거버넌스·SSO·감사를 다룹니다.
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2026/08   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함