Tu primer agente
Construyes un agente que lee tu código, encuentra bugs y los arregla solo — el artefacto del curso. Sigue los pasos en una carpeta de prueba.
Paso 1 · Instala el SDK
mkdir my-agent && cd my-agent
| Lenguaje | Instalación |
|---|---|
| TypeScript | npm install @anthropic-ai/claude-agent-sdk |
| Python (pip) | python3 -m venv .venv && source .venv/bin/activate && pip3 install claude-agent-sdk |
El SDK de TypeScript trae empaquetado el binario nativo de Claude Code, así que no necesitas instalarlo aparte.
Paso 2 · La API key
Saca una en la Consola y ponla en un .env:
ANTHROPIC_API_KEY=tu-api-key
(También soporta Bedrock, Vertex y Azure con sus variables.)
Paso 3 · Un fichero con bugs
utils.py, con dos fallos a propósito:
def calculate_average(numbers):
total = 0
for num in numbers:
total += num
return total / len(numbers) # crashea con lista vacía
def get_user_name(user):
return user["name"].upper() # crashea si user es None
Paso 4 · El agente
agent.py:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage
async def main():
async for message in query(
prompt="Revisa utils.py por bugs que provoquen crashes. Arregla lo que encuentres.",
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob"], # pre-aprobadas
permission_mode="acceptEdits", # auto-aprueba ediciones
),
):
if isinstance(message, AssistantMessage):
for block in message.content:
if hasattr(block, "text"):
print(block.text) # razonamiento de Claude
elif hasattr(block, "name"):
print(f"Tool: {block.name}") # tool que llama
elif isinstance(message, ResultMessage):
print(f"Done: {message.subtype}")
asyncio.run(main())
Tres piezas, todas conocidas del plan:
query()— arranca el agent loop y devuelve un iterador async.prompt— el objetivo; Claude decide qué tools usar.options— config:allowed_toolspre-aprueba tools (curso de permisos) ypermission_mode: "acceptEdits"auto-aprueba ediciones para que corra sin prompts.
Paso 5 · Córrelo
python3 agent.py # o: npx tsx agent.ts
Mira utils.py: tendrá código defensivo para la lista vacía y el user nulo. El agente, solo: leyó el fichero, identificó los casos límite, y lo editó. Eso es lo que distingue al SDK del Client SDK — Claude ejecuta las tools, no te pide que las implementes tú. Ese agente funcionando es el artefacto del curso.
Tools y permisos: las dos palancas
Como en todo el plan, tú marcas qué se ejecuta sin pedirte permiso:
| Tools pre-aprobadas | El agente trabaja sin preguntarte |
|---|---|
Read, Glob, Grep | solo analizar (read-only) |
Read, Edit, Glob | analizar y modificar |
+ Bash | automatización completa |
Matiz:
allowed_toolspre-aprueba esas tools (se saltan el prompt de permiso) — no es una lista blanca que impida las demás. Para prohibir una tool de verdad, usadisallowed_tools.
Y el permission_mode —los mismos modos del curso de permisos— marca cuánta supervisión: acceptEdits (auto-aprueba ediciones), dontAsk (solo lo pre-aprobado, para headless bloqueado), bypassPermissions (todo, solo en sandbox).
Qué llevas hasta aquí
- Instalas con
pip install claude-agent-sdk/npm install @anthropic-ai/claude-agent-sdkyANTHROPIC_API_KEY. query(prompt, options)arranca el bucle; lo consumes conasync for.- Controlas el agente con
allowed_toolsypermission_mode— los permisos del plan, ahora en código.
En la siguiente lección, le das herramientas propias.
Fuente oficial: Agent SDK quickstart · Permissions
¿Quieres llevar la cuenta de las lecciones que has terminado?
Entrar para guardar progreso