Claude Code가 이제 멀티 에이전트 하네스를 즉석에서 직접 작성하고 조율할 수 있게 됐습니다. 동적 워크플로우의 작동 원리와 이를 최대한 활용하는 패턴을 살펴봅니다.
지난주, Claude Code에 동적 워크플로우가 출시됐습니다. 이제 Claude는 주어진 작업에 맞게 하네스를 즉석에서 직접 작성할 수 있습니다.
기본 Claude Code 하네스는 코딩에 최적화되어 있지만, 많은 작업이 코딩 작업과 유사한 구조를 가지고 있어 다양한 유형의 작업에도 유용하게 활용됩니다. 다만 리서치, 보안 분석, 에이전트 팀, 코드 리뷰처럼 최상의 성능을 내기 위해 Claude Code 위에 커스텀 하네스를 별도로 구축해야 했던 작업 유형들도 존재합니다.
워크플로우를 사용하면 Claude Code 위에 동적으로 하네스를 생성해, 이러한 문제들을 Claude가 더 자연스럽게 해결할 수 있습니다. 워크플로우는 다른 사람과 공유하거나 재사용하는 것도 가능합니다.
이 글에서는 동적 워크플로우를 직접 사용하며 얻은 초기 경험과 인사이트를 공유합니다. 여러분이 이 기능을 최대한 활용하는 데 도움이 될 것입니다. 다만 아직 모범 사례가 정립되는 단계임을 참고하세요. 동적 워크플로우는 토큰 사용량이 많은 편이며, 복잡하고 가치 있는 작업에 가장 적합합니다.
기술적인 세부 내용을 살펴보기 전에, 워크플로우로 어떤 것이 가능한지 감을 잡을 수 있도록 예시 프롬프트를 몇 가지 먼저 소개합니다.
"이 테스트는 50번 중 1번꼴로 실패합니다. 재현을 위한 워크플로우를 구성하고, 경쟁 조건에 대한 가설을 여러 개 세운 뒤, 하나의 가설이 증거로 확인될 때까지 멈추지 마세요."
"워크플로우를 사용해 지난 50개 세션을 분석하고 내가 반복해서 수정한 내용을 찾아서, 자주 반복되는 것들은 CLAUDE.md 규칙으로 만들어 주세요."
"워크플로우를 사용해 지난 6개월간 Slack의 #incidents 채널을 분석하고, 아직 티켓이 등록되지 않은 반복적인 근본 원인을 찾아주세요."
"제 사업 계획서를 가져다가, 투자자·고객·경쟁사의 시각에서 각각 날카롭게 비판하는 에이전트들로 워크플로우를 구성해 실행해 주세요."
"이력서 80개가 담긴 폴더입니다. 워크플로우를 사용해 백엔드 직무에 맞게 순위를 매기고 상위 10명을 다시 한번 검토해 주세요. AskUserQuestion 도구로 저에게 평가 기준도 물어봐 주세요."
"이 CLI 도구의 이름을 정해야 합니다. 워크플로우로 여러 후보를 브레인스토밍하고 토너먼트 방식으로 상위 3개를 선정해 주세요."
"워크플로우를 사용해 코드베이스 전체에서 User 모델을 Account로 이름을 바꿔주세요."
"블로그 포스트 초안의 모든 기술적 주장을 워크플로우로 코드베이스와 대조해 검증해 주세요. 잘못된 내용은 하나도 없이 배포하고 싶습니다."
동적 워크플로우는 서브에이전트를 생성하고 조율하는 몇 가지 특수 함수를 포함한 JavaScript 파일을 실행하는 방식으로 동작합니다.

동적 워크플로우에는 데이터 처리를 위한 JSON, Math, Array 같은 표준 JavaScript 함수도 포함됩니다.
특히 중요한 점은, 동적 워크플로우에서 각 에이전트가 사용할 모델과 서브에이전트를 별도의 worktree에서 실행할지 여부를 직접 결정할 수 있다는 것입니다. 이를 통해 Claude가 작업에 필요한 지능 수준과 격리 수준을 스스로 선택할 수 있습니다.
사용자 조작이나 터미널 종료 등으로 워크플로우가 중단된 경우, 세션을 재개하면 중단된 지점부터 이어서 실행할 수 있습니다.
기본 Claude Code 하네스에 작업을 요청하면, 동일한 컨텍스트 윈도우 안에서 계획 수립과 실행이 함께 이뤄집니다. 대부분의 코딩 작업에서는 이 방식이 매우 효과적이지만, 장시간 실행되거나, 대규모 병렬 처리가 필요하거나, 고도로 구조화되었거나, 대립적인 성격의 작업에서는 한계를 드러낼 수 있습니다.
복잡한 작업을 단일 컨텍스트 윈도우에서 오래 진행할수록 Claude는 몇 가지 특정 실패 패턴에 취약해집니다.
워크플로우를 생성하면, 각자의 컨텍스트 윈도우와 집중적이고 독립적인 목표를 가진 별도의 Claude 서브에이전트를 조율해 이러한 문제들을 효과적으로 방지할 수 있습니다.
이전에 Claude Agent SDK나 claude -p를 사용해 여러 Claude Code 인스턴스를 조율하는 정적 워크플로우를 구성해 본 적이 있을 것입니다.
그런데 정적 워크플로우는 모든 엣지 케이스를 처리할 수 있어야 하므로 대체로 범용적인 형태로 만들어집니다. Claude Opus 4.8과 동적 워크플로우를 통해, 이제 Claude는 특정 사용 사례에 맞춤화된 커스텀 하네스를 직접 작성할 수 있을 만큼 충분히 발전했습니다.

Claude에게 워크플로우를 만들어 달라고 요청하거나, 트리거 단어 "ultracode"를 사용해 Claude Code가 워크플로우를 생성하도록 유도하는 것만으로도 동적 워크플로우를 바로 사용할 수 있습니다.
하지만 동적 워크플로우의 작동 방식에 대한 멘탈 모델을 갖추면, 언제 사용할지 판단하고 프롬프트로 Claude를 어떻게 유도할지 더 잘 이해할 수 있습니다.
Claude가 워크플로우를 구성할 때 활용하고 조합하는 주요 패턴들은 다음과 같습니다.

분류 에이전트로 작업 유형을 판별한 뒤, 유형에 따라 서로 다른 에이전트나 동작으로 라우팅하는 방식입니다. 또는 처리 후 출력 결과를 판별하는 용도로 분류기를 활용할 수도 있습니다.
작업을 여러 개의 작은 단계로 분해하고, 각 단계마다 에이전트를 할당한 뒤 결과를 종합하는 방식입니다. 처리해야 할 단계가 많거나, 각 단계가 독립된 컨텍스트 윈도우에서 실행될 때 간섭이나 교차 오염 없이 더 나은 결과를 얻을 수 있는 경우에 특히 유용합니다. 종합 단계는 배리어(barrier) 역할을 해서 모든 분산 에이전트의 완료를 기다린 후, 구조화된 출력을 하나의 결과로 병합합니다.
생성된 각 에이전트의 출력을 루브릭이나 기준에 따라 대립적으로 검증하는 별도의 에이전트를 추가로 실행하는 방식입니다.
특정 주제에 대해 다수의 아이디어를 생성한 뒤 루브릭이나 검증을 통해 필터링하고, 중복을 제거해 품질이 검증된 아이디어만 반환하는 방식입니다.
작업을 분할하는 대신 에이전트들이 경쟁하도록 합니다. N개의 에이전트가 각자 다른 접근 방식으로 동일한 작업에 도전하고, 심판 에이전트가 쌍별 비교(pairwise) 방식으로 결과를 평가해 최종 승자를 가립니다.
작업량을 예측하기 어려운 경우, 고정된 횟수 대신 정해진 중단 조건(새로운 발견 없음, 또는 로그에 오류 없음 등)이 충족될 때까지 에이전트를 반복 생성하는 방식입니다.
Claude Code에게 동적 워크플로우를 만들어 달라고 요청할 수 있는 상황을 창의적으로 생각해 보세요. 직접 사용해보니 비기술적인 업무에서도 워크플로우가 오히려 더 유용한 경우가 많았습니다.
Bun은 워크플로우를 활용해 Zig에서 Rust로 재작성됐습니다. 구체적인 과정은 Jarred의 X 스레드에서 확인할 수 있습니다.
핵심은 콜 사이트, 실패하는 테스트, 모듈 등 처리 단위로 작업을 분해하는 것입니다. 각 수정 작업마다 worktree에서 서브에이전트를 생성해 수정을 진행하고, 별도의 에이전트가 대립적 검토를 수행한 후 병합합니다. 리소스를 많이 소모하는 명령은 사용하지 않도록 에이전트에게 지시해, 머신 리소스가 소진되지 않는 범위에서 병렬화를 최대화할 수 있습니다.
동적 워크플로우를 사용하는 딥 리서치 스킬(/deep-research)을 Claude Code 내에 공개한 바 있습니다. 구체적으로는 웹 검색을 분산 실행하고, 소스를 가져와 주장을 대립적으로 검증한 뒤, 출처가 명시된 리포트로 종합합니다.
하지만 이런 리서치는 웹 검색에만 국한되지 않습니다. 예를 들어 Slack의 컨텍스트를 바탕으로 상태 보고서를 작성하거나, 코드베이스를 심층 탐색해 특정 기능의 작동 방식을 파악하는 데도 활용할 수 있습니다.

반대로, 보고서에 포함된 모든 사실적 주장을 확인하고 출처를 찾고 싶다면, 하나의 에이전트가 모든 사실적 주장을 식별한 뒤 각 주장마다 서브에이전트를 생성해 상세 검증을 수행하는 워크플로우를 생성할 수 있습니다. 검증 에이전트가 소스 서브에이전트를 재검토해 해당 출처의 품질을 확인하는 단계를 추가하는 것도 가능합니다.

버그 심각도 기준으로 정렬된 지원 티켓처럼, Claude Code가 잘 평가할 수 있는 정성적 기준으로 항목을 정렬해야 할 때가 있습니다. 그런데 1,000개 이상의 항목을 단일 프롬프트에서 처리하려 하면 품질이 저하되고 컨텍스트에도 들어가지 않습니다. 대신 토너먼트 방식, 즉 쌍별 비교 에이전트 파이프라인(절대 점수보다 비교 판단이 더 신뢰할 수 있음)을 활용하거나, 병렬로 버킷 랭킹을 수행한 후 결과를 병합하세요. 각 비교는 독립적인 에이전트에서 처리되므로, 결정적 루프가 브래킷을 관리하고 컨텍스트에는 현재 순서만 유지됩니다.

CLAUDE.mds에 명시해도 Claude가 놓치거나 잘 따르지 못하는 규칙이 있다면, 검증해야 할 규칙 목록을 담은 워크플로우를 만들고 규칙마다 전담 검증 에이전트를 두세요. 규칙이 실제로 준수됐는지 재검토하는 회의적 페르소나 서브에이전트를 추가하면 과도한 오탐(false positive)을 줄이는 데 도움이 됩니다.
역방향도 효과적입니다. 최근 세션과 코드 리뷰 코멘트에서 반복적으로 수정한 내용을 추출하고, 병렬 에이전트로 패턴을 클러스터링한 뒤, 각 후보를 대립적으로 검증하고(이 규칙이 실제 실수를 예방했을까?), 검증을 통과한 것들을 CLAUDE.md으로 정제하는 방식입니다.
디버깅은 독립적인 가설을 여러 개 세우고 검증할 때 가장 효과적입니다. 그런데 단일 컨텍스트 윈도우만 사용하면 Claude는 자기 편향에 빠질 수 있습니다.
워크플로우를 활용하면 구조적으로 이 문제를 방지할 수 있습니다. 서로 다른 증거에서 가설을 도출하는 에이전트를 별도로 생성하는 것입니다. 예를 들어 로그, 파일, 데이터를 각각 담당하는 에이전트를 분리하면, 각 가설이 검증자와 반박자로 구성된 패널을 거치게 됩니다.
이는 코드에만 국한되지 않습니다. 워크플로우는 세일즈(3월에 매출이 떨어진 이유는?), 데이터 엔지니어링(이 파이프라인이 실패한 이유는?), 또는 모든 종류의 사후 분석에도 활용할 수 있습니다.

어느 팀에나 사람이 직접 모두 처리하기 어려운 지원 대기열, 버그 리포트, 백로그가 있습니다.
트리아지 워크플로우는 각 항목을 분류하고 기존에 추적 중인 항목과 중복을 제거한 뒤, 수정을 시도하거나 사람에게 에스컬레이션하는 등 후속 조치를 취합니다.
트리아지 워크플로우에서 유용한 패턴은 격리(quarantine)입니다. 신뢰할 수 없는 공개 콘텐츠를 읽는 에이전트가 높은 권한이 필요한 작업은 수행하지 못하도록 차단하고, 해당 작업은 정보를 처리하는 별도 에이전트가 담당하게 합니다.
/loop와 트리아지 워크플로우를 함께 사용하면 Claude가 이를 지속적으로 실행하게 할 수 있습니다.
다양한 해결책을 탐색할 때, 특히 디자인이나 네이밍처럼 취향에 따라 갈리는 영역에서 루브릭이 있으면 워크플로우가 특히 유용합니다.
Claude에게 다양한 해결책을 탐색하게 하고, 리뷰 에이전트에게 좋은 해결책의 기준을 루브릭으로 제공해 보세요. 리뷰 에이전트가 기준을 충족했다고 판단할 때 작업이 완료됩니다. 루브릭을 기준으로 토너먼트 방식으로 해결책의 순위를 매기거나 선택하는 것도 가능합니다.
worktree에서 별도의 에이전트를 실행하고 비교 에이전트를 추가해 특정 출력을 루브릭에 따라 비교·채점함으로써, 특정 작업에 대한 경량 평가를 수행할 수 있습니다. 예를 들어 특정 기준에 따라 직접 만든 스킬을 평가하고 개선하는 데 활용할 수 있습니다.
작업에 맞게 튜닝된 분류 에이전트를 만들어 어떤 모델을 사용할지 결정하게 하세요. 수많은 도구 호출이 수반되는 작업의 경우, 실행 전에 리서치를 먼저 수행해 최적의 모델을 파악하는 방식이 특히 유용합니다.
예를 들어 "auth 모듈이 어떻게 작동하는지 설명해줘"라는 작업에 가장 적합한 모델은 auth 모듈의 파일 수와 코드베이스 구조에 따라 달라집니다. 분류 에이전트가 이를 먼저 파악한 뒤, 예상되는 작업 복잡도에 따라 Sonnet이나 Opus로 라우팅할 수 있습니다.
워크플로우는 아직 새로운 기능입니다. 탁월한 결과를 낼 수 있는 사용 사례가 많지만, 모든 작업에 필요한 것은 아니며 토큰 사용량이 크게 늘어날 수 있습니다.
워크플로우는 지금까지 시도해보지 못했던 방식으로 Claude Code를 활용하는 창의적인 도구로 쓰는 것이 좋습니다. 일반적인 코딩 작업이라면 "정말 더 많은 컴퓨팅이 필요한가?"라고 자문해 보세요. 대부분의 일반적인 코딩 작업에는 5명의 리뷰어 패널이 필요하지 않습니다.
위에서 설명한 구체적인 기법을 적용해 상세하게 프롬프팅할수록 동적 워크플로우에서 더 나은 결과를 얻을 수 있습니다.
워크플로우가 대규모 작업에만 적합한 것은 아닙니다. "빠른 워크플로우"를 사용하도록 프롬프트할 수도 있습니다. 예를 들어 특정 가정에 대한 빠른 대립적 검토를 수행하는 식으로 활용할 수 있습니다.
/goal 및 /loop과 함께 활용하기트리아지, 리서치, 검증처럼 반복 실행이 필요한 워크플로우는 /loop와 함께 사용해 정기적으로 실행하고, /goal로 명확한 완료 조건을 설정하세요.
동적 워크플로우에 명시적인 토큰 사용량 예산을 설정해 작업에 사용되는 토큰을 제한할 수 있습니다. "토큰 10,000개 사용"처럼 예산을 프롬프트에 명시하면 상한이 설정됩니다.
워크플로우 메뉴에서 "s"를 눌러 워크플로우를 저장할 수 있습니다. 저장된 파일은 ~/.claude/workflows에 커밋하거나 스킬을 통해 배포할 수 있습니다.

스킬을 통해 공유하려면 JavaScript 워크플로우 파일을 스킬 폴더에 넣고 SKILL.MD에서 참조하세요. 더 유연하게 활용하려면 스킬 내 워크플로우를 그대로 실행해야 하는 스크립트가 아닌 템플릿으로 활용하도록 Claude에게 안내하는 것이 좋습니다.

워크플로우는 Claude Code를 확장하는 유용한 새로운 방법입니다. 이를 Claude를 활용해 작업을 해결하는 새로운 방식을 탐색하는 출발점으로 삼길 권장합니다. 가장 효과적으로 활용하는 방법은 아직 발견되지 않은 것들이 많습니다. 여러분이 발견한 것들을 알려주세요.
이 글은 Claude Code를 담당하는 Anthropic 기술 스태프 Thariq Shihipar와 Sid Bidasaria가 작성했습니다.