CCAR-F · Diseño de herramientas y MCP
Read, Write, Edit, Bash, Grep y Glob: cuál usar para qué
Claude Code y el Agent SDK traen herramientas integradas (built-in tools) para trabajar con archivos y comandos. El examen no pregunta cómo se llaman sus parámetros, sino cuál elegir en cada situación y cómo combinarlas.
Qué hace cada una
| Herramienta | Para qué | Ejemplo |
|---|---|---|
| Grep | Búsqueda por contenido (content search): qué dice el archivo | Quién llama a processLegacyOrder, dónde aparece un mensaje de error, una clave con el patrón AKIA[0-9A-Z]{16} |
| Glob | Búsqueda por ruta (file path pattern matching): cómo se llama el archivo | Todos los tests con **/*.test.tsx |
| Read | Leer un archivo completo | Abrir el archivo que registra una ruta |
| Edit | Cambio puntual reemplazando un texto único | const PORT = 3000; por const PORT = 8080; |
| Write | Escribir un archivo entero | Crear un archivo o reescribirlo después de leerlo |
| Bash | Ejecutar comandos | Correr los tests o el build |
La regla corta: Grep es qué dice; Glob es cómo se llama. Buscar tests con Grep trae cualquier archivo que mencione “test”; buscar quién llama a una función con Glob solo encuentra archivos con ese nombre.
Edit y su plan B
Edit necesita un texto ancla único (unique anchor text): reemplaza un fragmento que aparece una sola vez. Si timeout: 30 aparece en tres secciones y solo hay que cambiar la de pagos, Edit falla. El plan B que nombra la guía del examen es Read + Write: cargar el archivo completo, cambiar solo lo necesario y escribirlo entero. En la práctica también se puede ampliar el texto con más contexto, pero en el examen la respuesta es Read + Write.
Al revés también hay trampa: si el texto es único, Edit es lo correcto. Reescribir 900 líneas para cambiar una arriesga cambios accidentales.
Explorar sin leer todo
Para entender un módulo de 47 archivos, leerlos todos primero llena el contexto de código que no viene al caso. La exploración incremental (incremental exploration) arranca con un ancla:
- Grep de algo concreto: el string de una ruta (
/api/v2/invoices), un nombre de clase, un mensaje de error. - Read del archivo que aparece.
- Seguir los imports y el flujo, leyendo solo lo que se va necesitando.
Encontrar todos los usos
Un solo Grep por el nombre original no alcanza cuando hay reexportaciones con otro nombre o alias de import. Si un archivo “barrel” exporta processOrder como submitOrder, los consumidores que importan submitOrder nunca contienen el texto processOrder. La búsqueda va en varios pasos:
- Grep de la definición y sus reexportaciones.
- Read de esos archivos para juntar todos los nombres exportados (
fmtMoney,fc). - Un nuevo Grep por cada nombre.
Las trampas típicas
- Grep para buscar archivos por nombre o Glob para buscar contenido.
- Leer todo el repositorio “para tener contexto”: el antipatrón principal.
sedoreplace_allcuando Edit falla por texto repetido: cambian todas las apariciones, incluidas las que tenían que quedar igual.- Modificar el archivo para que el texto sea único o reestructurar el código para esquivar un límite de la herramienta.
findogreppor Bash: funcionan, pero el examen espera la herramienta integrada hecha para eso.- Escribir de memoria con Write sin leer antes: destruye el resto del archivo.
En el examen
Identificá qué se busca: ¿un texto adentro de los archivos o un patrón de nombres? ¿Un cambio con un ancla única o repetida? ¿Hay alias o reexportaciones en el escenario? Con esas tres preguntas sale la secuencia de herramientas.
Pregunta rápida
Una pregunta del simulacro sobre este dominio. Cuenta para tu progreso.
A financial analysis firm uses a research coordinator that delegates source gathering to subagents. For a report on renewable-energy financing, it sends a subagent a brief listing 8 sources.
The subagent returns findings from 6 of the 8 sources plus two structured errors. Source 7: errorCategory "transient", isRetryable: true (rate limited). Source 8: errorCategory "permission", isRetryable: false (subscription required). The six successful sources are relevant and of good quality.
The report is due to a client at the end of the week, and the firm's procurement team handles requests for new data subscriptions.
What should the coordinator do?