클로드 코드 완벽 가이드
홈
기본과정
고급 확장
GitHub
홈
기본과정
고급 확장
GitHub
  • 고급 확장

    • Custom Slash Commands
    • SubAgent
    • Skills
    • Hooks
    • Plugins
    • Context Engineering
    • Spec-Driven Development
    • Claude Agent SDK
    • Opus 4.5
    • Claude Code Device
    • DevContainer
    • 프롬프팅의 성공지표
    • Context 이해하기
    • Recap

Claude Agent SDK

개요

  • claude 인스턴스를 자율적으로 생성 하고 사용하기 위함

주요 API

query

from claude_agent_sdk import query, ClaudeAgentOptions
"""
query는 Claude Agent SDK에서 import된 핵심 함수입니다. 이 함수가 실제로 Claude API와 통신하여 응답을 받아오는 역할을 합니다.

query 함수의 동작 방식

async for message in query(prompt=prompt, options=options):
★ Insight ─────────────────────────────────────
query는 async generator 패턴을 사용합니다. 일반 함수처럼 한 번에 결과를 반환하는 게 아니라, 응답이 생성되는 동안 여러 메시지를 스트리밍으로 yield합니다. 이 덕분에 긴 응답도 실시간으로
 처리할 수 있습니다.
─────────────────────────────────────────────────
메시지 타입별 처리 흐름
"""

async for message in query(prompt=prompt, options=options):
    message_type = type(message).__name__

    # 1. AssistantMessage: 중간 응답들
    if message_type == 'AssistantMessage':
        if hasattr(message, 'content') and isinstance(message.content, list):
            for block in message.content:
                if hasattr(block, 'text'):
                    result_content += block.text

    # 2. ResultMessage: 최종 결과
    if message_type == 'ResultMessage':
        if hasattr(message, 'result') and message.result:
            result_content = message.result  # 덮어쓰기

ClaudeAgentOptions

CODE_GENERATOR_PROMPT = """
You are an expert software developer who implements complete, production-ready projects.
Your task is to implement a project based on the provided specification, technical plan, and task list.
"""

options = ClaudeAgentOptions(
    system_prompt=CODE_GENERATOR_PROMPT,
    max_turns=50,  # Allow many turns for complex implementation
    model="claude-sonnet-4-5-20250929",  # Use powerful model for implementation
    allowed_tools=["Read", "Write", "Edit", "Bash", "Glob", "Grep", "WebSearch", "WebFetch", "Task"],
)

ClaudeSDKClient

  • 초기화: ClaudeSDKClient는 ClaudeAgentOptions 객체를 받아 생성됩니다
  • 비동기 연결 관리: connect()/disconnect() 패턴으로 세션 수명주기 관리
  • 스트리밍 응답: query() → receive_response() 순서로 메시지를 비동기 이터레이션
  1. 옵션 설정 (ClaudeAgentOptions)
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions

options = ClaudeAgentOptions(
    model="claude-sonnet-4-5-20250929",  # 사용할 모델
    allowed_tools=["Read", "Write", "Edit", "Bash"],  # 허용할 도구들
    permission_mode="acceptEdits",  # 권한 모드
    cwd="/path/to/working/dir",  # 작업 디렉토리
    resume="session_id_here",  # 세션 재개시 사용
    mcp_servers={...}  # MCP 서버 설정
)
  1. 클라이언트 생성 및 연결
client = ClaudeSDKClient(options=options)
await client.connect()  # 연결 시작
  1. 쿼리 전송 및 응답 수신
await client.query("사용자 메시지")  # 쿼리 전송

async for message in client.receive_response():  # 스트리밍 응답 수신
    # message 타입: AssistantMessage, SystemMessage, ResultMessage 등
    print(message)
  1. 종료
await client.disconnect()

클로드 코드로 쉽게 만들어보기

  1. claude-docs로 아래 파일들을 일괄 저장한다.
https://platform.claude.com/docs/en/agent-sdk/overview.md
https://platform.claude.com/docs/en/agent-sdk/typescript.md
https://platform.claude.com/docs/en/agent-sdk/python.md
https://platform.claude.com/docs/en/agent-sdk/streaming-vs-single-mode.md
https://platform.claude.com/docs/en/agent-sdk/permissions.md
https://platform.claude.com/docs/en/agent-sdk/sessions.md
https://platform.claude.com/docs/en/agent-sdk/structured-outputs.md
https://platform.claude.com/docs/en/agent-sdk/hosting.md
https://platform.claude.com/docs/en/agent-sdk/modifying-system-prompts.md
https://platform.claude.com/docs/en/agent-sdk/mcp.md
https://platform.claude.com/docs/en/agent-sdk/custom-tools.md
https://platform.claude.com/docs/en/agent-sdk/subagents.md
https://platform.claude.com/docs/en/agent-sdk/slash-commands.md
https://platform.claude.com/docs/en/agent-sdk/skills.md
https://platform.claude.com/docs/en/agent-sdk/cost-tracking.md
https://platform.claude.com/docs/en/agent-sdk/todo-tracking.md
https://platform.claude.com/docs/en/agent-sdk/plugins.md
  1. read @claude-docs/ 프롬프트
  2. 원하는 workflow를 이야기 한다.
> claude code cli는 api key를 사용하지 않고, subscription을 사용하기 때문에 별도 설정은 하지 않는다.
  @claude-docs/ 를 읽고,  agent develop workflow를 agent-workflow-3/adws 디렉토리에 만들어줘

  현재 추가된 파일들에 대해서 코드리뷰를 진행한다.
  각 단계에서 진행되고 있는 상황을 구체적인 stdout log로 보여준다.

  1. `git diff`, `git diff --cached`로 수정된 파일을 확인한다.
  2. 현재 수정된 파일들에 대해서 코드리뷰를 진행한다.
  3. 분석한 내용을 기반으로 코드리뷰 결과를 reports/ 아래에 md 파일로 생성한다. 파일 이름은 알아서 결정한다.
> @claude-docs/ 를 읽고,  agent develop workflow를 agent-workflow-4 디렉토리에 만들어줘

  <purpose>대화형 cli 프로그램</purpose>

  <spec>
  1. uv 로 프로그램을 실행한다.
  2. 이 프로그램은 대화형으로 클로드 코드처럼 연속적인 멀티턴 대화를 할 수 있다.
  </spec>

  <fyi>
  claude code cli는 api key를 사용하지 않고, subscription 방식을 사용한다.
  </fyi>
  1. 구현된 내용을 테스트하면서 수정해나간다.
이 페이지 수정하기
최종 수정: 25. 11. 26. 오후 1:39
Contributors: hello
Prev
Spec-Driven Development
Next
Opus 4.5