ia local: creando un asistente de código desde cero

Fuentes: Building a (Bad) Local AI Coding Agent Harness from Scratch

Este artículo describe la construcción de un agente de codificación local basado en IA, un experimento para comprender los componentes básicos necesarios para crear un asistente de codificación conversacional que opere directamente en tu máquina, sin depender de servicios en la nube. El objetivo era explorar cómo replicar funcionalidades como lectura, escritura y listado de archivos utilizando un modelo de lenguaje local, en lugar de las APIs y frameworks propietarios que suelen utilizar los asistentes de codificación modernos.

El proyecto, completado en aproximadamente una hora con la ayuda de Claude Sonnet 4.6, utiliza Google Gemma 3 4GB ejecutándose localmente a través de Ollama. El 'harness' (el programa que gestiona la interacción con el modelo) demostró la viabilidad de los componentes clave: un bucle de agente (que mantiene el historial de la conversación), un protocolo de uso de herramientas (para que el modelo solicite acciones como leer o escribir archivos), y un sistema de 'sandboxing' (para limitar el acceso a archivos y evitar que el agente acceda a áreas no deseadas del sistema). Aunque el agente resultante, apodado 'vibe coding', no fue particularmente eficiente en sus tareas, el experimento proporcionó una valiosa comprensión de los fundamentos.

¿Cómo funciona? El 'harness' se compone de cuatro partes principales: un cliente Ollama para comunicarse con el modelo, el bucle de agente que gestiona la conversación, un protocolo de uso de herramientas (basado en bloques de código delimitados para indicar acciones) y un sistema de 'sandboxing' que restringe el acceso a archivos a un directorio de trabajo específico. El modelo Gemma 3 4B, al no tener una API de llamada a funciones nativa, utiliza un protocolo de texto simple para indicar acciones (como read:relative/path para leer un archivo). El 'harness' analiza estas indicaciones y las ejecuta. El bucle de agente mantiene un historial de la conversación, que se envía al modelo en cada iteración. El 'sandboxing' asegura que el agente solo pueda operar dentro del directorio de trabajo especificado, mitigando riesgos de seguridad.

Aplicaciones: Este tipo de agente local podría ser útil para desarrolladores que buscan una solución de codificación sin conexión, con mayor control sobre sus datos y privacidad. También sirve como una plataforma de aprendizaje para comprender cómo funcionan los asistentes de codificación basados en IA.

Consideraciones: La principal limitación es la capacidad del modelo Gemma 3 4B, que es relativamente pequeño y, por lo tanto, no es tan potente como los modelos más grandes que se utilizan en asistentes de codificación comerciales. Además, el protocolo de uso de herramientas es rudimentario y requiere una cuidadosa ingeniería de 'prompts' para que el modelo lo siga correctamente. Alternativas incluyen utilizar modelos más grandes o explorar frameworks más sofisticados para la interacción con el modelo.