Claude Code에서 서브에이전트를 수백 개 동시에 돌릴 수 있게 됐다. Anthropic이 공개한 Claude Opus 4.8은 모델 성능 업그레이드에 그치지 않고, "Dynamic Workflows"라는 오케스트레이션 레이어를 함께 내놨다. Claude Opus Dynamic Workflows 병렬 서브에이전트 구조가 Claude Code에 기본 탑재됐다는 건, 지금까지 순차적으로 처리하던 대규모 작업을 근본적으로 다시 설계할 수 있다는 의미다.
이 글은 Dynamic Workflows가 무엇인지 빠르게 파악하고, 실무에서 어떻게 적용하며, 어디서 무너지는지를 한 번에 정리한다.
1. 왜 지금 이걸 봐야 하나
기존 Claude Code 사용 방식을 떠올려 보면, 큰 작업은 대체로 이랬다. 거대한 컨텍스트를 하나의 프롬프트에 욱여넣거나, 파일을 나눠서 순서대로 넘기거나, 직접 스크립트를 짜서 반복 호출했다. 어느 방법이든 병목은 동일했다. 한 번에 하나씩.
대규모 코드베이스 리팩터링을 예로 들면, 500개 파일에 영향을 주는 인터페이스 변경 작업을 하나의 에이전트로 처리하면 컨텍스트 한계에 금방 부딪힌다. 파일을 10개씩 넘기면 일관성이 깨진다. 도구를 직접 짜면 유지보수 부담이 생긴다.
Dynamic Workflows는 이 구조를 뒤집는다. 하나의 오케스트레이터가 작업을 잘게 쪼개 수백 개의 서브에이전트에 분배하고, 각 서브에이전트는 독립적으로 실행된 뒤 결과를 합친다. 상한선은 서브에이전트 1,000개다.
실무에서 가장 먼저 체감할 영역은 세 가지다.
| 작업 유형 | 기존 방식의 한계 | Dynamic Workflows 적용 후 |
|---|---|---|
| 대규모 코드 리팩터링 | 파일 단위 순차 처리, 컨텍스트 초과 | 파일별 서브에이전트 병렬 처리 |
| 멀티 파일 테스트 생성 | 한 번에 일부만 커버, 일관성 불안정 | 모듈별 동시 생성 후 통합 |
| 대용량 문서 분석 | 청크 분할 후 수동 취합 | 섹션별 병렬 분석, 자동 집계 |
여기서 놓치면 안 되는 맥락이 있다. 이건 단순한 성능 향상이 아니다. 에이전트가 에이전트를 관리하는 구조가 외부 프레임워크 없이 Claude Code 안에 내장됐다. 워크플로우 설계의 기본 단위 자체가 달라진다.
2. 핵심 아이디어
Dynamic Workflows를 한 문장으로 정리하면 이렇다. "하나의 오케스트레이터가 작업을 분해하고, 수백 개의 서브에이전트가 독립 실행하며, 결과를 다시 하나로 합친다."
비유를 들면 이해가 빠르다. 혼자 사무실에서 100페이지 보고서를 쓰던 방식에서, 부서 전체가 섹션을 나눠 동시에 작성하는 방식으로 바뀌는 것이다. 단, 각자가 같은 양식을 쓰고 편집장이 최종 취합한다는 전제가 있어야 결과물이 일관성을 유지한다.
비용 구조도 함께 바뀌었다. Opus 4.8은 이전 버전과 동일한 기본 가격을 유지하면서 "Fast Mode"를 더 저렴하게 제공한다.
| 모드 | 적합한 작업 | 비용 수준 |
|---|---|---|
| 기본 모드 | 정확도가 중요한 최종 판단, 복잡한 추론 | 기존과 동일 |
| Fast Mode | 반복 작업, 형식 변환, 단순 검증 | 기본 모드 대비 낮음 |
무조건 고성능 모드를 켜두던 습관을 바꿀 수 있다. 작업 유형에 따라 모드를 분기하면 API 비용이 눈에 띄게 줄어든다. 단, 어떤 작업을 Fast Mode로 내릴지 판단 기준을 미리 정해두지 않으면 오히려 품질 문제가 생긴다.
권한 설계 이야기는 다음 섹션에서 본격적으로 다루지만, 여기서 한 가지만 짚어두겠다. 서브에이전트 수가 늘수록 하나의 잘못된 권한 설정이 시스템 전체로 퍼지는 경로도 그만큼 늘어난다. 병렬 실행 성능보다 서브에이전트 권한 경계 설계가 이 기능의 진짜 핵심이다.
3. 바로 따라하는 방법
Dynamic Workflows를 실제로 적용하려면 오케스트레이터 에이전트, 서브에이전트 정의, 권한 범위 설정 세 단계로 나눠 접근하는 게 실수를 줄인다.
기본 구조 잡기
# 오케스트레이터 에이전트 예시 (의사 코드)
orchestrator_prompt = """
다음 작업을 독립 실행 가능한 단위로 분해하라.
각 서브태스크는:
- 입력 범위: 특정 파일 또는 데이터 청크만
- 출력 형식: JSON (status, result, error)
- 외부 접근: 금지 (로컬 파일 읽기/쓰기만 허용)
"""
subtask_template = {
"task_id": "refactor_module_auth",
"scope": ["src/auth/login.py", "src/auth/token.py"],
"allowed_tools": ["read_file", "write_file"],
"forbidden_tools": ["web_search", "shell_exec"],
"output_path": "outputs/auth_refactor.json"
}
권한 범위 명시적으로 좁히기
Claude Code의 settings.json에서 서브에이전트별 도구 허용 목록을 점검한다.
{
"subagent_defaults": {
"allowed_tools": ["read_file", "write_file"],
"max_file_paths": ["src/", "tests/"],
"network_access": false,
"shell_commands": []
},
"fast_mode_tasks": [
"format_conversion",
"comment_generation",
"lint_fix"
],
"standard_mode_tasks": [
"architecture_decision",
"security_review",
"final_merge"
]
}
실행 후 검증 체크
# 서브에이전트 실행 로그 확인
cat .claude/logs/workflow_run_$(date +%Y%m%d).json | jq '.subagents[] | {id, status, error}'
# 파일 변경 범위 확인 (의도하지 않은 파일 수정 여부)
git diff --name-only HEAD
# 예상 출력 수 vs 실제 출력 수 비교
ls outputs/ | wc -l # 예: 500개 서브태스크 → 500개 출력 파일
실행 결과에서 status: "error" 항목이 있으면 해당 서브에이전트의 scope가 너무 넓거나 도구 권한이 부족한 경우가 많다. 오류 메시지를 보기 전에 먼저 scope와 allowed_tools를 확인한다.
4. 운영할 때 조심할 점
권한 확산 문제
서브에이전트 하나가 파일을 잘못 쓰거나 외부 API를 예상치 못하게 호출할 때 생기던 리스크가, 동시 실행 구조에서는 수백 배로 증폭될 수 있다. 특히 지금 Claude Code에 광범위하게 열어둔 도구 허용 목록이 있다면 오늘 반드시 다시 점검해야 한다.
점검 항목은 세 가지다.
- 파일 접근 범위:
src/폴더 외 접근이 허용돼 있지 않은지 - 셸 실행 권한: 서브에이전트가 임의의 명령어를 실행할 수 있는지
- 외부 네트워크 접근: API 호출이나 웹 검색이 허용 상태인지
롤백 경로 미리 설계
1,000개 서브에이전트가 동시에 파일을 수정하고 나서 결과가 잘못됐을 때, 변경 사항을 하나씩 되돌리는 건 현실적으로 불가능하다. 실행 전에 반드시 스냅샷 또는 브랜치를 만들어둔다.
# 실행 전 안전 브랜치 생성
git checkout -b workflow/refactor-$(date +%Y%m%d-%H%M)
git stash # 미저장 변경사항 보호
Fast Mode 남용 주의
비용 절감을 위해 Fast Mode를 기본값으로 설정하면, 정확도가 중요한 작업에서 품질이 낮아질 수 있다. 아키텍처 결정, 보안 관련 코드, 최종 병합 단계는 반드시 기본 모드로 분기한다.
환경별 차이
Mac 로컬 환경과 Linux CI 환경에서 파일 경로 처리 방식이 다를 수 있다. 특히 심볼릭 링크나 절대/상대 경로 혼용이 있는 코드베이스에서는 서브에이전트 scope 경로를 환경에 맞게 파라미터화해야 한다.
자주 묻는 질문
Dynamic Workflows 병렬 서브에이전트는 언제 쓰는 게 좋을까?
작업이 독립적으로 분해 가능하고, 각 조각이 서로의 실행 결과에 의존하지 않을 때 효과가 가장 크다. 500개 파일을 각자 독립적으로 리팩터링하거나, 모듈별로 별도 테스트를 생성하는 경우가 대표적이다. 반면 앞 단계 결과가 다음 단계 입력이 되는 순차 의존 구조라면, 서브에이전트를 무작정 늘려도 병렬 실행 효과를 보기 어렵다.
적용하기 전에 무엇을 먼저 확인해야 할까?
세 가지를 순서대로 점검한다. 첫째, 현재 Claude Code의 도구 허용 목록과 파일 접근 범위가 필요 이상으로 열려 있지 않은지. 둘째, 실행 전 스냅샷 또는 브랜치를 통해 롤백 경로가 확보돼 있는지. 셋째, Fast Mode와 기본 모드를 어떤 기준으로 분기할지 규칙이 정해져 있는지다. 이 세 가지 없이 서브에이전트 수만 늘리면 문제가 생겼을 때 원인 추적이 매우 어려워진다.
결과가 제대로 나왔는지 어떻게 검증할까?
두 가지 레이어로 나눠서 확인한다. 실행 레이어에서는 각 서브에이전트의 상태(status)와 오류 메시지를 로그에서 확인하고, 예상 출력 수와 실제 출력 수를 비교한다. 품질 레이어에서는 git diff --name-only로 의도하지 않은 파일이 수정됐는지 확인하고, 샘플링 방식으로 출력 결과 일부를 직접 검토한다. 특히 Fast Mode로 처리한 결과는 기본 모드 결과보다 더 꼼꼼히 검증하는 게 좋다.
마무리
Dynamic Workflows의 가치는 서브에이전트를 1,000개까지 돌릴 수 있다는 숫자에 있지 않다. 각 서브에이전트가 딱 필요한 만큼만 접근하도록 경계를 설계하는 것, 그게 이 기능을 안전하게 쓰는 핵심이다.
오늘 확인할 것: Claude Code 도구 허용 목록 점검, Fast/기본 모드 분기 기준 수립, 실행 전 롤백 경로 확보.
다음 글에서는 실제 코드베이스 리팩터링 작업에 Dynamic Workflows를 적용한 구체적인 사례와 서브에이전트 권한 설정 템플릿을 다룰 예정이다.
🐦 X에서 더 빠르게: @baegseungh7061
📚 이 시리즈 더 보기: AI 인사이트
💌 새 글 알림: X 팔로우 또는 블로그 RSS 구독
'AI 인사이트' 카테고리의 다른 글
| Flowise RCE 취약점 PoC 공개 — LLM 빌더 쓴다면 오늘 확인해야 한다 (0) | 2026.05.31 |
|---|---|
| ChatGPT 요약 기능이 피싱 통로가 됐다 — ChatGPhish 취약점 분석 (0) | 2026.05.30 |
| Claude Code가 코드 작성 중 보안 취약점을 실시간으로 잡아주는 방법 (0) | 2026.05.28 |
| last30days-skill — 구글 대신 Reddit·X·Polymarket을 동시에 검색하는 AI 브리핑 스킬 (0) | 2026.05.27 |
| 200,000줄 코드베이스를 클릭 가능한 지식 그래프로 바꾸는 Claude Code 플러그인 (0) | 2026.05.27 |