Aceptación Institucional

Navegación de Código para Ingenieros de Software en IA: Lecciones Aprendidas hasta Ahora

Aceptación Institucional
Code Navigation for AI SWEs: What We've Learned So Far

Exploramos las mejores prácticas y desafíos en la navegación de código para ingenieros de software en inteligencia artificial, analizando diversas herramientas y enfoques que optimizan la productividad y eficiencia en proyectos complejos.

La navegación de código es una habilidad esencial no solo para los ingenieros de software humanos, sino también para las inteligencias artificiales especializadas en desarrollo de software, conocidas comúnmente como AI SWEs (Artificial Intelligence Software Engineers). A medida que los entornos de desarrollo y las bases de código se vuelven cada vez más complejos, la necesidad de contar con sistemas robustos que permitan una exploración eficiente y precisa de estos códigos es crítica para garantizar productividad, calidad y escalabilidad en el trabajo diario. En Engines, una plataforma diseñada específicamente para potenciar a los AI SWEs, se ha llevado a cabo un análisis exhaustivo sobre distintos métodos y arquitecturas para facilitar la navegación de código. Este análisis no solo se ha centrado en soluciones ya implementadas, sino que también ha explorado herramientas de vanguardia y técnicas provenientes de investigaciones recientes. El objetivo fundamental ha sido entender qué enfoques realmente funcionan para las necesidades únicas de la inteligencia artificial aplicada al desarrollo de software, y cuáles presentan limitaciones que dificultan su adopción generalizada.

Uno de los aspectos más importantes descubiertos es que, al igual que los desarrolladores humanos, los AI SWEs requieren la capacidad de interpretar el contexto de cada archivo y función dentro de un gran repositorio, para poder realizar operaciones como encontrar todas las referencias de una función o navegar a su definición con facilidad. La capacidad de explorar un código base no debe ser algo estático ni fragmentado; debe permitir interacciones dinámicas con múltiples herramientas integradas que funcionen de manera armónica y eficiente. Diversas soluciones han abordado este problema desde diferentes perspectivas. Un ejemplo es SWE-Agent, que utiliza una búsqueda de cadenas de texto a lo largo de todo el repositorio y complementa esta búsqueda con una vista fragmentada que muestra bloques de cien líneas para facilitar la revisión. Por su parte, CodeMonkey opta por ingresar todos los archivos en un LLM pequeño que los clasifica según su relevancia para la consulta actual.

Otro enfoque destacable es el de Moatless, que realiza búsquedas semánticas para determinar qué archivos requieren modificaciones, aumentando así la eficiencia del proceso. Entre estas propuestas, Engines eligió seguir una línea similar a la solución OpenHands, que provee al agente herramientas concretas de navegación, como la función para encontrar todas las referencias de un símbolo o ir directamente a su definición. Esta interfaz recuerda a un servidor de lenguaje (LSP, por sus siglas en inglés), pero con mayores niveles de adaptación y flexibilidad, pensada específicamente para las necesidades de AI SWEs. Uno de los retos centrales en el diseño de esta infraestructura es garantizar que sea escalable y eficiente a lo largo del tiempo. La capacidad de indexar el código no debería duplicar esfuerzos con cada nuevo commit, sino que la indexación debe ser incremental, adaptándose únicamente a los cambios recientes sin necesidad de reindexar repositorios completos.

Además, debe existir la flexibilidad para navegar en cualquier commit arbitrario, sin importar su antigüedad, para facilitar análisis históricos o comparativos. Otro aspecto relevante es la licencia bajo la cual se distribuye la tecnología base. Dado que esta infraestructura será un componente crítico para futuros desarrollos, es vital que el sistema tenga una licencia permisiva que permita modificaciones y extensiones conforme evolucionen las necesidades. Esta condición descarta automáticamente varias opciones populares que emplean licencias restrictivas como AGPL, las cuales implican restricciones comerciales o limitaciones de distribución. Entre las tecnologías exploradas se encuentra lsproxy, una biblioteca creada especialmente para soportar servidores LSP orientados a AI SWEs.

Esta solución es capaz de detectar automáticamente el lenguaje de un proyecto y activar el servidor correspondiente, facilitando un inicio rápido y eficiente. Sin embargo, lsproxy utiliza una licencia AGPL, lo que supone un impedimento para su uso en productos comerciales sin la adquisición de una suscripción. Esto limita su adopción en plataformas que buscan mantener un enfoque abierto y flexible. Por otro lado, Stack Graphs representa una estructura de datos avanzada desarrollada inicialmente por GitHub para su plataforma de navegación de código web. Su diseño se basa en un análisis estático profundo que facilita una indexación incremental, lo que significa que al modificar un archivo solo se reindexa esa parte, no el repositorio completo.

Además, su arquitectura es teóricamente independiente del lenguaje, permitiendo consultas rápidas y efectivas. Sin embargo, su desventaja radica en la limitada compatibilidad con lenguajes y la complejidad para mantener las gramáticas personalizadas necesarias para la construcción de grafos, lo que dificulta su escalabilidad a proyectos multi-lenguaje. Otra herramienta interesante es Glean, un sistema de indexación desarrollado por Meta, diseñado para manejar proyectos extremadamente grandes y complejos, como los de su ecosistema de C++. Glean opera almacenando hechos sobre el código en base a esquemas definidos por el usuario, utilizando un lenguaje declarativo llamado Angle para consultarlos con precisión. Esta plataforma cumple con los requisitos de incrementalidad, escalabilidad y flexibilidad que se buscan.

Además, tiene la virtud de poder trabajar con esquemas generados por SCIP, lo que expande notablemente su soporte multiproceso. Sin embargo, el uso de Glean en entornos open source presenta obstáculos para su integración, principalmente porque su sistema RPC se basa en Thrift con dependencias internas específicas de Meta, complicando la generación de clientes para lenguajes distintos a Haskell. Además, para aprovechar plenamente el sistema se requiere un parser customizado para cada lenguaje, de los cuales solo hay soporte oficial para C++ en la versión pública. Estas dificultades limitan su adopción masiva pese al gran potencial que representa. Multilspy es una biblioteca en Python cuyo objetivo es simplificar la interacción con servidores LSP, ofreciendo facilidades para descargar automáticamente servidores para diferentes lenguajes y un entorno sencillo para operar.

Nació de un proyecto de investigación enfocado en la incorporación de análisis estático a los procesos generados por modelos de lenguaje. Aunque es una herramienta práctica y fácil de usar, existen inconvenientes como la dependencia de mantener un proceso de Python activo para sostener el servidor LSP y la posible falta de control sobre las descargas automáticas de binarios, que pueden no ser ideales en entornos controlados o empresariales. El gigante Sourcegraph también ofrece una API para navegación precisa de código compatible con numerosos lenguajes y repositorios de gran escala. Sin embargo, su modelo de negocio basado en clientes empresariales con suscripciones limita su uso para quienes buscan una infraestructura abierta y modular para AI SWEs, lo que reduce su atractivo para proyectos con una filosofía de libre colaboración y personalización. Tras evaluar todas estas opciones, la conclusión es clara: no existe aún una solución open source ideal que combine un enfoque independiente del lenguaje, incrementabilidad, escalabilidad y facilidad de uso que satisfaga plenamente las necesidades de los AI SWEs.

La combinación de estas características resulta fundamental para construir una plataforma confiable y eficiente que pueda crecer con el tiempo y el tamaño del código. Con este panorama, Engines optó por una solución pragmática y escalonada, basada en el proyecto multilspy, añadiendo un servidor con soporte para MCP (un protocolo para comunicación entre procesos) y un contenedor Docker para facilitar la ejecución en ambientes controlados y aislados. Esta estrategia permite ofrecer funcionalidad inmediata mientras se continúa explorando y desarrollando futuros avances que puedan integrar mejores sistemas de análisis y navegación. La navegación de código para AI SWEs sigue siendo un campo de investigación abierto y apasionante. Los retos técnicos, la necesidad de soporte multi lenguaje, la escalabilidad para repositorios inmensos y la ambición de generar un entorno sencillo pero poderoso son temas en constante evolución.

Trading automático en las bolsas de criptomonedas Compra y vende tu criptomoneda al mejor precio

Siguiente paso
Show HN: Offline AI Tutor – Built with Dagger to power self-directed learning
el viernes 13 de junio de 2025 Tutor de IA Offline: Revolucionando el Aprendizaje Autónomo con Tecnología de Punta

Explora cómo un tutor de inteligencia artificial offline, desarrollado con Dagger, está transformando el aprendizaje autodirigido, brindando acceso educativo sin depender de internet y potenciando la autonomía del estudiante a través de innovadoras herramientas tecnológicas.

The Internet, Remote Work, AI Ethics, and an American Pope
el viernes 13 de junio de 2025 El Papa Americano, el Trabajo Remoto, la Ética de la IA y el Impacto de Internet en el Mundo Moderno

Exploración profunda sobre la elección histórica del primer Papa norteamericano, el auge del trabajo remoto, los desafíos éticos de la inteligencia artificial y cómo la era digital transforma la sociedad contemporánea.

An Overview of Query Optimization in Relational Systems [pdf]
el viernes 13 de junio de 2025 Optimización de Consultas en Sistemas Relacionales: Clave para el Rendimiento Eficiente de Bases de Datos

Exploración profunda de la optimización de consultas en sistemas relacionales y su importancia para mejorar el rendimiento y eficiencia en la gestión de bases de datos. Análisis de técnicas, estrategias y beneficios en ambientes modernos de bases de datos relacionales.

From FOSS to Flop, and How to Go Commercial Without Alienating Your Users
el viernes 13 de junio de 2025 De FOSS a fracaso: Cómo comercializar tu software sin perder a tus usuarios

Explora las razones detrás del rechazo a la comercialización repentina de software open source y descubre estrategias efectivas para transformar proyectos FOSS en negocios exitosos y sostenibles, manteniendo una comunidad leal y satisfecha.

Why do websites prevent pasting via onpaste="return false;
el viernes 13 de junio de 2025 ¿Por qué algunas páginas web bloquean la función de pegar con onpaste="return false;"?

Explora las razones detrás de la práctica que muchas páginas web utilizan para evitar que los usuarios peguen información en ciertos campos, sus efectos en la experiencia del usuario y las alternativas más adecuadas para mejorar la entrada de datos.

5 years later, Discord still won't allow exact string searches
el viernes 13 de junio de 2025 Cinco Años Después: Discord Sigue Sin Permitir Búsquedas Exactas de Cadenas de Texto

Exploramos las dificultades y frustraciones que enfrentan los usuarios de Discord debido a la falta de una función de búsqueda exacta, analizando los casos de uso, las consecuencias y por qué esta mejora sigue siendo una demanda pendiente.

Unity Earnings: Vector Launches Early
el viernes 13 de junio de 2025 Resultados de Unity: Lanzamiento Anticipado de Vector Impulsa el Crecimiento en un Mercado Retador

Unity reporta resultados trimestrales sólidos pese a desafíos económicos, destacando el impacto positivo del lanzamiento adelantado de su plataforma publicitaria Vector, que ofrece nuevas oportunidades en la industria del desarrollo de videojuegos y la publicidad digital basada en inteligencia artificial.