Agente programador: escribir y depurar código con IA
Qué cubre este artículo sobre agentes programadores
- Qué es un agente programador y cómo funciona.
- Cómo el agente genera, depura y refactoriza código.
- Cómo equipar el agente con herramientas para sistema de archivos, Git y tests.
- Casos prácticos para desarrollo de features, corrección de bugs y revisión de código.
- Buenas prácticas para seguridad, calidad de código y control humano.
Introducción: agentes programadores explicados
Un agente programador es un agente de IA que escribe código de forma autónoma: comprende requisitos, planifica la implementación, escribe código, lo prueba y corrige errores. No solo “generar código”, sino “desarrollar feature, probar, depurar”.
Este artículo va dirigido a desarrolladores que quieren usar agentes de IA para programación. Encontrarás fundamentos en Agentes de IA y Modelos de codificación.
¿Por qué necesito un agente programador?
Imagina que quieres implementar un feature: “autenticación de usuario con JWT”. Un copilot clásico genera fragmentos de código. Un agente: “analiza requisitos → planifica arquitectura → escribe código → escribe tests → ejecuta tests → corrige errores → commit”. El agente desarrolla el feature completo.
Agente programador en pocas palabras
Requisito → el agente planifica (LLM) → llama herramientas (leer archivo, escribir código, ejecutar test) → itera → feature listo. Con Git para versionado, con tests para calidad.
La idea central es: no solo fragmentos, sino features completos.
Para quién es este artículo
- Desarrolladores que usan agentes de codificación.
- Equipos que automatizan desarrollo de features.
- DevOps que amplían CI/CD con agentes.
- Desarrolladores individuales que aumentan productividad.
Términos clave
- Agente de IA - Actor autónomo. Cuándo es útil: el concepto.
- Llamada a herramientas - Invocar herramientas. Cuándo es útil: para operaciones de archivo y Git.
- Modelos de codificación - Para código. Cuándo es útil: la selección del modelo.
- Ollama - Servidor de modelos local. Cuándo es útil: el backend.
- Asistentes de código - Aider, Continue. Cuándo es útil: las herramientas.
Arquitectura
Requisito / Issue
│
▼
Agente programador (Ollama + Herramientas)
│
├─ Comprender: ¿Qué se debe construir?
├─ Planificar: Arquitectura, archivos, tests
├─ Actuar: Invocar herramientas
│ ├─ read_file: Leer código
│ ├─ write_file: Escribir código
│ ├─ run_tests: Ejecutar tests
│ ├─ git_commit: Hacer commit de cambios
│ └─ run_linter: Verificar código
├─ Verificar: ¿Pasaron los tests? ¿Código ok?
└─ Iterar: Si hay errores, volver a planificar
│
▼
Resultado
├─ Código implementado
├─ Tests escritos
├─ Git commit
└─ Pull request (opcional)
Caso práctico 1: Desarrollo de features
class FeatureAgent:
"""Agente para desarrollo de features"""
async def implement(self, requirement):
"""Implementar feature"""
# 1. Entender requisito
plan = await self.plan(requirement)
# 2. Escribir código
for file in plan["files"]:
code = await self.generate_code(file, plan)
await self.write_file(file["path"], code)
# 3. Escribir tests
tests = await self.generate_tests(plan)
await self.write_file("test_feature.py", tests)
# 4. Ejecutar tests
result = await self.run_tests()
# 5. Si hay errores: depurar
if not result["passed"]:
fixes = await self.debug(result["errors"])
await self.apply_fixes(fixes)
await self.run_tests()
# 6. Commit
await self.git_commit(f"feat: {requirement}")
return plan
Caso práctico 2: Corrección de bugs
class BugFixAgent:
"""Agente para corrección de bugs"""
async def fix(self, bug_report):
"""Corregir bug"""
# 1. Reproducir bug
error = await self.reproduce(bug_report)
# 2. Analizar causa
analysis = await self.analyze(error)
# 3. Generar corrección
fix = await self.generate_fix(analysis)
# 4. Aplicar corrección
await self.write_file(analysis["file"], fix)
# 5. Probar
result = await self.run_tests()
if result["passed"]:
await self.git_commit(f"fix: {bug_report['title']}")
else:
await self.iterate_fix(error)
return analysis
Caso práctico 3: Revisión de código
class ReviewAgent:
"""Agente para revisión de código"""
async def review(self, diff):
"""Revisar código"""
analysis = await ollama.generate(f"""
Revisa este código:
{diff}
Evalúa:
1. Calidad del código
2. Bugs potenciales
3. Riesgos de seguridad
4. Performance
5. Mejores prácticas
Responde como JSON:
{{"issues": [...], "suggestions": [...], "approved": true|false}}""", format="json")
return json.loads(analysis)
Herramientas para agentes programadores
tools = [
{
"name": "read_file",
"description": "Leer archivo",
"function": read_file
},
{
"name": "write_file",
"description": "Escribir archivo",
"function": write_file
},
{
"name": "list_files",
"description": "Listar archivos",
"function": list_files
},
{
"name": "run_tests",
"description": "Ejecutar tests",
"function": run_tests
},
{
"name": "run_linter",
"description": "Ejecutar linter",
"function": run_linter
},
{
"name": "git_commit",
"description": "Hacer commit de cambios",
"function": git_commit
},
{
"name": "search_code",
"description": "Buscar en código",
"function": search_code
}
]
Notas de seguridad
- Ejecución de código: El agente no debe ejecutar código arbitrario. Ver Sandboxing.
- Permisos de Git: El agente no debe hacer force-push o eliminar branches. Ver Permisos de herramientas.
- Secretos: El agente no debe escribir secretos en el código. Ver Protección de datos.
- Calidad del código: El código generado debe ser revisado. Control humano.
- Inyección de prompts: Los comentarios del código pueden contener inyecciones. Ver Inyección de prompts.
Errores comunes
- Tareas demasiado complejas: El agente debe recibir tareas pequeñas y claras. Dividir features grandes en partes.
- Sin tests: Sin tests, el agente no puede verificar si el código funciona.
- Prompts deficientes: “Implementa autenticación” es demasiado vago. Dar requisitos precisos.
- Sin límite de iteraciones: Los agentes pueden quedar atrapados en bucles. Establecer iteraciones máximas.
- Sin plan B: Si el agente falla, el desarrollo humano debe continuar.
Enlaces relacionados
- Agentes de IA - Fundamentos.
- Modelos de codificación - Selección de modelos.
- Asistentes de código - Aider, Continue.
- Generación de código - Descripción general.
- Depuración - Técnicas de depuración.
- Permisos de herramientas - Seguridad.
Puntos clave:
- Agente programador: comprende, planifica, escribe, prueba, hace commit, autónomamente.
- Herramientas: read_file, write_file, run_tests, git_commit, run_linter.
- Para desarrollo de features, corrección de bugs, revisión de código.
- Las operaciones críticas requieren control humano.
- Localmente con Ollama: tu código permanece privado.
FAQ
¿Qué es un agente programador?
¿Qué puede hacer el agente?
¿Qué tan bueno es el código generado?
¿Es seguro el agente?
¿Qué modelo para código?
¿Mi código permanece privado?
¿Cuánto cuesta?
¿Agente o GitHub Copilot?
Fuentes y lecturas adicionales
- Ollama - Servidor de modelos local.
- Aider - Agente de codificación.
- LangChain Agents - Conceptos de agentes.
- DeepSeek-Coder - Modelo de codificación.


