Este artículo describe un experimento innovador para construir un motor de base de datos SQLite compatible utilizando inteligencia artificial generativa (IA generativa), específicamente los modelos Claude, Codex y Gemini, para generar código en Rust. El objetivo era explorar la viabilidad de la ingeniería de software paralela a través de agentes de IA, tratando el desarrollo como un sistema distribuido.
¿Cómo funciona? El proceso se divide en una fase de 'bootstrap' donde Claude genera la estructura inicial del proyecto, documentación básica y un 'harness' de pruebas. Luego, una fase de 'worker' donde seis agentes (dos de Claude, dos de Codex y dos de Gemini) trabajan en paralelo, cada uno asignado a tareas específicas y delimitadas. Cada agente extrae la última versión del código, trabaja en su tarea, la prueba contra SQLite3 como 'oráculo' (referencia de verdad), actualiza el progreso compartido y luego 'push' los cambios. Un agente 'coalescer' (Gemini) se encarga de eliminar duplicados y resolver divergencias entre los cambios realizados por los diferentes agentes. Se utiliza un sistema de 'lock files' para gestionar el acceso a tareas y evitar conflictos.
Resultados y desafíos: El experimento resultó en un motor SQLite funcional con aproximadamente 18,849 líneas de código y 282 pruebas unitarias que pasaron. Sin embargo, se identificó que el 54.5% de los commits se debieron a la coordinación (lock/claim/release), lo que subraya la importancia de una gestión cuidadosa de los 'locks' para maximizar el rendimiento. La documentación se volvió extensa (el archivo PROGRESS.md alcanzó las 490 líneas), lo que resaltó la necesidad de ejecutar el agente 'coalescer' con mayor frecuencia. La falta de una medición precisa del uso de tokens de cada agente también fue una limitación.
Aplicaciones y consideraciones: Este enfoque podría ser útil para proyectos de desarrollo de software complejos donde la paralelización puede acelerar el proceso. Sin embargo, requiere una clara definición de tareas, fuertes límites de módulo y una disciplina rigurosa en la gestión de la coordinación. La necesidad de una documentación exhaustiva y la dificultad para rastrear el uso de recursos son aspectos a considerar. El experimento demuestra que la IA generativa puede ser una herramienta poderosa para la ingeniería de software, pero requiere una cuidadosa planificación y gestión para evitar problemas de coordinación y duplicación.
