Claude Code · Research Preview · 2026

Dynamic Workflows 완전 정리

Claude가 작성하는 JavaScript 오케스트레이션 스크립트를 백그라운드 런타임이 실행해, 수십~수백 개 서브에이전트를 단일 세션에서 병렬 조율하는 기능.

본질은 "병렬화"가 아니라 계획을 코드로 옮기는 것이다. 루프·분기·중간 결과를 스크립트 변수가 들고 있어 Claude의 컨텍스트엔 최종 답만 남고, 적대적 검증·토너먼트 같은 반복 가능한 품질 패턴을 코드로 고정할 수 있다.

1

언제 쓰나 / 쓰지 말까

쓸 때 (하나라도)

  • 대량 병렬 — 50+ 파일·모듈·시나리오 동시
  • 틀리면 비쌈 — 보안·마이그레이션·출시 회귀
  • 될 때까지 반복 — 수렴·커버리지·0결함 종료조건
  • 정기 무인/loop 로 사람 없이
2

다른 수단과의 차이 — "누가 계획을 들고 있나"

서브에이전트스킬에이전트 팀워크플로우
정체Claude가 부리는 일꾼따르는 지침리드가 동료 감독런타임이 실행하는 스크립트
다음 실행 결정Claude, 턴마다Claude리드, 턴마다스크립트가
중간 결과 위치컨텍스트 창컨텍스트 창공유 task 리스트스크립트 변수
재사용 대상일꾼 정의지침팀 정의오케스트레이션 자체
규모턴당 몇 개동일장기 동료 소수런당 수십~수백
3

작동 방식

격리

분리 실행

스크립트는 대화와 분리된 환경에서 실행. 중간 결과는 컨텍스트에 안 들어옴.

저장

스크립트 파일

매 런이 ~/.claude/projects/ 에 스크립트 저장 → 읽고·수정·재실행 가능.

추적

결과 추적

런타임이 각 에이전트 결과 추적 → 같은 세션 내 resume 가능(완료분 캐시).

주의

세션 종속

세션을 나가면 다음 세션에선 처음부터 다시 시작.

4

사용자 흐름

트리거ultracode 키워드 · "use a workflow" 자연어 · /effort ultracode(세션 자동) · 저장된 /<name>
승인per-run 프롬프트에 phase 목록 표시 → Yes/뷰/No. 권한 모드별 상이(Default=매번, Auto=최초 1회, Bypass=즉시)
저장/workflows → 런 선택 → s.claude/workflows/(팀) 또는 ~/.claude/workflows/(개인) → /<name> 명령됨
입력글로벌 args 로 구조화 데이터 수신 (파싱 불필요)
관찰/workflows 에서 phase별 에이전트·토큰·시간. p=정지, x=중단, r=재시작
무인 반복/loop <interval> /<name>
5

스크립트 API

agent(prompt, opts?)서브에이전트 1개. opts: label·phase·schema·model·isolation·agentType. schema 주면 검증된 객체 반환, 없으면 텍스트. 스킵 시 null
pipeline(items, s1, s2…)기본 선택지. 항목마다 전 스테이지 독립 통과 — 배리어 없음. A가 stage3일 때 B가 stage1 가능 → wall-clock 최소
parallel(thunks)배리어. 전부 끝날 때까지 대기. 다음 단계가 모든 이전 결과를 필요로 할 때만(dedup/merge/early-exit)
phase(title)이후 agent() 를 진행 표시에서 그룹핑
log(msg)사용자에게 진행 메시지
budget.total·.spent()·.remaining(). ⚠️ 공유 풀 (8번 함정 참조)
args호출 시 전달된 입력(verbatim)
workflow(name, args)다른 워크플로를 하위 단계로 인라인 실행(1단계만 중첩)

⚠️ 순수 JS만 (TS 타입 표기 불가). Date.now()·Math.random()·인자없는 new Date()금지(resume 깨짐). 파일·셸 직접 접근 불가 — 에이전트가 수행.

// meta 는 순수 리터럴이어야 함
export const meta = {
  name: 'find-flaky',
  description: '...',        // 권한 다이얼로그에 표시
  phases: [{ title: 'Scan' }, { title: 'Verify' }],
}
6

핵심 품질 패턴

Fan-out

모듈·시나리오·조합을 병렬로 동시 공략.

적대적 검증

발견을 그것을 찾지 않은 에이전트가 "반박하라(default refuted)"로 채점. 자기편향 차단.

다관점 검증

동일 반박 N회 대신 correctness·security·repro 등 직교 관점 — 더 넓은 실패 모드.

Loop-until-dry

K연속 라운드 신규 0까지 반복. 단순 카운터는 꼬리를 놓침.

Tournament

여러 접근 병렬 구현 → 쌍대비교로 우승안.

Pipeline > Barrier

배리어는 진짜 전 항목이 필요할 때만. "flatten/filter 하려고"는 이유 안 됨.

7

한도와 비용

동시 실행최대 16 에이전트 (코어 적으면 더 적음)
런당 총량1,000 에이전트 (런어웨이 방지)
토큰대화로 할 때보다 훨씬 많이 소비. 플랜 사용량에 포함
권장큰 작업은 작은 슬라이스로 먼저 비용 측정 (디렉토리 1개 / 좁은 질문 1개)
8

실전 함정 (직접 겪은 실측)

⚠ budget.spent() 는 "턴 전체" 누적

워크플로 단독이 아니라 메인 대화 포함 이번 턴 전체 출력 토큰이다. 긴 대화 뒤 워크플로를 80k로 cap하면 시작부터 초과로 잡혀 에이전트 0개 실행되고 즉시 종료된다(실제로 발생).

→ 해결: 시작 시 const START = budget.spent() baseline 잡고 budget.spent() - START 로 증분 측정.

⚠ 검증이 비싸다

3모듈 스모크에서 419K 토큰 — 스캔 3 vs 검증 14. 비용 대부분이 적대적 검증 단계에 집중된다(설계 의도와 일치: 싸게 넓게 → 깊게 좁게).

→ 대응: 검증 관점 수·확정 임계값 τ 조절로 비용 통제.

✓ 거짓양성 억제가 핵심 가치

Haiku 스캔 7건 → Opus 검증이 7건 전수 기각(코드·테스트·언어 스펙 인용). "생성자 ≠ 채점자" 분리가 저비용 모델의 노이즈를 흡수한다.

⚠ silent cap 금지

예산·top-N으로 커버리지를 제한했다면 무엇을 못 봤는지 반드시 log() 로 표면화. 종료 사유·미커버 범위를 명시해야 "다 봤다"는 착시를 막는다.

9

가용성

상태 · 플랜

Research preview (v2.1.154+). API 표면 변동 가능. Pro·Max·Team·Enterprise(어드민 활성). Pro는 /config 에서 켜기.

표면 · 프로바이더

CLIDesktopVS Codeclaude -pAgent SDK
Anthropic APIBedrockVertexFoundry

내장 · 대표 사례

내장 워크플로 /deep-research. 대표 실사례: Bun을 Zig→Rust 포팅 — 약 75만 줄, 기존 테스트 99.8% 통과, 11일.