Skip to content
BotServBotServ
Agente de programaciónAgente IAGeneración de códigoDebuggingAutomatización

Agente de Programación: Escribir y depurar código con IA

Agentes IA para programación. Generar código, depurar, refactorizar con ejemplos prácticos.

S

schutzgeist

5 min read
Agente de Programación: Escribir y depurar código con IA

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

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

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?

Un agente de IA que escribe código autónomamente: comprende requisitos, planifica la implementación, escribe código, lo prueba y corrige errores. Features completos, no solo fragmentos.

¿Qué puede hacer el agente?

Implementar features, corregir bugs, escribir tests, revisar código, refactorizar, documentar, hacer commits. Puede automatizar el flujo de trabajo de desarrollo completo.

¿Qué tan bueno es el código generado?

Muy bueno para patrones estándar y requisitos claros. Para arquitectura compleja o requisitos inusuales, debe haber revisión humana.

¿Es seguro el agente?

Sí, si está configurado correctamente: sin ejecución de código arbitrario, permisos de Git restringidos, sin secretos en código, revisión humana para cambios críticos.

¿Qué modelo para código?

deepseek-coder-v2, qwen2.5-coder o codellama. Para mejor calidad: deepseek-coder-v2:16b o qwen2.5-coder:14b. Ver Modelos de codificación.

¿Mi código permanece privado?

Sí, si usas Ollama localmente. Tu código no se envía a APIs en la nube. Todos los análisis y generaciones permanecen locales.

¿Cuánto cuesta?

Gratis. Ollama y los frameworks de agentes son Open Source. Solo costos de hardware para el servidor. Sin costos de licencia por desarrollador.

¿Agente o GitHub Copilot?

Copilot para fragmentos en línea mientras escribes. Agente para features completos, depuración y automatización. Ambos pueden usarse juntos.

Fuentes y lecturas adicionales

Volver al blog
Share:

Entradas relacionadas