Aumento de agentes de codificación autónomos en la depuración del software del sistema
El uso de IA en el desarrollo de software ha ganado tracción con la aparición de modelos de idiomas grandes (LLM). Estos modelos son capaces de realizar tareas relacionadas con la codificación. Este cambio ha llevado al diseño de agentes de codificación autónomos que ayudan o incluso automatizan tareas tradicionalmente llevadas a cabo por desarrolladores humanos. Estos agentes van desde escritores de script simples hasta sistemas complejos capaces de navegar en base de código y diagnosticar errores. Recientemente, el enfoque ha cambiado hacia permitir que estos agentes manejaran desafíos más sofisticados. Especialmente aquellos asociados con entornos de software extensos e intrincados. Esto incluye el software de sistemas fundamentales, donde los cambios precisos requieren comprensión no solo del código inmediato sino también de su contexto arquitectónico, interdependencias y evolución histórica. Por lo tanto, existe un creciente interés en la construcción de agentes que pueden realizar un razonamiento en profundidad y sintetizar correcciones o cambios con una intervención humana mínima.
Desafíos en la depuración del código de sistemas a gran escala
La actualización del código de sistemas a gran escala presenta un desafío multifacético debido a su tamaño inherente, complejidad y profundidad histórica. Estos sistemas, como los sistemas operativos y las pilas de redes, consisten en miles de archivos interdependientes. Han sido refinados durante décadas por numerosos contribuyentes. Esto lleva a implementaciones altamente optimizadas y de bajo nivel donde incluso las alteraciones menores pueden desencadenar efectos en cascada. Además, las descripciones de errores tradicionales en estos entornos a menudo toman la forma de informes de choque en bruto y trazas de pila, que generalmente carecen de guías de lenguaje natural. Como resultado, el diagnóstico y la reparación de problemas en dicho código requieren una comprensión profunda y contextual. Esto exige no solo una comprensión de la lógica actual del código sino también una conciencia de sus modificaciones pasadas y limitaciones de diseño global. La automatización de dicho diagnóstico y reparación se ha mantenido difícil de alcanzar, ya que requiere un razonamiento extenso que la mayoría de los agentes de codificación no están equipados para realizar.
Limitaciones de los agentes de codificación existentes para bloqueos a nivel de sistema
Los agentes de codificación populares, como el agente SWE y OpenHands, aprovechan los modelos de idiomas grandes (LLM) para la corrección automatizada de errores. Sin embargo, se centran principalmente en bases de código más pequeñas a nivel de aplicación. Estos agentes generalmente confían en descripciones de problemas estructuradas proporcionadas por los humanos para reducir su búsqueda y proponer soluciones. Herramientas como AutoCoderover exploran la base de código utilizando técnicas basadas en sintaxis. A menudo se limitan a idiomas específicos como la pitón y evitan las complejidades a nivel de sistema. Además, ninguno de estos métodos incorpora información de evolución de código de historias de confirmación, un componente vital al manejar errores heredados en bases de código a gran escala. Mientras que algunos usan heurísticas para la navegación de código o la generación de edición, su incapacidad para razonar profundamente en la base de código y considerar el contexto histórico limita su efectividad en la resolución de bloqueos complejos a nivel de sistema.
Investigador del código: un agente de investigación profunda de Microsoft
Investigadores de Microsoft Research introdujeron Investigador de códigoun agente de investigación profundo diseñado específicamente para la depuración de códigos a nivel de sistema. A diferencia de las herramientas anteriores, este agente no confía en el conocimiento predefinido de los archivos de errores y opera en un modo totalmente sin asistencia. Fue probado en un punto de referencia de Crash Linux Kernel y un proyecto de software multimedia para evaluar su generalización. El investigador de código fue diseñado para ejecutar una estrategia múltiple. Primero, analiza el contexto de bloqueo utilizando varias acciones exploratorias, como las búsquedas de definición de símbolos y las búsquedas de patrones. En segundo lugar, sintetiza soluciones de parche basadas en evidencia acumulada. Finalmente, valida estos parches utilizando mecanismos de prueba automatizados. El agente utiliza herramientas para explorar la semántica de código, identificar los flujos de funciones y analizar los historiales de confirmación. Esta es una innovación crítica previamente ausente en otros sistemas. A través de este proceso estructurado, el agente opera no solo como un corrigedor de errores sino también como un investigador autónomo. Recopila datos y forma hipótesis antes de intervenir en la base de código.
Arquitectura trifásica: análisis, síntesis y validación
El funcionamiento del investigador de código se divide en tres fases definidas: análisis, síntesis y validación. En la fase de análisis, el agente comienza procesando el informe de choque e inicia los pasos de razonamiento iterativo. Cada paso incluye invocaciones de herramientas para buscar símbolos, escanear los patrones de código utilizando expresiones regulares y explorar mensajes y diferencias de confirmación histórica. Por ejemplo, el agente podría buscar un término como ‘fuga de memoria’ en compromisos pasados para comprender los cambios en el código que podrían haber introducido la inestabilidad. La memoria que construye está estructurada, registrando todas las consultas y sus resultados. Cuando determina que se ha recopilado suficiente contexto relevante, se hace pasar a la fase de síntesis. Aquí, filtra datos no relacionados y genera parches identificando uno o más fragmentos potencialmente defectuosos, incluso si se extienden a través de múltiples archivos. En la fase de validación final, estos parches se prueban con los escenarios de choque originales para verificar su efectividad. Solo se presentan soluciones validadas para su uso.
Rendimiento de referencia en Linux Kernel y FFMPEG
En cuanto al rendimiento, el investigador de código logró mejoras sustanciales sobre sus predecesores. Cuando se comparó con Kbenchsyz, un conjunto de 279 bloqueos de núcleo de Linux generados por el fuzzer de Syzkaller, resolvió el 58% de los bloqueos usando GPT-4O con un presupuesto de ejecución de 5 trayectoria. En contraste, Swe-Agent logró solo una tasa de resolución del 37.5%. En promedio, el investigador del código exploró 10 archivos por trayectoria, significativamente más que los 1.33 archivos navegados por el agente SWE. En un subconjunto de 90 casos en los que ambos agentes modificaron todos los archivos de errores conocidos, el investigador de código resolvió el 61.1% de los bloqueos versus 37.8% por el agente SWE. Además, cuando O1, un modelo centrado en el razonamiento, se usó solo en el paso de generación de parches, la tasa de resolución se mantuvo en 58%. Esto refuerza la conclusión de que el fuerte razonamiento contextual aumenta en gran medida los resultados de depuración. El enfoque también se probó en FFMPEG, un proyecto multimedia de código abierto. Generó con éxito parches preventivos de accidentes en 7 de cada 10 bloqueos reportados, ilustrando su aplicabilidad más allá del código del núcleo.
Contradas técnicas clave del estudio del investigador del código
- Alcanzó el 58% de resolución de choque en el punto de referencia del núcleo de Linux versus 37.5% por SWE-agente.
- Exploró un promedio de 10 archivos por error, en comparación con 1.33 archivos por métodos de referencia.
- Efectividad demostrada incluso cuando el agente tuvo que descubrir archivos erróneos sin orientación previa.
- Uso novedoso incorporado del análisis de la historia del comet, impulso del razonamiento contextual.
- Generalizado a nuevos dominios como FFMPEG, resolviendo 7 de cada 10 accidentes reportados.
- Se usó memoria estructurada para retener y filtrar el contexto para la generación de parches.
- Demostró que los agentes de razonamiento profundo superan a los tradicionales incluso cuando se les dan más calculador.
- Parches validados con scripts de reproducción de choques reales, asegurando una efectividad práctica.
Conclusión: un paso hacia la depuración del sistema autónomo
En conclusión, esta investigación presenta un avance convincente en la depuración automatizada para el software del sistema a gran escala. Al tratar la resolución de errores como un problema de investigación, que requiere exploración, análisis y pruebas de hipótesis, el investigador de código ejemplifica el futuro de los agentes autónomos en el mantenimiento complejo de software. Evita las dificultades de las herramientas anteriores al operar de forma autónoma, examinando a fondo tanto el código actual como su evolución histórica, y sintetizar soluciones validadas. Las mejoras significativas en las tasas de resolución, particularmente en proyectos desconocidos como FFMPEG, demuestran la robustez y escalabilidad del método propuesto. Indica que los agentes de software pueden ser más que respondedores reactivos; Pueden funcionar como asistentes de investigación capaces de tomar decisiones inteligentes en entornos que anteriormente se consideraban demasiado complejos para la automatización.
Mira el Papel. Todo el crédito por esta investigación va a los investigadores de este proyecto. Además, siéntete libre de seguirnos Gorjeo Y no olvides unirte a nuestro Subreddit de 100k+ ml y suscribirse a Nuestro boletín.
Asif Razzaq es el CEO de MarktechPost Media Inc .. Como empresario e ingeniero visionario, ASIF se compromete a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, MarktechPost, que se destaca por su cobertura profunda de noticias de aprendizaje automático y de aprendizaje profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el público.