초급
모든 작업을 위한 하네스: Claude Code의 동적 워크플로우
모든 작업을 위한 하네스: Claude Code의 동적 워크플로우
기본 Claude Code 하네스는 코딩용으로 설계되었지만, 많은 작업이 코딩 작업과 유사하기 때문에 다른 유형의 작업에도 유용합니다. 하지만 연구, 보안 분석, 에이전트 팀, 코드 리뷰와 같은 최고 성능을 달성하기 위해 Claude Code 위에 맞춤형 하네스를 구축해야 했던 특정 작업 클래스가 있습니다.
워크플로우를 사용하면 Claude가 이러한 모든 문제와 그 이상을 Claude Code 내에서 기본적으로 해결할 수 있는 하네스를 동적으로 생성할 수 있습니다. 또한 이러한 워크플로우를 다른 사람과 공유하고 재사용할 수도 있습니다.
이 글에서는 초기 워크플로우 경험과 학습 내용을 다루어 여러분이 최대한 활용할 수 있도록 하겠습니다.
단, 모범 사례는 아직 발전 중입니다! 동적 워크플로우는 종종 더 많은 토큰을 사용하므로, 언제 어떻게 사용할지 신중하게 생각해야 합니다.
참고: 이 게시물은 Claude 블로그에서도 볼 수 있습니다.
예시 프롬프트#
기술적 세부 사항에 들어가기 전에, 워크플로우의 가능성에 대해 생각해볼 수 있는 몇 가지 예시 프롬프트를 소개합니다.
- "이 테스트는 50번 실행 중 약 1번 정도 실패합니다. 이를 재현하고, 이론을 세우고, 워크트리에서 적대적으로 테스트하는 워크플로우를 설정하세요. /목표: 하나의 이론이 작동할 때까지 멈추지 마세요."
- "워크플로우를 사용하여 지난 50개 세션을 분석하고, 내가 계속 반복하는 수정 사항을 찾아내어 반복되는 것들을 CLAUDE.md 규칙으로 전환하세요."
- "워크플로우를 사용하여 지난 6개월간 Slack의 #incidents를 파헤치고, 아무도 티켓을 제출하지 않은 반복적인 근본 원인을 찾으세요."
- "내 사업 계획을 가져와서, 투자자, 고객, 경쟁자의 관점에서 서로 다른 에이전트가 이를 분석하는 워크플로우를 실행하세요."
- "여기 80개의 이력서 폴더가 있습니다. 워크플로우를 사용하여 백엔드 역할에 맞게 순위를 매기고 상위 10개를 재확인하세요. AskUserQuestion 도구를 사용하여 평가 기준에 대해 저를 인터뷰하세요."
- "이 CLI 도구의 이름이 필요합니다. 워크플로우를 사용하여 다양한 옵션을 브레인스토밍하고 토너먼트를 실행하여 상위 3개를 선정하세요."
- "워크플로우를 사용하여 User 모델을 모든 곳에서 Account로 이름을 변경하세요."
- "내 블로그 게시물 초안을 검토하고, 워크플로우를 사용하여 모든 기술적 주장을 코드베이스와 대조하여 확인하세요. 잘못된 내용을 배포하고 싶지 않습니다."
동적 워크플로우 작동 방식#
동적 워크플로우는 하위 에이전트를 생성하고 조정하는 데 도움이 되는 몇 가지 특수 함수가 포함된 JavaScript 파일을 실행합니다.

동적 워크플로우에는 데이터 처리를 돕기 위해 JSON, Math, Array와 같은 표준 JavaScript 함수도 포함됩니다.
동적 워크플로우가 에이전트가 사용할 모델과 하위 에이전트가 자체 워크트리에서 실행될지 여부를 결정할 수 있다는 점을 아는 것이 특히 유용합니다. 이를 통해 Claude가 필요한 지능 수준과 격리 수준을 선택할 수 있습니다.
워크플로우가 사용자 작업이나 터미널 종료 등으로 중단되면, 세션을 재개할 때 워크플로우가 중단된 지점부터 다시 시작할 수 있습니다.
동적 워크플로우가 필요한 이유#
기본 Claude Code 하네스에 작업을 요청하면, 동일한 컨텍스트 창에서 계획과 실행을 모두 수행해야 합니다. 많은 코딩 작업의 경우 매우 효과적이지만, 장기 실행, 대규모 병렬 처리, 또는 고도로 구조화된 적대적 작업에서는 때때로 문제가 발생할 수 있습니다.
이는 Claude가 단일 컨텍스트 창에서 복잡한 작업을 오래 수행할수록 몇 가지 특정 실패 모드에 취약해지기 때문입니다.
- 에이전트 게으름: Claude가 특히 복잡하고 여러 부분으로 구성된 작업을 완료하기 전에 중단하고, 부분적으로 진행한 후 작업이 끝났다고 선언하는 현상입니다. 예를 들어 보안 검토에서 50개 항목 중 20개만 처리하는 경우입니다.
- 자기 선호 편향: Claude가 자신의 결과나 발견을 선호하는 경향, 특히 평가 기준에 따라 이를 검증하거나 판단하도록 요청받을 때 나타납니다.
- 목표 표류: 여러 번의 턴을 거치면서 원래 목표에 대한 충실도가 점차 손실되는 현상으로, 특히 압축 후에 두드러집니다. 각 요약 단계는 손실이 있으며, 에지 케이스 요구 사항이나 "X를 하지 마세요"와 같은 제약 조건과 같은 세부 사항이 손실될 수 있습니다.
워크플로우를 생성하면 자체 컨텍스트 창과 집중된 격리된 목표를 가진 별도의 Claude를 조정하여 이러한 문제를 해결하는 데 도움이 됩니다.
동적 워크플로우 vs 정적 워크플로우#
이전에 Claude Agent SDK 또는
claude -p를 사용하여 여러 Claude Code 인스턴스를 함께 조정하는 정적 워크플로우를 생성했을 수 있습니다.하지만 정적 워크플로우는 모든 에지 케이스에서 작동해야 하기 때문에 일반적으로 더 일반적입니다. Claude Opus 4.8과 동적 워크플로우를 통해 Claude는 이제 사용 사례에 맞춤 제작된 하네스를 작성할 수 있을 만큼 지능적입니다.

동적 워크플로우 사용 시 유용한 패턴#
Claude에게 워크플로우를 만들도록 요청하거나, 트리거 단어 "ultracode"를 사용하여 Claude Code가 워크플로우를 생성하도록 하면 동적 워크플로우를 바로 사용할 수 있습니다.
하지만 동적 워크플로우가 어떻게 작동하는지에 대한 멘탈 모델을 구축하면, 언제 사용해야 하는지와 프롬프트를 통해 Claude를 어떻게 유도할 수 있는지 이해하는 데 도움이 됩니다.
워크플로우를 구축할 때 Claude가 사용하고 구성할 수 있는 몇 가지 일반적인 패턴이 있습니다.

분류 및 실행
분류기 에이전트를 사용하여 작업 유형을 결정한 다음, 작업에 따라 다른 에이전트나 동작으로 라우팅합니다. 또는 마지막에 분류기를 사용하여 출력을 결정합니다.
분산 및 종합
작업을 여러 개의 작은 단계로 나누고, 각 단계에서 에이전트를 실행한 다음 해당 결과를 종합합니다. 이는 작은 단계가 많거나, 각 단계가 자체적인 깨끗한 컨텍스트 창을 사용하여 서로 간섭하거나 교차 오염되지 않도록 할 때 특히 유용합니다. 종합 단계는 장벽 역할을 합니다. 모든 분산 에이전트가 완료될 때까지 기다린 다음, 구조화된 출력을 하나의 결과로 병합합니다.
적대적 검증
각 생성된 에이전트에 대해 별도의 생성된 에이전트를 실행하여 평가 기준이나 루브릭에 대해 출력을 적대적으로 검증합니다.
생성 및 필터링
주제에 대한 여러 아이디어를 생성한 다음, 평가 기준이나 검증을 통해 필터링하고 중복을 제거하여 가장 높은 품질의 검증된 아이디어만 반환합니다.
토너먼트
작업을 나누는 대신, 에이전트가 작업을 두고 경쟁하도록 합니다. 각각 다른 접근 방식을 사용하여 동일한 작업을 시도하는 N개의 에이전트를 생성합니다. 그런 다음 프롬프트나 모델이 판정 에이전트를 사용하여 쌍으로 결과를 판단하고 승자가 나올 때까지 진행합니다.
완료될 때까지 반복
알 수 없는 양의 작업이 있는 경우, 고정된 횟수 대신 중지 조건(새로운 발견 사항 없음, 로그에 오류 없음)이 충족될 때까지 에이전트 생성을 반복합니다.
사용 사례#
Claude Code에 동적 워크플로우를 만들도록 요청할 시기와 방법을 창의적으로 생각해보세요. 저는 워크플로우가 비기술적 작업에서 때로는 더 유용하다는 것을 발견했습니다.

마이그레이션 및 리팩터링#
Bun은 워크플로우를 사용하여 Zig에서 Rust로 재작성되었습니다. 이 작업이 어떻게 수행되었는지에 대한 자세한 내용은 Jarred의 X 스레드에서 확인할 수 있습니다.
핵심은 작업을 호출 지점, 실패하는 테스트, 모듈 등에서 처리해야 하는 일련의 단계로 분해하는 것입니다. 각 수정 사항에 대해 워크트리에서 하위 에이전트를 생성하여 수정을 수행한 다음, 다른 에이전트가 적대적으로 검토하고 병합하도록 합니다. 에이전트에게 리소스 집약적인 명령어를 사용하지 말라고 지시하여 머신의 리소스가 부족해지지 않으면서 최대한 병렬화를 수행하는 것을 고려하세요.
심층 연구#
저희는 Claude Code 내에서 동적 워크플로우를 사용하는 심층 연구 스킬(
/deep-research)을 공개했습니다. 구체적으로, 웹 검색을 확장(fan-out)하고, 소스를 가져오며, 주장을 적대적으로 검증하고, 인용된 보고서를 종합합니다.하지만 이러한 종류의 연구는 웹 검색 이상의 용도로 사용될 수 있습니다. 예를 들어, Claude에게 Slack의 컨텍스트에서 상태 보고서를 컴파일하도록 요청하거나, 코드베이스를 심층적으로 탐색하여 기능이 어떻게 작동하는지 조사하도록 요청할 수 있습니다.
심층 검증#

반면에, 참조하는 모든 사실적 주장을 확인하고 출처를 찾고자 하는 보고서가 있는 경우, 하나의 에이전트가 모든 사실적 주장을 식별한 다음 각 주장을 상세히 확인하기 위해 하위 에이전트를 생성하는 워크플로우를 생성할 수 있습니다. 또한 소스 에이전트의 출처가 고품질인지 확인하는 검증 에이전트를 둘 수도 있습니다.
정렬#

Claude Code가 평가에 능숙하다고 생각되는 특정 정성적 측정 기준(예: 버그 심각도별로 정렬된 지원 티켓)으로 정렬하려는 항목 목록이 있을 수 있습니다. 하지만 1000개 이상의 행을 하나의 프롬프트에서 정렬하려고 하면 품질이 저하되고 컨텍스트에 맞지 않습니다. 대신 토너먼트, 쌍별 비교 에이전트 파이프라인(비교 판단이 절대 점수보다 더 신뢰할 수 있음)을 실행하거나, 병렬로 버킷 순위를 매긴 후 병합하세요. 각 비교는 자체 에이전트이므로 결정적 루프는 대진표를 유지하고 실행 순서만 컨텍스트에 남습니다.
메모리 및 규칙 준수#

CLAUDE.md에 넣어도 Claude가 놓치거나 어려워하는 특정 규칙 집합이 있는 경우, 검증 에이전트(규칙당 하나의 검증자)가 확인해야 하는 규칙 목록이 포함된 워크플로우를 생성하세요. 규칙이 적절한지 확인하기 위해 회의론자 페르소나 하위 에이전트를 만들어 규칙을 검토하도록 하면 너무 많은 오탐지를 방지하는 데 도움이 됩니다.반대 방향도 작동합니다. 최근 세션과 코드 리뷰 코멘트에서 계속해서 수정하는 내용을 마이닝하고, 병렬 에이전트로 클러스터링한 다음, 각 후보를 적대적으로 검증하고(이 규칙이 실제 실수를 방지했을까?), 생존한 규칙을 다시
CLAUDE.md로 추출하세요.근본 원인 조사#
디버깅은 여러 독립적인 가설을 세우고 테스트할 때 가장 효과적이지만, 단일 컨텍스트 윈도우만 사용하는 경우 Claude는 자기 선호 편향에 빠질 수 있습니다.
워크플로우는 구조적으로 이를 방지하기 위해 서로 다른 증거에서 가설을 생성하는 에이전트를 생성할 수 있습니다. 예를 들어, 로그, 파일, 데이터를 위한 별도의 에이전트가 있습니다. 각 가설은 검증자와 반박자 패널에 직면할 수 있습니다.
이는 코드에만 국한되지 않습니다. 워크플로우는 영업(3월에 매출이 왜 떨어졌을까?), 데이터 엔지니어링(이 파이프라인이 왜 실패했을까?), 또는 모든 사후 분석 작업에 사용될 수 있습니다.
대규모 트라이징#

모든 팀에는 인간이 완전히 처리할 수 없는 지원 큐, 버그 리포트 또는 기타 백로그가 있습니다.
트라이지 워크플로우는 각 항목을 분류하고, 이미 추적 중인 항목과 중복을 제거한 후 조치를 취합니다. 이는 수정을 시도하거나 인간 사용자에게 에스컬레이션하는 것을 의미할 수 있습니다.
트라이지 워크플로우에 유용한 패턴은 격리(quarantine)입니다. 여기에는 신뢰할 수 없는 공개 콘텐츠를 읽는 에이전트가 높은 권한이 필요한 작업을 수행하는 것을 금지하고, 대신 정보에 대해 조치를 취하는 에이전트가 해당 작업을 수행하도록 하는 것이 포함됩니다.
트라이지 워크플로우를
/loop와 함께 사용하여 Claude가 지속적으로 이 작업을 수행하도록 하세요.탐색 및 취향#
워크플로우는 특히 디자인이나 네이밍과 같이 취향에 기반하고 평가 기준(rubric)의 이점을 얻을 수 있는 솔루션에 대한 다양한 접근 방식을 탐색할 때 유용할 수 있습니다.
Claude에게 여러 솔루션을 탐색하도록 요청하고, 리뷰 에이전트에게 좋은 솔루션이 무엇인지에 대한 평가 기준을 제공해 보세요. 리뷰 에이전트가 기준을 충족했다고 느낄 때 작업이 완료됩니다. 솔루션은 평가 기준에 따라 토너먼트를 통해 정렬되거나 선택될 수도 있습니다.
평가#
워크트리에서 별도의 에이전트를 생성한 다음, 비교 에이전트를 생성하여 특정 출력물을 평가 기준과 비교하고 평가함으로써 특정 작업에 대한 경량 평가를 실행할 수 있습니다. 예를 들어, 생성한 스킬을 특정 기준에 대해 평가한 다음 개선하는 것입니다.
모델 및 지능 라우팅#
작업에 맞게 조정된 분류기 에이전트를 생성하여 사용할 모델을 결정합니다. 이는 작업에 많은 도구 호출이 포함되고 실행 전에 조사를 수행하면 작업에 가장 적합한 모델을 식별하는 데 도움이 될 수 있을 때 유용합니다.
예를 들어, "인증 모듈이 어떻게 작동하는지 설명해줘"라는 작업에 가장 적합한 모델은 인증 모듈에 있는 파일 수와 코드베이스의 형태에 따라 달라집니다. 분류기 에이전트가 이 조사를 수행한 다음 예상되는 작업 복잡성에 따라 Sonnet 또는 Opus로 라우팅할 수 있습니다.
동적 워크플로우를 사용하지 말아야 할 때#
워크플로우는 새로운 기능입니다. 뛰어난 결과를 만들어낼 많은 사용 사례가 있지만, 모든 작업에 필요하지는 않으며 상당히 더 많은 토큰을 사용할 수 있습니다.
워크플로우를 창의적으로 사용하여 이전에 해보지 못한 방식으로 Claude Code를 발전시키는 것이 가장 좋습니다. 일반적인 코딩 작업의 경우, 정말로 더 많은 컴퓨팅이 필요한지 스스로에게 물어보세요. 예를 들어, 대부분의 전통적인 코딩 작업에는 5명의 리뷰어 패널이 필요하지 않습니다.
동적 워크플로우 구축을 위한 팁#
프롬프팅
위에서 설명한 특정 기술을 사용한 상세한 프롬프팅은 동적 워크플로우에 가장 좋은 결과를 만듭니다.
워크플로우는 대규모 작업만을 위한 것이 아닙니다. 모델에게 "빠른 워크플로우"를 사용하도록 프롬프트할 수 있습니다. 예를 들어, 가정에 대한 빠른 적대적 검토를 생성할 수 있습니다.
/goal 및 /loop와 결합트라이지, 연구 또는 검증과 같이 반복될 수 있는 워크플로우를 사용할 때는
/loop와 함께 사용하여 정기적인 간격으로 실행하고, /goal과 함께 사용하여 엄격한 완료 요구 사항을 설정하세요.토큰 사용량 예산
동적 워크플로우에 명시적인 토큰 사용량 예산을 설정하여 작업이 사용하는 토큰 수를 제한할 수 있습니다. "10k 토큰 사용"과 같은 예산으로 프롬프트할 수 있으며, 이는 상한선을 설정합니다.
동적 워크플로우 저장 및 공유
워크플로우 메뉴에서 "s"를 눌러 워크플로우를 저장할 수 있습니다. 이를
~/.claude/workflows에 체크인하거나 스킬을 통해 배포할 수 있습니다.
스킬을 통해 공유하려면 JavaScript 워크플로우 파일을 스킬 폴더에 넣고
SKILL.MD에서 참조하세요. 더 많은 유연성을 허용하려면 Claude에게 스킬의 워크플로우를 그대로 실행해야 하는 스크립트가 아닌 템플릿으로 생각하도록 프롬프트할 수 있습니다.
완전히 새로운 세상#
워크플로우는 Claude Code를 확장하는 유용한 새로운 방법입니다. 이것을 시작점으로 생각하고, 이를 가장 잘 사용하는 방법은 아직 많이 발견해야 한다는 점을 강조합니다. 발견하신 내용을 알려주세요.
Thariq Shihipar와 Sid Bidasaria(@sidbid)는 Anthropic의 기술 스태프로, Claude Code를 작업하고 있습니다.