Construyendo Agentes IA Que Realmente Entregan Código

iadesarrolloclaudeproductividad
Construyendo Agentes IA Que Realmente Entregan Código

La brecha entre la demo y producción

La mayoría de las demos de IA muestran un agente escribiendo una función aislada. Esa es la parte fácil. Lo difícil es hacer que un agente funcione dentro de un codebase existente con restricciones reales: sistemas de tipos, suites de tests, pipelines de despliegue y un equipo que necesita entender el resultado.

Después de meses integrando agentes de IA en mi flujo de trabajo diario entregando software enterprise, he llegado a patrones que consistentemente producen código mergeable en vez de snippets ingeniosos de usar y tirar.

Patrón 1: El contexto lo es todo

El factor más importante en la calidad del output de un agente es el contexto que le proporcionas. Un prompt vago produce código vago. Un prompt con la definición de la interfaz, los patrones existentes y las restricciones produce código que encaja.

// Mal: "Crea un servicio de usuarios"
// Bien: Proporciona el contrato real
 
interface UserService {
  findById(id: string): Promise<User | null>;
  create(input: CreateUserInput): Promise<User>;
  updateProfile(id: string, data: Partial<UserProfile>): Promise<User>;
}
 
// El agente ahora conoce la forma exacta,
// los tipos de retorno y los límites de error.
// Producirá código que se ajusta a tu arquitectura.

Estructuro cada interacción con el agente alrededor de tres piezas: qué existe ya, qué necesito, y qué restricciones aplican. El agente no necesita ser creativo -- necesita ser preciso.

Patrón 2: Unidades pequeñas y verificables

Los agentes funcionan mejor cuando la tarea es lo suficientemente pequeña para verificar en una sola pasada de revisión. Divido el trabajo en unidades que producen un commit cada una. Cada unidad tiene una entrada clara (la descripción de la tarea con contexto) y una salida clara (archivos modificados, tests pasando).

// Cada tarea sigue esta estructura
interface AgentTask {
  // Qué archivos leer como contexto
  context: string[];
  // Qué construir
  objective: string;
  // Cómo verificar que funcionó
  verification: {
    typeCheck: boolean;
    testCommand?: string;
    buildCommand?: string;
  };
  // Qué archivos deberían cambiar
  expectedOutput: string[];
}
 
// Esto no es un framework teórico.
// Es literalmente cómo estructuro mi workflow.

La clave: si no puedes describir los criterios de verificación de antemano, la tarea es demasiado grande para un agente. Divídela.

Patrón 3: Deja que el agente vea sus errores

El camino más rápido a código funcional es un ciclo de feedback corto. Ejecuta el type checker después de cada cambio. Ejecuta los tests. Alimenta los errores de vuelta al agente con el stack trace completo. La mayoría de los agentes corrigen sus propios errores en el primer reintento cuando pueden ver el error real.

Lo que no funciona: pedirle al agente que "tenga cuidado" o que "verifique dos veces." Lo que funciona: darle un compilador que rechaza código malo inmediatamente.

Lo que he aprendido

Los agentes de IA no están reemplazando desarrolladores. Están amplificando a los desarrolladores que saben descomponer problemas, definir interfaces y verificar outputs. La habilidad está cambiando de "escribe el código" a "define el trabajo con la precisión suficiente para que el código correcto sea el único resultado posible."

Los desarrolladores que van a prosperar son los que saben pensar en contratos y restricciones -- las mismas habilidades que los hacían buenos arquitectos en primer lugar.

Sobre mí

Escrito por Fran Llantada — desarrollador full-stack en Nieve Consulting. En mi tiempo libre construí Cliencer, un SaaS completo desde cero, solo. Estos artículos son las lecciones de ingeniería que fui sacando en el camino.