Claude Agent SDK: 서브에이전트와 세션 저장소(Subagents and Session Store)

Claude Agent SDK는 Claude Code 하네스(harness)를 라이브러리 형태로 제공한 것입니다. 내장 도구(built-in tools), 컨텍스트 격리를 위한 서브에이전트(subagents), 라이프사이클 훅(hooks), W3C 트레이스 전파(trace propagation), 세션 저장소(session store) 호환성을 함께 제공합니다. Claude Managed Agents는 오래 실행되는 비동기 작업을 위한 호스팅형 대안입니다.

유형: Learn + Build 언어: Python (표준 라이브러리) 선수 학습: Phase 14 · 01 (에이전트 루프), Phase 14 · 10 (스킬 라이브러리) 소요 시간: 약 75분

학습 목표

  • Anthropic 클라이언트 SDK(Anthropic Client SDK; raw API)와 Claude Agent SDK(하네스 형태)의 차이를 설명합니다.
  • 서브에이전트(subagents)의 두 가지 용도, 즉 병렬화(parallelization)와 컨텍스트 격리(context isolation)를 설명하고 언제 사용할지 판단합니다.
  • Python SDK의 세션 저장소(session store) 표면(append, load, list_sessions, delete, list_subkeys)과 --session-mirror의 역할을 말할 수 있습니다.
  • 내장 도구, 격리된 컨텍스트를 갖는 서브에이전트 생성(spawning), 라이프사이클 훅, 세션 저장소를 갖춘 표준 라이브러리 기반 하네스를 구현합니다.

문제

원시 LLM API(raw LLM API)는 단 한 번의 왕복 호출(round-trip)만 제공합니다. 그러나 프로덕션에서 동작하는 에이전트에는 도구 실행, MCP 서버, 라이프사이클 훅, 서브에이전트 생성, 세션 영속화(session persistence), 트레이스 전파(trace propagation)가 모두 필요합니다. Claude Agent SDK는 바로 이 형태를 라이브러리로 묶어 제공합니다. 즉, Claude Code가 내부적으로 사용하는 것과 동일한 하네스를, 사용자 정의 에이전트에서 그대로 활용할 수 있도록 노출한 것입니다.

사전 테스트

2문제 · 이 강의를 시작하기 전에 얼마나 알고 있는지 확인해보세요

1.Anthropic 클라이언트 SDK와 Claude Agent SDK의 핵심 차이는 무엇인가요?

2.Claude Agent SDK에서 서브에이전트(subagent)의 두 가지 주요 용도는 무엇인가요?

0/2 답변 완료

개념

클라이언트 SDK와 에이전트 SDK 비교(Client SDK vs Agent SDK)

  • 클라이언트 SDK(anthropic). 원시 메시지 API(raw Messages API)입니다. 루프, 도구, 상태를 모두 직접 관리합니다.
  • 에이전트 SDK(claude-agent-sdk). 내장 도구 실행, MCP 연결, 훅, 서브에이전트 생성, 세션 저장소를 함께 제공합니다. Claude Code의 루프를 라이브러리 형태로 사용하는 셈입니다.

내장 도구(Built-in tools)

SDK는 파일 읽기/쓰기, 셸(shell), grep, glob, 웹 가져오기(web fetch) 등 10개가 넘는 도구를 기본으로 제공합니다. 사용자 정의 도구는 표준 도구 스키마 인터페이스(tool-schema interface)를 통해 등록합니다.

서브에이전트(Subagents)

Anthropic 문서가 정리하는 용도는 두 가지입니다.

  1. 병렬화(Parallelization). 서로 독립적인 작업을 동시에 수행합니다. 예를 들어 "이 20개 모듈 각각의 테스트 파일을 찾아라"는 20개의 병렬 서브에이전트 작업이 됩니다.
  2. 컨텍스트 격리(Context isolation). 각 서브에이전트는 자신만의 컨텍스트 창(context window)을 사용하고, 결과만 오케스트레이터(orchestrator)로 돌려보냅니다. 그 결과 오케스트레이터의 컨텍스트 예산(context budget)이 그대로 보존됩니다.

Python SDK에는 최근 서브에이전트의 대화 기록(transcript)을 읽기 위한 list_subagents(), get_subagent_messages()가 추가되었습니다.

세션 저장소(Session store)

TypeScript 구현과 프로토콜 호환성(parity)을 가집니다.

  • append(session_id, message) — 대화 턴을 추가합니다.
  • load(session_id) — 대화를 복원합니다.
  • list_sessions() — 세션 목록을 나열합니다.
  • delete(session_id) — 서브에이전트 세션까지 연쇄(cascade) 삭제합니다.
  • list_subkeys(session_id) — 서브에이전트 키를 나열합니다.

--session-mirror(CLI 플래그)는 디버깅을 위해 대화 기록이 스트리밍되는 동안 외부 파일에 그대로 미러링합니다.

훅(Hooks)

등록할 수 있는 라이프사이클 훅은 다음과 같습니다.

  • PreToolUse, PostToolUse — 도구 호출을 차단하거나 감사(audit)합니다.
  • SessionStart, SessionEnd — 세션의 초기화와 정리를 수행합니다.
  • UserPromptSubmit — 모델이 입력을 보기 전에 사용자 프롬프트에 개입합니다.
  • PreCompact — 컨텍스트 압축(compaction) 직전에 실행됩니다.
  • Stop — 에이전트 종료 시 정리 작업을 수행합니다.
  • Notification — 사이드 채널 알림(side-channel alert)을 보냅니다.

훅은 pro-workflow(Phase 14 커리큘럼 참조) 같은 시스템이 횡단 관심사(cross-cutting behavior)를 추가하는 표준적인 방식입니다.

W3C 트레이스 컨텍스트(W3C trace context)

호출자(caller) 측에서 활성화된 OTel 스팬(span)은 W3C 트레이스 컨텍스트 헤더를 통해 CLI 서브프로세스로 전파됩니다. 그 결과 다중 프로세스에 걸친 전체 추적이 백엔드에서 하나의 트레이스로 묶여 보입니다.

Claude Managed Agents

호스팅형 대안으로, 베타 헤더는 managed-agents-2026-04-01입니다. 오래 실행되는 비동기 작업, 내장 프롬프트 캐싱(prompt caching), 내장 컨텍스트 압축(compaction)을 제공합니다. 제어권의 일부를 내려놓는 대신 관리형 인프라(managed infrastructure)를 얻는 선택지입니다.

이 패턴이 잘못되는 지점

  • 서브에이전트 과다 생성(Subagent over-spawn). 작은 작업 100개에 서브에이전트 100개를 띄우면 오버헤드가 작업 비용을 압도합니다. 대신 묶어서(batching) 처리하세요.
  • 훅 과잉(Hook creep). 모든 팀이 훅을 계속 추가하면 시작 시간(startup time)이 부풀어 오릅니다. 분기마다 훅 등록 현황을 점검하세요.
  • 세션 비대화(Session bloat). 세션이 누적되면서 크기가 계속 늘어납니다. list_sessions와 만료 정책(expiry policy)을 함께 사용하세요.

만들어보기

code/main.py는 SDK의 형태를 Python 표준 라이브러리만으로 구현합니다.

  • Tool, ToolRegistry와 내장 도구 read_file, write_file, list_dir.
  • Subagent — 비공개 컨텍스트, 격리된 실행, 결과 반환.
  • SessionStoreappend, load, list, delete, list_subkeys.
  • Hookspre_tool_use, post_tool_use, session_start, session_end.
  • 데모 — 메인 에이전트가 서브에이전트 3개를 병렬로 생성하고(각각 격리), 결과를 모은 뒤 세션을 저장합니다.

실행 방법은 다음과 같습니다.

python3 code/main.py

실행 결과를 추적해 보면 서브에이전트의 컨텍스트 격리가 그대로 드러납니다. 즉, 오케스트레이터의 컨텍스트 크기는 제한된 상태로 유지되고, 훅 실행과 세션 영속화가 함께 일어나는 모습을 확인할 수 있습니다.

사용해보기

  • Claude Agent SDK는 Claude 중심 제품(Claude-first product)에서 Claude Code 하네스 형태를 그대로 활용하고 싶을 때 사용합니다.
  • Claude Managed Agents는 호스팅 환경에서 장기 실행 비동기 작업을 다룰 때 적합합니다.
  • OpenAI Agents SDK(16강)는 OpenAI 중심(OpenAI-first) 대응 라이브러리입니다.
  • LangGraph와 사용자 정의 도구(LangGraph + custom tools)는 그래프 형태의 상태 머신을 원할 때 선택합니다.

산출물 만들기

outputs/skill-claude-agent-scaffold.md는 서브에이전트, 훅, 세션 저장소, MCP 서버 연결(MCP server attachment), W3C 트레이스 전파를 갖춘 Claude Agent SDK 앱을 스캐폴딩(scaffold)합니다.

연습문제

  1. (쉬움) 20개 작업을 병렬 서브에이전트 5개씩 묶어 처리하는 서브에이전트 스포너(spawner)를 추가하세요. 작업당 서브에이전트 하나를 띄우는 방식과 오케스트레이터 컨텍스트 크기를 비교합니다.
  2. (중간) write_file 호출을 세션당 분당 5회로 제한하는 PreToolUse 훅을 구현하세요. 동작을 추적(trace)해 봅니다.
  3. (중간) list_subkeys를 사용해 서브에이전트 트리를 렌더링하세요. 깊은 중첩은 어떤 형태로 보이나요?
  4. (어려움) 이 장난감 구현을 실제 claude-agent-sdk Python 패키지로 옮겨보세요. 도구 등록(tool registration)에서 무엇이 달라지나요?
  5. (어려움) Claude Managed Agents 문서를 읽어보세요. 자체 호스팅(self-hosted)에서 관리형(managed)으로 갈아탈 만한 시점은 언제인가요?

핵심 용어

용어흔한 설명실제 의미
에이전트 SDK(Agent SDK)"라이브러리로서의 Claude Code"도구, MCP, 훅, 서브에이전트, 세션 저장소를 갖춘 하네스 형태이다.
서브에이전트(Subagent)"자식 에이전트"별도의 컨텍스트와 자체 예산을 가지며, 결과만 상위로 전달된다.
세션 저장소(Session store)"대화 DB"서브에이전트 연쇄 삭제까지 포함해 대화 턴을 저장·불러오기·나열·삭제한다.
훅(Hook)"라이프사이클 콜백"도구 호출 전후, 세션, 프롬프트 제출, 압축, 종료 시점의 훅이다.
W3C 트레이스 컨텍스트(W3C trace context)"프로세스 간 트레이스"부모 스팬이 CLI 서브프로세스까지 전파된다.
Managed Agents"호스팅형 하네스"Anthropic이 호스팅하는 장기 실행 비동기 작업 환경이다.
--session-mirror"대화 기록 미러"세션 턴을 스트리밍하면서 외부 파일에 그대로 기록한다.
MCP 서버(MCP server)"도구 표면(Tool surface)"에이전트에 연결되는 외부 도구·리소스 제공원이다.

더 읽을거리

실습 코드

이 강의의 실습 코드 1개

main
Code

산출물

이 강의에서 생성된 프롬프트, 스킬, 코드 산출물 1개

claude-agent-scaffold

Scaffold a Claude Agent SDK app with subagents, lifecycle hooks, session store, MCP server attachment, and W3C trace propagation.

Skill

확인 문제

3문제 · 모두 맞추면 완료 표시가 가능합니다

1.팀이 100개의 작은 작업을 위해 100개의 서브에이전트를 생성합니다. 어떤 문제를 만나게 되나요?

2.Claude Agent SDK가 제공하는 라이프사이클 훅(hook)은 무엇이고, 횡단 관심사(cross-cutting concerns)에 임의 코드 대신 훅이 선호되는 이유는 무엇인가요?

3.Claude Agent SDK에서 W3C 트레이스 컨텍스트 전파가 어떻게 작동하고 왜 중요한가요?

0/3 답변 완료

추가 문제 풀기

AI가 강의 내용을 바탕으로 새로운 문제를 생성합니다