Guía - CCA-F Claude Certified Architect - Foundations
Última revisión: mayo de 2026
Una referencia escaneable de patrones arquitectónicos que evalúa el examen CCA-F. Lee de arriba a abajo o salta a una sección.
Arquitectura y Orquestación Agéntica
Elegir entre un agente o un enjambre multiagente para un flujo de trabajo complejo.
Comience con un solo agente + herramientas. Divida en múltiples agentes solo cuando los límites de las tareas sean claros, las ventanas de contexto se desborden o se necesiten diferentes niveles de modelo por subtarea.
Por qué: Los multiagentes añaden latencia, superficie de error y costo de orquestación. La mayoría de las cargas de trabajo de producción tienen éxito con un agente bien equipado.
El agente debe razonar sobre las observaciones antes de actuar de nuevo.
Implemente un bucle ReAct (Razonar + Actuar): el modelo genera un pensamiento, selecciona una herramienta, recibe el resultado y se repite hasta que se cumple una condición de parada.
Por qué: ReAct hace visible el razonamiento intermedio, mejorando la depurabilidad y permitiendo auditar la cadena de pensamiento.
El agente necesita interactuar con sistemas externos (APIs, bases de datos, sistemas de archivos).
Defina herramientas a través de la API tool_use. El modelo emite un bloque tool_use; su código lo ejecuta y devuelve un tool_result. El modelo luego continúa.
El orquestador debe despachar subtareas heterogéneas (revisión de código, búsqueda web, análisis de datos).
Utilice un agente supervisor que descomponga el objetivo, delegue en subagentes especialistas y agregue los resultados. Cada subagente tiene su propio system prompt y conjunto de herramientas.
Múltiples subagentes deben coordinarse sin comunicación directa entre pares.
Dirija todos los mensajes entre agentes a través de un supervisor. El supervisor decide qué subagente se ejecuta a continuación, pasa el contexto y aplica las restricciones de ordenación.
Por qué: La mensajería directa entre pares crea ciclos y dificulta el seguimiento del estado. Un supervisor central mantiene explícito el DAG de ejecución.
El agente debe recordar el contexto a lo largo de una sesión de varias interacciones.
Pase el historial completo de la conversación (system + turnos anteriores de usuario/asistente) en el array de mensajes. Para sesiones largas, resuma los turnos antiguos para mantenerse dentro de la ventana de contexto.
El agente necesita persistencia entre sesiones o entre usuarios.
Almacene hechos en una capa de memoria externa (vector DB, key-value store, archivo). Recupere las memorias relevantes a través de RAG e inyéctelas en el system prompt en cada turno.
El equipo recurre a la arquitectura agéntica por defecto para cada característica de LLM.
No use agentes cuando un solo prompt + salida estructurada sea suficiente. Los agentes añaden latencia, costo y modos de fallo. Reserve los bucles agénticos para tareas que requieran iteración o uso de herramientas.
Una tarea de razonamiento compleja necesita más deliberación interna antes de la respuesta.
Habilite el pensamiento extendido con un parámetro budget_tokens. El modelo utiliza un bloque de pensamiento antes de responder, mejorando la precisión en problemas de varios pasos.
Por qué: El pensamiento extendido sacrifica latencia por calidad. Establezca budget_tokens proporcionalmente a la complejidad de la tarea; póngale un límite para controlar el costo.
Una llamada a una herramienta devuelve un error; el agente debe recuperarse elegantemente.
Devuelva el error como un tool_result con is_error: true. El modelo ve el fallo y puede reintentarlo con parámetros corregidos, intentar una herramienta alternativa o explicar el fallo al usuario.
Fallos transitorios de API (429, 529) durante un bucle agéntico.
Implemente un exponential backoff con jitter. En 429 (límite de tasa), respete el encabezado retry-after. En 529 (sobrecargado), espere más tiempo. Nunca reintente errores de clase 400 ciegamente.
Medir si un sistema agéntico realmente mejora con el tiempo.
Construya un paquete de evaluación: defina pares entrada-salida, ejecute el agente, puntúe las salidas (coincidencia exacta, LLM-as-judge, revisión humana). Rastree la tasa de aprobación por versión.
Por qué: Sin evaluaciones, los ajustes de prompts son conjeturas. La detección de regresiones requiere una puntuación automatizada y repetible.
El agente produce una salida de baja calidad en la primera pasada.
Añada un paso de reflexión: después de generar una respuesta, pida al modelo que critique su propia salida y la revise. Utilice un turno de mensaje separado o el pensamiento extendido.
El flujo de trabajo agéntico realiza acciones irreversibles (eliminar recursos, enviar correos electrónicos).
Inserte un punto de control antes de las operaciones destructivas. Presente la acción planificada al usuario, espere la aprobación y luego ejecute. Registre la decisión para auditoría.
Configuración y Flujos de Trabajo de Claude Code
Múltiples archivos CLAUDE.md en un monorepo; no está claro cuál tiene precedencia.
Tres niveles: ~/.claude/CLAUDE.md (usuario), CLAUDE.md en la raíz del proyecto (proyecto), CLAUDE.md hijo del espacio de trabajo (workspace). Todos se fusionan; el workspace anula al proyecto que anula al usuario.
El equipo quiere prompts reutilizables invocados como /my-command.
Cree un archivo .claude/commands/<name>.md que contenga la plantilla del prompt. Invoque con /<name>. Use $ARGUMENTS para la entrada del usuario. Los comandos con ámbito de proyecto residen en el repositorio.
Ejecutar un linter automáticamente después de que Claude edite un archivo.
Configure un hook PostToolUse en settings.json que coincida con la herramienta Write/Edit. El script del hook se ejecuta después de que la herramienta se completa; una salida no cero bloquea el cambio.
Claude Code pide permiso en cada comando de shell; ralentizando la iteración.
Utilice patrones de lista de permitidos en settings.json bajo permissions.allow. Tres modos: default (solicitar para cada uno), allowlist (aprobar automáticamente patrones coincidentes) y yolo (aprobar todos automáticamente - no recomendado para producción).
El desarrollador quiere anulaciones personales no comprometidas con el repositorio.
settings.json se commite (valores predeterminados del equipo). settings.local.json se ignora por git (anulaciones personales). La configuración local se fusiona sobre la configuración del proyecto.
Ejecutar Claude Code en una pipeline de CI sin terminal interactiva.
Use `claude -p "prompt" --output-format json` en modo headless. Dirija la entrada a través de stdin, analice la salida estructurada. Establezca ANTHROPIC_API_KEY como un secreto de CI.
Claude Code necesita acceso a un servidor MCP personalizado (base de datos, API interna).
Agregue el servidor a mcpServers en settings.json con comando y args. Claude Code inicia el servidor MCP como un proceso hijo y descubre herramientas al inicio.
Claude Code trabajando en una rama de características mientras usted desarrolla en main.
Utilice git worktrees. Claude Code opera en el directorio del worktree; su checkout principal permanece intacto. Evita conflictos de índice y el malabarismo de stashes.
Claude Code genera cambios pero usted quiere commits atómicos limpios.
Claude Code rastrea los cambios de archivos y puede crear commits con mensajes. Revise el diff antes de hacer commit. Prefiera staged files específicos en lugar de git add -A para evitar la fuga de secretos.
Uso de Claude Code desde VS Code o JetBrains.
Instale la extensión de Claude Code. Incrusta la CLI como un panel dentro del IDE, compartiendo los mismos CLAUDE.md, hooks y configuraciones. Las sesiones basadas en terminal y en IDE son intercambiables.
Prompt largo con múltiples secciones; el modelo confunde las instrucciones con los datos.
Envuelva las secciones en etiquetas XML: <instructions>, <context>, <examples>. Claude está entrenado para respetar los límites XML como delimitadores estructurales.
Definir el comportamiento persistente en todos los turnos (tono, restricciones, persona).
Coloque instrucciones invariantes en el system prompt. Manténgalo conciso: rol, restricciones, formato de salida. Los mensajes de usuario llevan el contexto por turno; el sistema lleva las reglas de toda la sesión.
Forzar al modelo a iniciar su respuesta con un prefijo específico (ej., corchete de apertura JSON).
Añada un mensaje parcial del asistente al final del array de mensajes. Claude continúa desde donde lo dejó. Útil para hacer cumplir el formato de salida.
El formato de salida del modelo es inconsistente a pesar de las instrucciones detalladas.
Añada 2-3 ejemplos few-shot como pares de turnos usuario/asistente antes de la consulta real. Los ejemplos anclan el formato, el tono y el estilo de razonamiento de manera más fiable que las instrucciones en prosa.
El modelo omite pasos de razonamiento en problemas lógicos de varios pasos.
Pida con "Piensa paso a paso" o use el pensamiento extendido. Para producción, use el pensamiento extendido (budget_tokens) en lugar de pedir una cadena de pensamiento visible para mantener la salida limpia.
temperature=0 para tareas deterministas (clasificación, extracción). temperature=0.5-0.7 para escritura creativa. temperature=1.0 para máxima diversidad. Nota: el pensamiento extendido requiere temperature=1.
Necesidad de una salida JSON válida garantizada del modelo.
Defina una herramienta con el esquema JSON deseado como input_schema. Establezca tool_choice para forzar esa herramienta. El modelo devuelve JSON estructurado en el bloque tool_use, validado contra el esquema.
La aplicación orientada al usuario necesita un bajo tiempo hasta el primer token.
Use stream=true en la API de Messages. Procese los eventos enviados por el servidor incrementalmente: content_block_start, content_block_delta, message_stop. Muestre los tokens a medida que llegan.
Procesar miles de prompts donde la latencia no es crítica.
Utilice la API de Message Batches. Envíe hasta 100k solicitudes por lote. Los resultados llegan en 24 horas con una reducción de costo del 50%. Consulte o use un webhook para la finalización.
Extraer datos de documentos escaneados o imágenes.
Pase las imágenes como bloques de contenido base64 (type: image) o páginas PDF (type: document) en el mensaje del usuario. Claude procesa hasta 20 MB por solicitud. Prefiera PDFs nativos a capturas de pantalla para documentos con mucho texto.
Elegir entre Opus, Sonnet y Haiku para una carga de trabajo.
Opus: la mayor capacidad, razonamiento complejo, tareas agénticas. Sonnet: rendimiento/costo equilibrado, uso general en producción. Haiku: el más rápido y económico, clasificación, enrutamiento, extracción simple.
Las llamadas repetidas comparten el mismo prompt largo del sistema; se quiere reducir el costo.
Marque el contenido cacheable con cache_control: { type: "ephemeral" }. Los prefijos cacheados se reutilizan en llamadas durante un máximo de 5 minutos (se extiende automáticamente al ser accedido). El costo de escritura es un 25% más; el costo de lectura es un 90% menos.
Definir una herramienta para la API de Claude Messages.
Cada herramienta tiene name, description e input_schema (JSON Schema). La descripción le dice a Claude cuándo usarla; el esquema valida los parámetros. Mantenga las descripciones orientadas a la acción y concisas.
La herramienta se ejecutó correctamente; es necesario devolver el resultado a Claude.
Envíe un mensaje de usuario con role: "user" y un bloque de contenido tool_result. Incluya el tool_use_id para correlacionar. Devuelva los datos como texto o contenido estructurado; mantenga las cargas útiles por debajo de 100k tokens.
El agente necesita obtener datos de tres fuentes independientes simultáneamente.
Claude puede emitir múltiples bloques tool_use en una sola respuesta. Ejecútelos en paralelo, luego devuelva todos los bloques tool_result en un único mensaje de usuario. Reduce los viajes de ida y vuelta.
Comprender el modelo de componentes del Model Context Protocol.
Tres roles: Host (aplicación como Claude Code), Client (manejador de protocolo por servidor), Server (expone herramientas/recursos/prompts). Los clientes mantienen conexiones 1:1 con los servidores.
Elegir cómo un cliente MCP se conecta a un servidor.
stdio: proceso local, configuración más sencilla. SSE: basado en HTTP, legado. Streamable HTTP: estándar actual para servidores remotos, soporta reanudabilidad y mensajes iniciados por el servidor.
Resources: datos de solo lectura (archivos, filas de DB) que el cliente extrae. Tools: acciones que el modelo invoca (escribir, calcular, consultar). Prompts: plantillas de prompts reutilizables que el usuario selecciona. Las herramientas son controladas por el modelo; los recursos son controlados por la aplicación.
Crear un servidor MCP personalizado para exponer APIs internas.
Use el SDK de MCP (TypeScript o Python). Implemente manejadores de herramientas con esquemas de entrada. Regístrese a través de server.tool(). Transporte: stdio para local, streamable HTTP para remoto.
El agente debe interactuar con una aplicación GUI (hacer clic, escribir, capturas de pantalla).
Habilite las herramientas de uso de computadora: computer_20250124 (captura de pantalla + ratón + teclado), text_editor_20250124, bash_20250124. El modelo recibe capturas de pantalla y emite acciones basadas en coordenadas.
El modelo siempre debe llamar a una herramienta específica en lugar de responder con texto.
Establezca tool_choice en { type: "tool", name: "my_tool" }. El modelo es forzado a llamar a esa herramienta. Use type: "any" para requerir alguna llamada a herramienta, o type: "auto" (predeterminado) para dejar que el modelo decida.
La aplicación alcanza el límite de contexto a mitad de la conversación.
Los modelos de Claude soportan 200k tokens. Monitoree el uso a través de response.usage. Al acercarse al límite, resuma los turnos antiguos o trunque. Nunca descarte mensajes silenciosamente.
Procesar un documento de 150 páginas que ocupa la mayor parte de la ventana de contexto.
Coloque el documento al principio del prompt (después del sistema). Ponga las preguntas al final. Use el prompt caching para evitar reenviar en seguimientos. Para tareas de varios documentos, use RAG para seleccionar fragmentos relevantes.
La base de conocimiento es demasiado grande para caber en el contexto; el modelo necesita acceso en tiempo de consulta.
Incruste e indexe documentos en un vector store. En tiempo de consulta, recupere los k fragmentos principales, inyéctelos en el mensaje del usuario. Cite los documentos fuente en la salida para trazabilidad.
El modelo afirma hechos incorrectos con confianza.
Base las respuestas en el contexto proporcionado (RAG). Instruya al modelo a decir "No lo sé" cuando la evidencia sea insuficiente. Utilice citas. Valide las afirmaciones fácticas contra los documentos fuente programáticamente.
La aplicación recibe respuestas 429 (límite de tasa) o 529 (sobrecarga).
429: ha alcanzado su límite de tasa de nivel. Espere y reintente; respete retry-after. 529: la API de Anthropic está sobrecargada. Espere más tiempo. Ambos son transitorios. Nunca reintente 400 o 401.
El gasto mensual de la API es más alto de lo esperado.
Utilice el prompt caching para prefijos repetidos (90% de descuento de lectura). Envíe tareas simples a Haiku. Utilice la API por lotes para cargas de trabajo asíncronas (50% de descuento). Monitoree el uso de tokens por endpoint. Recorte el contexto innecesario.
Necesidad de visibilidad del consumo de tokens por solicitud.
Cada respuesta de la API de Messages incluye usage.input_tokens, usage.output_tokens y (si está en caché) usage.cache_read_input_tokens. Registre estos por llamada, agréguelos por endpoint, configure alertas de presupuesto.