Anthropic이 6월 2일 Claude Code에 Dynamic Workflows를 공개했다. 서브에이전트마다 독립 컨텍스트를 줘 게으름·자기편향·목표 표류를 구조로 막는다. 토큰을 더 쓰므로 어떤 작업에만 붙일지 기준부터 정해야 한다.
Claude Code를 오래 돌린 팀은 이 장면을 안다. 보안 리뷰 50건을 맡겼는데 35건에서 "완료"가 찍히고, 자기가 짠 코드를 자기가 리뷰하며 점수가 후해지고, 초반에 적어 둔 "이건 건드리지 마"가 몇 턴 뒤 사라져 있다. 셋 다 모델 성능이 아니라 세션 구조에서 나온다.
이 글은 2026년 6월 기준이다. 원문 2026년 6월 5일은 Anthropic이 6월 2일 발표한 "A harness for every task: dynamic workflows in Claude Code"를 정리했다. Claude Code가 받은 작업에 맞춰 실행 틀(하네스)을 그 자리에서 짜고, 그 틀로 서브에이전트 여러 개를 굴려 일을 끝내는 기능이다. 이후 변경은 공식 문서로 확인한다.
세 가지 실패는 계획과 실행을 한 컨텍스트 윈도우에서 하기 때문에 생긴다
하네스는 에이전트를 감싸는 실행 구조다. Claude Code의 기본 하네스는 코딩에 맞춰져 있고 계획과 실행을 같은 컨텍스트 윈도우에서 한다. 일반 코딩에서는 효율적이지만 장시간·대규모 병렬·고도 구조화·적대적 검증이 필요한 작업에서는 무너진다.
원문이 정리한 실패 모드는 셋이다. 에이전트 게으름(agentic laziness)은 다단계 작업을 끝까지 하지 않고 완료를 선언하는 것이다. 자기편향(self-preferential bias)은 자기 결과를 더 좋게 평가하는 경향이며 자기 출력을 기준표(rubric)로 채점시킬 때 두드러진다. 목표 표류(goal drift)는 턴이 쌓일수록 원래 목표에 대한 충실도가 떨어지는 현상으로, 컨텍스트 압축(compaction) 뒤에 심해진다. 요약은 손실이므로 엣지 케이스 요구사항과 "X는 하지 마" 같은 금지 조건이 먼저 빠진다.
Dynamic Workflows는 서브에이전트마다 독립 컨텍스트와 좁은 목표를 주는 자바스크립트 하네스다
워크플로우는 자바스크립트 파일 하나다. 서브에이전트를 만들고 조율하는 특수 함수 몇 개와 JSON·Math·Array 같은 표준 함수가 들어 있다. 세 실패를 막는 원리는 이 파일이 각 서브에이전트에 독립된 컨텍스트 윈도우와 좁고 명확한 목표를 배정한다는 데 있다. 에이전트별로 모델(Sonnet 또는 Opus)을 고르고, 각자의 worktree에서 격리해 돌릴지 정하며, 중단돼도 세션을 다시 열면 끊긴 지점부터 이어 간다. 코딩 에이전트는 격리된 작업장만큼만 일한다에서 본 워크트리 격리가 워크플로우의 옵션이 된 것이다.
Claude Agent SDK나 claude -p로 엮는 정적 워크플로우는 전부터 있었지만, 미리 짜 둔 스크립트는 모든 엣지 케이스를 감당하느라 범용으로 흐른다. Claude Opus 4.8과 결합한 이 기능은 지금 이 작업에만 맞는 하네스를 그때 쓴다. 호출은 "워크플로우 만들어줘"라고 하거나 트리거 단어 ultracode를 쓰면 된다. Claude가 자주 조합하는 패턴은 여섯 가지다.
| 패턴 | 동작 | 쓰는 조건 |
|---|---|---|
| Classify-and-act | 분류 에이전트가 작업 유형을 판단해 유형별 에이전트로 라우팅 | 작업 종류가 섞여 있을 때 |
| Fan-out-and-synthesize | 작업을 잘게 나눠 병렬 처리하고 종합 단계에서 병합 | 단계가 많거나 각 단계에 깨끗한 컨텍스트가 필요할 때 |
| Adversarial verification | 각 출력을 별도 에이전트가 기준에 맞춰 적대적으로 검증 | 자기편향을 차단할 때 |
| Generate-and-filter | 후보를 대량 생성한 뒤 기준·검증으로 거르고 중복 제거 | 브레인스토밍에 품질 보증을 붙일 때 |
| Tournament | N개 에이전트가 다른 방식으로 경쟁, 짝 비교로 우승자 선정 | 정량화 어려운 취향 판단 |
| Loop until done | 정지 조건을 만족할 때까지 에이전트를 계속 생성 | "새 발견 없음·에러 없음" 같은 종료 조건이 있을 때 |
Fan-out-and-synthesize의 종합 단계는 장벽(barrier)이라 에이전트가 전부 끝난 뒤에야 출력을 합친다. Tournament는 절대 점수보다 짝 비교(comparative judgment)가 더 신뢰할 만하다는 근거 위에 서 있다.
토큰을 더 쓰는 기능이므로 붙일 작업을 먼저 고른다
원문이 먼저 못 박는 조건은 비용이다. Dynamic Workflows는 토큰을 더 쓴다. 복잡하고 가치가 높은 작업에만 맞는다. 런타임 Bun이 Zig에서 Rust로 재작성될 때 이 워크플로우가 쓰였다. 작업을 콜사이트·실패 테스트·모듈 단위로 쪼개고, 수정마다 worktree에서 서브에이전트를 띄운 뒤 다른 에이전트가 적대적으로 리뷰하고 병합했다. 1,000행이 넘는 항목을 "버그 심각도 순"으로 정렬할 때는 한 프롬프트에 다 넣으면 품질이 무너지므로 토너먼트나 병렬 버킷 랭킹 후 병합을 쓴다. 대진표는 결정론적 루프가 들고 있다.
목표 표류에 가장 가까운 처방은 규칙 준수다. CLAUDE.md에 적어도 놓치는 규칙이 있으면 규칙 하나당 검증 에이전트 하나를 두고, 거짓 양성을 줄이려 규칙의 타당성을 따지는 회의주의자(skeptic) 페르소나를 붙인다. 대규모 트리아지에서는 외부 콘텐츠를 읽는 에이전트에서 고권한 행동을 떼어내고 조치는 별도 에이전트가 맡는 격리(quarantine) 패턴이 핵심이다. 원문은 "3월 매출이 왜 떨어졌나" 같은 영업 질문에도 같은 틀이 통한다고 적는다.
프롬프트에는 패턴 용어를 그대로 쓸수록 결과가 좋다. 반복 작업은 /loop로 돌리고 /goal로 완료 조건을 박으며, "10k 토큰 써"처럼 상한을 지정한다. 저장은 워크플로우 메뉴에서 s, 공유는 스킬 폴더에 넣고 SKILL.md에서 참조한다.
가져갈 것
Claude Code 작업 하나에 Dynamic Workflows를 붙일지 판단하는 체크리스트다.
- 작업이 장시간·대규모 병렬·고도 구조화·적대적 검증 중 하나에 해당하는가 (아니면 기본 하네스다)
- 항목 수가 컨텍스트 하나에 안 들어가는가 (1,000행 넘는 정렬이면 토너먼트·버킷 랭킹)
- 에이전트가 자기 출력을 기준표로 채점하는 단계가 있는가 (있다면 Adversarial verification을 명시한다)
- 압축 뒤에도 지켜야 할 "X는 하지 마" 규칙이 있는가 (있다면 규칙당 검증 에이전트와 skeptic을 붙인다)
- 프롬프트에 "10k 토큰 써" 같은 상한,
/goal완료 조건, worktree 격리 여부를 적었는가
안 되는 경우
- 짧은 코딩 작업이 대부분인 팀. 원문은 기본 하네스가 일반 코딩에서 효율적이라고 못 박는다.
- 원문이 밝히지 않은 것: 토큰이 얼마나 더 드는지, 정적 워크플로우 대비 품질 수치, Opus 4.8 외 모델 지원, 요금제 조건.
- 정해진 사용법을 기대하는 조직. 발표를 쓴 Anthropic 저자들은 "정답이 정해진 도구라기보다, Claude를 새롭게 활용하는 방법을 탐색하는 출발점으로 생각해 달라"고 적었다.
이번 주에 바꿀 것은 하나다. Claude Code가 "완료"라고 했는데 덜 끝나 있던 작업 하나를 골라 세 실패 모드 중 어디에 해당하는지 적고, 그 작업에만 패턴 이름과 토큰 상한을 넣은 워크플로우를 붙여 기본 하네스 결과와 비교한다. 에이전트에게 어디까지 맡기고 어디서 검증을 떼어낼지의 기준은 조녁컴퍼니 사업영역에서 볼 수 있다. 사업영역 →