AI 코딩 에이전트 실전 (4/5) — 멀티 에이전트 패턴: 오케스트레이터와 전문가 분리
한 LLM 세션이 모든 일을 다 하면 컨텍스트가 망가진다. 그래서 역할 분리가 필요해진다.
핵심 요약
- 멀티 에이전트는 모델을 더 많이 쓰자가 아니라 컨텍스트를 분리하자는 설계
- 1차 자료: Anthropic Claude Code subagents docs, OpenClaw·Hermes 운영 경험
- 핵심 패턴 3가지: 오케스트레이터 + 전문가 / 파이프라인 / 협업
- 비용은 단순 합산이 아니라 컨텍스트 절약 × 재시도 감소 = 전체적으로 더 싸지는 경우가 많음
- 흔한 함정: 권한 누수, 컨텍스트 오염, 디버깅 곤란
1. 왜 한 에이전트로 다 하면 안 되는가
단일 LLM 세션이 모든 작업(설계 + 구현 + 테스트 + 리뷰 + 문서)을 다 하면 세 가지 문제가 생긴다:
- 컨텍스트 오염: 한 작업의 디테일이 다른 작업의 판단을 흐린다. 디버깅 중 본 임시 코드가 PR 리뷰의 기준이 된다.
- 컨텍스트 한도 초과: 200K 토큰도 무거운 작업이 누적되면 빠르게 찬다. 자동 압축은 결정의 근거를 깎아 낸다.
- 권한 비대칭: 같은 세션이 발행 + 자격 정보 접근 + 코드 변경을 모두 갖는다. 한 실수가 광범위하다.
해결책: 작업 종류별로 에이전트를 분리하고, 위에서 한 명이 조정한다.
2. 오케스트레이터 + 전문가 분리 패턴
가장 많이 쓰는 토폴로지다.
[오케스트레이터 = main]
│
┌────────┼────────┬────────┐
▼ ▼ ▼ ▼
[코드 변경] [테스트] [리뷰] [문서화]
executor tester reviewer writer
오케스트레이터의 역할: - 작업을 받아 어느 전문가에게 보낼지 결정. - 전문가가 돌려준 결과를 간략히 흡수 (full output이 아니라 요약). - 다음 단계를 결정.
전문가의 역할: - 자기 전문 영역에서 깊게 일한다. - 결과를 정리된 형태(완료 보고)로 돌려준다 — 오케스트레이터의 컨텍스트를 보호.
핵심 원리: 오케스트레이터는 전체 그림을, 전문가는 깊이를 본다. 두 종류의 컨텍스트가 분리되어 누구도 과부하되지 않는다.
3. 토폴로지 3가지
3.1 수퍼바이저 (Hub-and-Spoke)
- 위 그림처럼 한 명의 오케스트레이터 + N명의 전문가.
- 단순·예측 가능. 디버깅이 쉽다.
- 한계: 전문가끼리 직접 협업해야 할 때 매번 오케스트레이터를 거친다.
3.2 파이프라인 (직렬)
- 전문가 A → B → C 순서로 결과를 넘긴다.
- 데이터 변환·검증·발행 같은 단계 명확한 작업에 강하다.
- 한계: 한 단계 실패가 전체를 막는다.
3.3 협업 (메시 / 합의)
- 여러 전문가가 동시에 같은 입력을 보고 각자 답을 내고, 합의/투표로 결과를 정한다.
- 코드 리뷰의 서로 다른 관점 (보안 / 성능 / 가독성)에 적합.
- 비용이 가장 비싸다 — 같은 토큰을 N번 처리한다.
선택 룰: 작업이 명확한 단계면 파이프라인, 명확한 분업이면 수퍼바이저, 서로 다른 관점이 필요하면 협업.
4. Claude Code의 subagents — 실전 구현
Claude Code는 Agent 도구로 서브에이전트를 호출한다. subagent_type으로 전문가 타입을 지정하고, self-contained 프롬프트를 넘긴다.
프롬프트 작성 원칙 (실전에서 가장 많이 틀리는 곳): - 서브에이전트는 메인의 컨텍스트를 모른다. 따라서 무엇을 하는지·왜 하는지·이미 시도한 것을 모두 프롬프트에 넣는다. - 출력 형태를 명시한다: "200단어 이하 보고", "JSON 결과", "URL만 반환" 등. - 생각의 위임은 금지: "분석해서 결정해라"가 아니라 "X 파일 Y줄을 Z로 바꿔라" — 메인이 이해한 다음 위임한다.
병렬 vs 직렬: - 독립적인 N개 조사를 동시에 보낼 수 있다 (병렬). - 결과가 다음 단계에 의존하면 직렬로. - 병렬은 빠르지만 총 토큰 비용이 같거나 더 든다.
5. 비용 — 단순 합산이 아니다
"멀티 에이전트는 N배 비용"이라는 직관은 절반만 맞다.
더 비싸지는 요인: - 각 서브에이전트의 자체 컨텍스트 (CLAUDE.md, 룰, 도구 정의 등)가 매번 로드된다. - 오케스트레이터-전문가 메시지 왕복 자체가 토큰 소비.
더 싸지는 요인: - 메인의 컨텍스트가 가벼워져 압축이 덜 발생. 압축은 재요청을 부른다. - 전문가는 작은 모델(Haiku 등)로 돌려도 되는 경우가 많다 — 같은 모델을 쓸 필요 없다. - 재시도가 줄어든다 — 메인이 오염되면 결정 품질이 떨어져 작업 자체가 다시 돌아간다.
경험적 룰: 작업이 단순하고 1~2 step이면 단일 에이전트가 거의 항상 싸다. 5+ step 또는 전문성이 다른 단계가 섞이면 멀티가 종합 비용에서 유리해진다.
6. 흔한 함정 4가지
6.1 컨텍스트 오염 (cross-contamination)
- 메인이 전문가의 전체 출력을 흡수해 메모리에 저장 → 오염.
- 해결: 전문가는 요약 보고만 돌려주고 메인은 그 요약만 신뢰.
6.2 권한 누수
- 모든 에이전트가 모든 도구를 갖는다 → 한 실수가 광범위.
- 해결: 에이전트별 도구 화이트리스트. 발행은 지정 에이전트만.
6.3 디버깅 곤란
- "어느 에이전트가 어디서 잘못했는가"가 추적 어렵다.
- 해결: 모든 에이전트 호출에 correlation ID + 결과 요약을 로그한다. 세션 종료 시 별도 파일로 보존.
6.4 오버 엔지니어링
- 단순 작업에 멀티를 끼워 넣음.
- 해결: 3+ step 작업이라는 진입 룰. 그 미만은 단일 에이전트 + 자체 검증.
7. 한눈에 정리
| 패턴 | 적합한 상황 | 강점 | 약점 |
|---|---|---|---|
| 오케스트레이터 + 전문가 (수퍼바이저) | 명확한 분업 | 단순, 디버깅 쉬움 | 전문가 간 직접 통신 어려움 |
| 파이프라인 | 단계 명확 | 결과 추적성 | 한 단계 실패 = 전체 정지 |
| 협업 (메시/합의) | 서로 다른 관점 필요 | 다양성 | 가장 비쌈 |
| 단일 에이전트 | ≤2 step 작업 | 가장 싼 | 컨텍스트 오염 위험 |
설계 룰: 작업 종류가 분리되면 에이전트도 분리, 그렇지 않으면 단일이 답.
다음 편
다음 편(5/5)은 코딩 에이전트 비용 관리 — 토큰·캐싱·라우팅이다. 멀티 에이전트가 구조 분리라면, 다음 편은 비용 분리다.
참고 자료
- Anthropic, Subagents in Claude Code — code.claude.com/docs/agents (2026-05-05 확인).
- Anthropic, Multi-Agent Research System — anthropic.com/research/built-multi-agent-research-system (2026-05-05 확인).
- 시리즈 4편(하네스 엔지니어링이란) — 멀티 에이전트의 이론적 배경.
이 글은 AI 코딩 에이전트 실전 시리즈의 4/5 편입니다.
댓글
댓글 쓰기