- claude 인스턴스를 자율적으로 생성 하고 사용하기 위함
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__
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
if message_type == 'ResultMessage':
if hasattr(message, 'result') and message.result:
result_content = message.result
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,
model="claude-sonnet-4-5-20250929",
allowed_tools=["Read", "Write", "Edit", "Bash", "Glob", "Grep", "WebSearch", "WebFetch", "Task"],
)
- 초기화: ClaudeSDKClient는 ClaudeAgentOptions 객체를 받아 생성됩니다
- 비동기 연결 관리: connect()/disconnect() 패턴으로 세션 수명주기 관리
- 스트리밍 응답: query() → receive_response() 순서로 메시지를 비동기 이터레이션
- 옵션 설정 (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={...}
)
- 클라이언트 생성 및 연결
client = ClaudeSDKClient(options=options)
await client.connect()
- 쿼리 전송 및 응답 수신
await client.query("사용자 메시지")
async for message in client.receive_response():
print(message)
- 종료
await client.disconnect()
- 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
read @claude-docs/ 프롬프트- 원하는 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>
- 구현된 내용을 테스트하면서 수정해나간다.