MB-ITA

Diese Seite ist passwortgeschützt.

claude-code — agent-sdk.md
~/wiki/claude-code / agent-sdk
~/wiki/claude-code $ cat agent-sdk.md

Agent SDK

Custom Agents bauen, Subagent-Typen, Multi-Agent Orchestrierung.

Übersicht

Das Claude Agent SDK ermöglicht es, Claude Code als Bibliothek zu nutzen und eigene autonome Agents zu bauen.

# Python pip install claude-agent-sdk # TypeScript / Node.js npm install @anthropic-ai/claude-agent-sdk # API Key export ANTHROPIC_API_KEY=your-api-key
SDK vs. Client SDK: Das Client SDK erfordert eine eigene Tool-Loop. Das Agent SDK führt Tools autonom aus — Claude Code als Bibliothek.

Built-in Tools

ToolFunktion
ReadDateien im Working Directory lesen
WriteNeue Dateien erstellen
EditPräzise Edits in bestehenden Dateien
BashTerminal-Kommandos, Scripts, Git
GlobFiles nach Pattern finden
GrepDatei-Inhalte mit Regex suchen
WebSearchWeb durchsuchen
WebFetchWeb-Page Content fetchen
AskUserQuestionNutzer mit Multiple-Choice fragen

Agent Loop

Der Agent arbeitet iterativ in einer Schleife:

# Agent Loop Zyklus 1. Prompt lesen 2. Tool überlegen 3. Tool ausführen 4. Ergebnis auswerten 5. Nächsten Schritt planen 6. Wiederholen bis Completion oder Error

Custom Agents & Subagents

Python: Agent Definition
from claude_agent_sdk import AgentDefinition, query # Agent definieren agent = AgentDefinition( description="Expert code reviewer", prompt="Analyze code quality and suggest improvements", tools=["Read", "Glob", "Grep"] ) # Agent ausführen async for message in query( prompt="Review the auth module", options=ClaudeAgentOptions( allowed_tools=["Read", "Glob", "Grep"] ) ): print(message)

Subagent-Eigenschaften:

  • Laufen in separaten Context Windows
  • Können eigene Tool-Sets haben
  • Berichten Ergebnisse an den Main Agent
  • parent_tool_use_id für Tracking
  • Können mit isolation: worktree in separaten Git-Worktrees arbeiten

Session Management

# Session ID erfassen session_id = None async for message in query(...): if hasattr(message, "subtype") and message.subtype == "init": session_id = message.session_id # Session fortsetzen async for message in query( prompt="Continue from before", options=ClaudeAgentOptions(resume=session_id) ): pass

Permission Modes

ModeBeschreibung
bypassPermissionsKeine Approval nötig
acceptEditsAuto-Accept Edits, Bash braucht Approval
autoAlle Tool-Calls auto-approved
InteractiveUser-Prompts für sensitive Actions

MCP-Server Integration

# Playwright für Browser-Automation mcp_servers = { "playwright": { "command": "npx", "args": ["@playwright/mcp@latest"] } } # Datenbank-Zugriff mcp_servers = { "postgres": { "command": "mcp-postgres", "args": ["postgresql://user:pass@localhost/db"] } }

Hooks für Agent-Kontrolle

HookFunktion
PreToolUseTool-Aufruf validieren/blockieren
PostToolUseNach Tool-Ausführung reagieren
StopAgent stoppen/weitermachen lassen
SessionStartSession initialisieren
SessionEndCleanup
Beispiel: Audit-Logging Hook
async def log_file_change(input_data, tool_use_id, context): file_path = input_data.get("tool_input", {}).get("file_path", "unknown") with open("./audit.log", "a") as f: f.write(f"{datetime.now()}: modified {file_path}\n") return {}

Cloud Provider

# Amazon Bedrock export CLAUDE_CODE_USE_BEDROCK=1 # Google Vertex AI export CLAUDE_CODE_USE_VERTEX=1 # Microsoft Azure Foundry export CLAUDE_CODE_USE_FOUNDRY=1