“Claude Code에서 서브 에이전트를 병렬로 실행하고 싶은데, fork()와 일반적인 fresh agent 중 어느 것을 사용해야 할까요?”
— 에이전트 설계를 자동화에 통합하려 할 때 이 판단 지점에서 막히는 경우가 많습니다.
결론부터 말씀드립니다. **fork()를 사용하는 경우는 '부모의 컨텍스트가 필요하고, 동시에 자식의 출력을 컨텍스트로 되돌리고 싶지 않을 때'**입니다.
- Claude Code (Agent SDK)
- subagent_type: "fork" / "general-purpose"
- 자동화 설계(content-executor)를 구성하며 확인한 동작
fork()로 시작된 에이전트는 부모 세션의 컨텍스트 전체를 상속받습니다.
중요한 것은 캐시 공유입니다. fork()는 부모와 동일한 컨텍스트에서 시작하기 때문에 Prompt Caching이 그대로 적용됩니다. 컨텍스트가 무거운 세션이라도, fork()의 자식 에이전트는 처음부터 낮은 비용으로 작동할 수 있습니다.
부모 세션 (컨텍스트 5만 토큰)
└── fork() → 자식은 동일한 5만 토큰 캐시를 상속받음
입력 비용 = 캐시 히트분(입력 단가의 약 1/10)으로 처리됨
반면, fresh agent는 컨텍스트가 '제로'에서 시작합니다. 작업의 배경, 파일 내용, 제약 조건을 모두 프롬프트에 직접 작성하여 전달해야 합니다.
| 조건 | fork() | fresh agent |
|---|
| 부모의 컨텍스트가 필요 | ✅ | ❌ (프롬프트에 작성) |
| ... | | |
fork()를 선택하는 3가지 조건:
- 부모가 현재 가지고 있는 컨텍스트를 자식 에이전트도 사용하게 하고 싶을 때
- 자식의 작업 결과(툴 호출의 원시 로그 등)를 부모 컨텍스트에 넣고 싶지 않을 때
- 병렬로 여러 개의 독립적인 질문을 조사하고 싶을 때
fresh agent를 선택하는 조건:
- 다른 모델을 사용하고 싶을 때 (fork는 부모와 동일한 모델 고정)
- 컨텍스트가 없는 '제3자의 시각'이 필요할 때
- 부모의 컨텍스트가 너무 무거워 상속받는 것이 역효과일 때
// 병렬 검사를 fork()로 실행하는 설계 예시
Agent({ subagent_type: "fork", prompt: "과장 체크: ...", run_in_background: true })
Agent({ subagent_type: "fork", prompt: "타겟 적합성 체크: ...", run_in_background: true })
...
content-executor (본체)
├── fork(과장 체크) ─┐
├── fork(타겟 적합성 체크) ─┤ 병렬 실행
...
이 방식을 사용하면 부모의 컨텍스트를 오염시키지 않으면서, 병렬 검사를 낮은 비용으로 실행할 수 있습니다.
- fork() = 컨텍스트 상속 + 캐시 공유. 무거운 세션의 파생 작업에 사용
- fresh agent = 제로에서 시작. 클린한 판단 또는 다른 모델 사용 시 사용
- 자식의 원시 로그를 부모 컨텍스트로 되돌리고 싶지 않을 경우 어느 쪽 모두 가능
run_in_background: true
판단 기준 비교표와 실제 자동화 설계에 통합하는 패턴 상세 내용은 원문에도 게재되어 있습니다 → https://www.masatoman.net/articles/claude-code-fork-subagent-guide-2026?utm_source=qiita&utm_medium=referral&utm_campaign=dist-syndication&utm_content=claude-code-fork-subagent-guide-2026