Claude Agent SDK: Construyendo Agentes AI de Grado Producción
La guía completa del SDK oficial de Anthropic para construir agentes AI autónomos. Domina el ciclo agéntico de 4 fases, herramientas integradas, desarrollo de herramientas personalizadas en Python y TypeScript, integración MCP, salidas estructuradas, visión, streaming, memoria, permisos, seguimiento de costos, procesamiento por lotes y estrategias de despliegue para entornos de producción.
¿Qué es el Claude Agent SDK?
El Claude Agent SDK es el framework oficial de Anthropic para construir agentes AI autónomos en Python y TypeScript. Provee las mismas capacidades agénticas que potencian a Claude Code -- lectura de archivos, ejecución de código, navegación web y uso de herramientas -- como una biblioteca programable que embebes en tus propias aplicaciones. Python requiere 3.10+ y TypeScript requiere Node 18+.
En su base, el SDK implementa un ciclo agéntico de 4 fases: (1) el agente recibe una tarea, (2) razona sobre qué herramientas usar, (3) ejecuta llamadas a herramientas y recolecta resultados, y (4) evalúa si la tarea está completa o necesita más iteración. Este ciclo corre autónomamente hasta que el agente determina que la tarea está terminada o alcanza un límite configurado.
El SDK abstrae las complejidades de llamadas a herramientas, parsing de respuestas, manejo de errores y gestión de conversaciones. Tú defines el system prompt de tu agente, las herramientas disponibles y las restricciones. El SDK maneja el resto: construcción de llamadas API, parsing de respuestas, ejecución de herramientas, retroalimentación de resultados, gestión de límites de ventana de contexto y streaming de salida. También se integra nativamente con servidores MCP.
El Ciclo Agéntico de 4 Fases
Recibir
El agente recibe una tarea del usuario o del sistema que lo llama. El system prompt, las herramientas disponibles y el historial de conversación forman el contexto inicial.
Razonar
Claude analiza la tarea, planifica un enfoque y decide qué herramientas llamar. El pensamiento extendido provee visibilidad de la cadena de razonamiento para problemas complejos.
Ejecutar
El SDK despacha llamadas a herramientas, recolecta resultados, maneja errores y gestiona timeouts. Múltiples herramientas pueden ejecutarse en paralelo cuando son independientes.
Evaluar
El agente evalúa resultados contra la tarea original. Si está completa, formula una respuesta. Si no, vuelve a la fase 2 con nuevo contexto de los resultados de herramientas.
Características Principales
Herramientas Integradas
Lectura/escritura de archivos (Read, Write, Edit), ejecución de código (Bash), navegación web (WebFetch, WebSearch), búsqueda de archivos (Glob, Grep) y edición de notebooks (NotebookEdit). Estas herramientas dan a los agentes las mismas capacidades que un desarrollador en una terminal.
Desarrollo de Herramientas Personalizadas
Define herramientas como funciones con parámetros tipados, descripciones y esquemas de retorno. En Python, usa el decorador @tool con type hints. En TypeScript, define objetos tool con JSON Schema para inputs y función execute. Valida inputs automáticamente.
Soporte Multi-Lenguaje
SDKs oficiales para Python (3.10+, claude-agent-sdk) y TypeScript (Node 18+, @anthropic-ai/claude-agent-sdk). Ambos con capacidades idénticas y APIs idiomáticas. Python usa async/await con asyncio. TypeScript usa Promises nativos.
Integración MCP
Conecta a cualquier servidor MCP desde tu agente. Las herramientas de servidores MCP aparecen junto a las integradas y personalizadas. Soporta transportes Stdio, SSE y Streamable HTTP para servidores locales y remotos.A2A Protocol to expose your Claude agent as a first-class A2A peer, or to delegate subtasks to specialist agents running in other frameworks and clouds.
Interacción con el Usuario y Aprobaciones
Soporte para flujos de aprobación, confirmaciones interactivas y streaming de entrada. Los agentes pueden pausar ejecución para pedir input, mostrar progreso en tiempo real y presentar resultados estructurados. Patrones configurables de human-in-the-loop.
Salidas Estructuradas
Fuerza las respuestas del agente a conformar esquemas JSON. Type-safe en Python (Pydantic) y TypeScript (Zod o JSON Schema). El SDK valida y reintenta en caso de salida inválida. Esencial para consumo programático.
Gestión de Sesiones
Gestiona historial de conversación, estado de herramientas y memoria del agente. Las sesiones pueden persistirse a disco o base de datos y reanudarse para recuperación entre sesiones. La gestión de ventana de contexto maneja truncamiento cuando las conversaciones crecen.
Memoria y Seguimiento de Tareas
Los agentes pueden persistir memorias entre sesiones usando herramientas de memoria integradas o servidores MCP Memory. Almacenamiento clave-valor para preferencias, contexto y patrones. Seguimiento de tareas pendientes que persisten entre reinicios.
Permisos y Restricciones de Herramientas
Control granular sobre herramientas, acceso a archivos y ejecución de comandos. Listas de allow/deny, patrones de rutas de archivos, prefijos de comandos. Sandboxing y rate limiting previenen consumo descontrolado de recursos.
Seguimiento de Costos
Conteo de tokens y estimación de costos integrados. Rastrea tokens de entrada, salida y cache por separado. Configura límites de gasto por agente, sesión o tarea. Alertas en umbrales de presupuesto. Selección de modelo por niveles.
Pensamiento Extendido
Razonamiento de cadena de pensamiento para tareas complejas. El agente muestra su proceso de razonamiento antes de actuar. En los modelos Claude actuales controlas la profundidad de razonamiento con niveles de esfuerzo en vez de un presupuesto de tokens de pensamiento aparte. Mejora confiabilidad en problemas difíciles.
Soporte de Visión
Los agentes pueden procesar imágenes junto con texto -- capturas, diagramas, gráficos, fotos. Analizar layouts de UI, leer texto de imágenes, interpretar visualizaciones, comparar diseños. Soporta PNG, JPEG, GIF, WebP.
Streaming vs Modo Único
Streaming para output token por token en tiempo real en UIs interactivas. Modo único para respuestas completas en procesamiento por lotes. Ambos soportan uso de herramientas, salidas estructuradas y pensamiento extendido.
Manejo de Errores y Recuperación
Reintento automático con backoff exponencial. Errores de herramientas retroalimentados para auto-corrección. Presupuestos de error configurables. Checkpointing de sesión para recuperación de crashes. Degradación elegante.
Estrategias de Despliegue
Serverless (Lambda, Cloud Functions), en contenedores (Docker, Kubernetes), daemons de larga ejecución o embebido. Escalado horizontal con almacenamiento de sesión externo. Liviano con dependencias mínimas. Despliegue edge vía Workers.
Procesamiento por Lotes
Procesa múltiples tareas en paralelo con pools de agentes. Encola, distribuye, recolecta resultados estructurados, maneja fallos. Ideal para procesamiento masivo de datos, revisión de código en masa, análisis de documentos a escala.
Cómo Lo Uso
Uso el Claude Agent SDK para construir agentes de automatización personalizados que van más allá de lo que Claude Code ofrece. Mi caso de uso principal es construir agentes especializados para clientes -- agentes que entienden su dominio de negocio específico, se conectan a sus herramientas internas y automatizan sus flujos de trabajo únicos.
Para el proyecto, construye un agente de despliegue que lee el git log, determina qué microservicios cambiaron, genera valores de Helm charts, valida manifiestos de Kubernetes y dispara despliegues. Este agente redujo errores de despliegue a casi cero.
Otro agente en producción maneja validación de migraciones de base de datos. Lee archivos de migración propuestos, los analiza contra el esquema actual, verifica compatibilidad hacia atrás, estima tiempo de ejecución y genera scripts de rollback.
También construyo agentes con salidas JSON estructuradas para pipelines de procesamiento de datos. Estos agentes analizan datos no estructurados, extraen información estructurada según un esquema definido y alimentan resultados a sistemas downstream.
Primeros Pasos
Instala el SDK y construye tu primer agente en menos de 20 líneas. El SDK de Python requiere Python 3.10+ y el de TypeScript requiere Node 18+.
# Install the Python SDK pip install claude-agent-sdk # Or the TypeScript SDK npm install @anthropic-ai/claude-agent-sdk
Crea un agente mínimo con un system prompt y herramientas integradas. Este agente puede leer archivos, buscar código y ejecutar comandos.
# minimal_agent.py - Python example
from claude_agent_sdk import Agent, BuiltinTools
agent = Agent(
model="claude-sonnet-4-6",
system_prompt="""You are a code review assistant.
Analyze code for bugs, security issues, and
style violations. Be concise and actionable.""",
tools=[
BuiltinTools.Read,
BuiltinTools.Glob,
BuiltinTools.Grep,
BuiltinTools.Bash
],
max_iterations=20
)
result = agent.run(
"Review the Python files in ./src/ for common "
"security vulnerabilities and suggest fixes."
)
print(result.text)
Agrega una herramienta personalizada para extender las capacidades de tu agente. En Python, las herramientas se definen como funciones decoradas con parámetros tipados.
# Custom tool definition (Python)
from claude_agent_sdk import tool
@tool(description="Query the user database")
def query_users(
filter: str = "Filter expression (e.g. 'active=true')",
limit: int = "Maximum results to return"
) -> str:
"""Execute a filtered query against the user table."""
results = db.users.find(parse_filter(filter), limit=limit)
return json.dumps([u.to_dict() for u in results])
# Add to agent
agent = Agent(
model="claude-sonnet-4-6",
system_prompt="You are a data analyst assistant.",
tools=[BuiltinTools.Read, query_users],
max_iterations=10
)
En TypeScript, las herramientas se definen como objetos con nombre, descripción, JSON Schema para inputs y una función execute.
// Custom tool definition (TypeScript)
import { Agent, Tool } from "@anthropic-ai/claude-agent-sdk";
const queryUsers: Tool = {
name: "query_users",
description: "Query the user database",
inputSchema: {
type: "object",
properties: {
filter: {
type: "string",
description: "Filter expression (e.g. 'active=true')"
},
limit: {
type: "number",
description: "Maximum results to return"
}
},
required: ["filter"]
},
async execute(input) {
const results = await db.users.find(
parseFilter(input.filter),
{ limit: input.limit ?? 10 }
);
return JSON.stringify(results);
}
};
const agent = new Agent({
model: "claude-sonnet-4-6",
systemPrompt: "You are a data analyst assistant.",
tools: [queryUsers],
maxIterations: 10
});
Conecta servidores MCP para dar a tu agente acceso a servicios externos directamente desde código.
# MCP integration example (Python)
from claude_agent_sdk import Agent, BuiltinTools, MCPServer
agent = Agent(
model="claude-sonnet-4-6",
system_prompt="You are a project management assistant.",
tools=[BuiltinTools.Read, BuiltinTools.Bash],
mcp_servers=[
MCPServer(
name="github",
command="npx",
args=["-y", "@modelcontextprotocol/server-github"],
env={"GITHUB_TOKEN": os.environ["GITHUB_TOKEN"]}
),
MCPServer(
name="slack",
command="npx",
args=["-y", "@modelcontextprotocol/server-slack"],
env={"SLACK_BOT_TOKEN": os.environ["SLACK_TOKEN"]}
)
],
max_iterations=15
)
# Agent can now use GitHub and Slack tools natively
result = agent.run(
"Read PR #42 from repo acme/api, summarize the "
"changes, and post a summary to #dev-updates on Slack."
)
Técnicas Avanzadas
Pipelines Multi-Agente
Construye pipelines donde agentes especializados se pasan trabajo. Un planificador divide tareas, workers ejecutan y un revisor valida. Cada agente tiene un prompt enfocado y conjunto de herramientas.
# Multi-agent pipeline
planner = Agent(
model="claude-opus-4-8",
system_prompt="Break tasks into subtasks. Output JSON.",
tools=[BuiltinTools.Read, BuiltinTools.Glob]
)
worker = Agent(
model="claude-sonnet-4-6",
system_prompt="Execute coding tasks. Write clean code.",
tools=[BuiltinTools.Read, BuiltinTools.Write,
BuiltinTools.Bash]
)
reviewer = Agent(
model="claude-sonnet-4-6",
system_prompt="Review code for bugs and style issues.",
tools=[BuiltinTools.Read, BuiltinTools.Grep]
)
# Orchestrate
plan = planner.run("Refactor auth module for OAuth2")
for subtask in plan.structured_output["subtasks"]:
result = worker.run(subtask["description"])
review = reviewer.run(f"Review: {result.text}")
Esquemas de Salida Estructurada
Define esquemas JSON que fuercen las respuestas del agente a estructuras predecibles. Esencial para pipelines automatizados. El SDK valida y reintenta en caso de salida inválida.
# Structured output with schema
output_schema = {
"type": "object",
"properties": {
"vulnerabilities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"severity": {"enum": ["low","medium","high","critical"]},
"file": {"type": "string"},
"line": {"type": "integer"},
"description": {"type": "string"},
"fix": {"type": "string"}
},
"required": ["severity","file","line","description","fix"]
}
},
"summary": {"type": "string"}
},
"required": ["vulnerabilities", "summary"]
}
agent = Agent(
model="claude-sonnet-4-6",
system_prompt="Security audit agent.",
tools=[BuiltinTools.Read, BuiltinTools.Grep],
output_schema=output_schema
)
Streaming y Output en Tiempo Real
Usa modo streaming para aplicaciones interactivas. El SDK emite eventos para cada token, inicio/fin de llamadas a herramientas y bloques de pensamiento. Modo único para procesamiento por lotes donde el throughput importa más que la latencia.
# Streaming mode (Python)
async for event in agent.stream("Analyze this codebase"):
if event.type == "text":
print(event.text, end="", flush=True)
elif event.type == "tool_start":
print(f"\n[Using {event.tool_name}...]")
elif event.type == "thinking":
print(f"\n[Thinking: {event.summary}]")
Persistencia de Sesión y Recuperación
Guarda el estado de la sesión en disco o base de datos para recuperación entre sesiones. Reanuda exactamente donde quedó la conversación. Incluye historial, resultados de herramientas, memoria y tareas pendientes.
# Session persistence (Python)
from claude_agent_sdk import Agent, SessionStore
store = SessionStore(backend="sqlite", path="./sessions.db")
# Resume or start new session
agent = Agent(
model="claude-sonnet-4-6",
system_prompt="You are a project assistant.",
tools=[BuiltinTools.Read, BuiltinTools.Write],
session_store=store,
session_id="user-123-project-abc"
)
# Agent resumes from last checkpoint if session exists
result = agent.run("Continue where we left off.")
Estrategias de Gestión de Costos
Selección de modelo por niveles, cache de resultados de herramientas, presupuestos de tokens y monitoreo de gasto por sesión para optimizar costos.
# Cost tracking (Python)
result = agent.run("Analyze security vulnerabilities")
print(f"Input tokens: {result.usage.input_tokens}")
print(f"Output tokens: {result.usage.output_tokens}")
print(f"Cache reads: {result.usage.cache_read_tokens}")
print(f"Total cost: ${result.usage.total_cost:.4f}")
print(f"Iterations: {result.iterations}")
Procesamiento por Lotes
Procesa datasets grandes con instancias de agentes en paralelo. Encola tareas, distribuye, recolecta resultados estructurados, maneja fallos sin detener el lote.
# Batch processing (Python)
import asyncio
from claude_agent_sdk import Agent, BuiltinTools
agent = Agent(
model="claude-haiku-4-5",
system_prompt="Extract company info from text.",
output_schema=company_schema
)
async def process_batch(documents):
tasks = [agent.arun(doc) for doc in documents]
results = await asyncio.gather(*tasks,
return_exceptions=True)
return [r.structured_output for r in results
if not isinstance(r, Exception)]
# Process 500 documents in parallel batches
all_results = await process_batch(documents)
Últimas Actualizaciones del SDK (2025-2026)
Sistema de Hooks
Puntos de procesamiento determinísticos en el loop del agente: PreToolUse, PostToolUse, PostToolUseFailure, UserPromptSubmit, Stop, SubagentStop, PreCompact, Notification, SubagentStart y PermissionRequest. Los hooks ejecutan comandos shell o lógica personalizada en cada punto, habilitando linting después de ediciones, escaneo de seguridad antes de commits y notificaciones al completar tareas sin modificar el comportamiento del agente.
Gestión de Sesiones
La persistencia automática a disco guarda el estado de la sesión después de cada turno. Las operaciones de continue y resume restauran agentes a su estado previo exacto. Session fork crea una nueva sesión desde una copia del historial de una sesión existente, habilitando exploración con ramificación donde pruebas diferentes enfoques desde el mismo checkpoint sin perder la conversación original.
Subagentes Programáticos
Define subagentes con campos de descripción que le dicen al agente padre en qué se especializa cada subagente. Claude auto-delega tareas al subagente más apropiado basado en estas descripciones. Los subagentes pueden reanudarse vía session_id, manteniendo su estado entre invocaciones. Esto habilita agentes especialistas persistentes que acumulan conocimiento de dominio con el tiempo.
Cambio Incompatible v0.1.0
A partir de v0.1.0, el SDK ya no carga el system prompt de Claude Code por defecto. Los agentes reciben un prompt mínimo a menos que solicites explícitamente el preset claude_code. Esto significa que los agentes personalizados ya no están restringidos por las reglas de seguridad y descripciones de herramientas de Claude Code, dándote control total sobre el system prompt mientras te requiere definir tus propias políticas de acceso a herramientas.
v0.1.56 (Abril 2026)
Agrega el método get_context_usage() a ClaudeSDKClient para consultar uso de ventana de contexto por categoría. El decorador @tool ahora soporta typing.Annotated para descripciones por parámetro en JSON Schema, mejorando la documentación de herramientas. Nueva opción session_id en ClaudeAgentOptions permite especificar IDs de sesión personalizados para tracking externo y reanudación de sesiones.
v0.1.58: SessionStore y Preview V2 (Abril 2026)
Soporte completo de SessionStore en paridad con TypeScript: un protocolo con 5 métodos (append, load, list_sessions, delete, list_subkeys), implementación de referencia InMemorySessionStore y 9 helpers asíncronos respaldados por store (list_sessions_from_store, fork_session_via_store, etc.). Tres adaptadores de referencia (S3/archivos JSONL, Redis/listas RPUSH, Postgres/asyncpg+jsonb) incluidos en examples/session_stores/. Un harness de conformidad de 13 contratos en claude_agent_sdk.testing.run_session_store_conformance permite a autores de adaptadores externos validar compatibilidad. delete_session() ahora elimina directorios de transcripción de subagentes. El SDK de TypeScript introduce una interfaz V2 simplificada en preview con patrones send() y stream() para conversaciones multi-turno más fáciles. Modo Auto de permisos agregado al tipo PermissionMode. Desde entonces el SDK mantiene una cadencia rápida de releases: a junio de 2026 el SDK de Python va en la línea 0.2.x y el de TypeScript en 0.3.x.
Claude Managed Agents (Abril 2026)
Anthropic lanzó Managed Agents en beta pública con el header managed-agents-2026-04-01. En vez de construir tu propio loop de agente y ejecución de herramientas, obtienes un harness completamente gestionado donde Claude lee archivos, ejecuta comandos, navega la web y ejecuta código en un sandbox seguro. El streaming de eventos del servidor provee salida en tiempo real. Este es el equivalente hosted de Anthropic al Agent SDK auto-hospedado — ideal para equipos que quieren capacidades agénticas sin gestión de infraestructura.
Herramienta Advisor (Abril 2026)
La herramienta advisor (beta header advisor-tool-2026-03-01) empareja un modelo ejecutor rápido (Sonnet 5 o Haiku 4.5) con un modelo de razonamiento de primer nivel (Opus 5 o Fable 5) como advisor estratégico consultado solo para decisiones complejas. En las evaluaciones propias de Anthropic, el esquema emparejado superó al modelo ejecutor por sí solo en codificación agéntica, con un costo menor que enrutar cada paso por el modelo advisor. Este patrón es revolucionario para sistemas de agentes en producción: usa modelos baratos por defecto, escala a razonamiento de primer nivel solo cuando sea necesario.
Resultados Reales
Agente de despliegue personalizado cruza cambios de código con grafo de dependencias de servicios, valida charts y verifica manifiestos antes de desplegar.
Agente de validación de migraciones redujo el tiempo de revisión de 30 minutos a 2 minutos por migración, detectando problemas que la revisión manual a veces perdía.
Esquemas de salida estructurada garantizan que cada respuesta del agente sea JSON parseable por máquina, eliminando la fragilidad de extracción basada en regex.
Pipelines de agentes especializados producen resultados de mayor calidad que agentes individuales, con cada uno enfocado en su dominio de expertise.