Programación y desarrollo de software

Cómo ayuda Modern Go Guidelines a los agentes de programación con inteligencia artificial a escribir código Go actualizado

GoLand, de JetBrains, lanzó un proyecto de código abierto que proporciona a los agentes de programación directrices vinculadas a la versión de Go utilizada en el proyecto, con el fin de reducir su dependencia de patrones antiguos o funciones incompatibles. El proyecto se basa en las herramientas list y explain para proporcionar gradualmente el contexto adecuado sin modificar los archivos del proyecto.

2026-08-24
6 min de lectura
14 visitas
فريق تحرير certi.news
Cómo ayuda Modern Go Guidelines a los agentes de programación con inteligencia artificial a escribir código Go actualizado

Los agentes de programación con inteligencia artificial pueden producir código Go que se ejecuta correctamente, pero eso no significa que utilicen las sintaxis más recientes del lenguaje o las incorporaciones más nuevas de su biblioteca estándar. Los patrones antiguos de Go están mucho más presentes en los datos de entrenamiento, mientras que las funciones más recientes pueden no aparecer en los datos en los que se basó el modelo. Para abordar esta brecha, el equipo de GoLand de JetBrains creó un proyecto de código abierto llamado Modern Go Guidelines, que proporciona a los agentes directrices prácticas vinculadas a la versión de Go declarada en el proyecto.

¿Qué ofrece el proyecto?

Las directrices abarcan funciones del lenguaje e incorporaciones útiles de la biblioteca estándar en las versiones de Go de la 1.0 a la 1.27, además de los patrones que reconoce el analizador go modernize. El agente no recibe directrices para versiones más recientes que la versión utilizada en el proyecto. Si el archivo go.mod contiene la directiva go 1.25, el agente puede utilizar las directrices de Go 1.25 y de versiones anteriores, pero no recibirá sugerencias que dependan de Go 1.26 o Go 1.27.

Esto significa, según el ejemplo incluido en el artículo, que el agente puede sugerir sync.WaitGroup.Go, introducido en Go 1.25, pero no sugerirá errors.AsType, que requiere Go 1.26. Esta vinculación entre las directrices y la versión del proyecto busca reducir la probabilidad de generar código que necesite una versión más reciente del entorno disponible, y también reduce la cantidad de contexto innecesario que debe leer el agente.

Divulgación progresiva en lugar de cargar todo el contexto

El complemento incluye una herramienta de línea de comandos llamada go-modern-guidelines y una habilidad de instrucciones llamada use-modern-go. La herramienta admite dos comandos principales:

  • list: muestra directrices breves y relevantes para un archivo Go o para una versión específica.
  • explain: ofrece una explicación más detallada y un ejemplo que compara el patrón antiguo con la alternativa moderna.

Las instrucciones sugieren que el agente ejecute el comando list para el archivo correspondiente antes de modificarlo y que utilice explain cuando necesite comprender una regla concreta. Se pueden solicitar directrices para un archivo como ./internal/worker/worker.go o especificar directamente la versión mediante --go-version 1.27. La salida de list comienza con las directrices aplicables más recientes e incluye un identificador estable para cada regla, como sync_waitgroup_go, testing_t_context y json_omitzero.

Ejemplos de patrones modernos

Las directrices incluyen ejemplos prácticos para sustituir patrones comunes por otros más recientes, como utilizar slices.Contains en lugar de un bucle de búsqueda escrito manualmente, y min y max en lugar de comparaciones manuales, así como cmp.Or en lugar de una cadena que selecciona el primer valor no nulo.

También explican el uso de sync.WaitGroup.Go en lugar de distribuir por separado las operaciones Add, go y Done; el uso de errors.AsType para realizar coincidencias de errores con seguridad de tipos en Go 1.26 y posteriores; y el uso de new(value) cuando se necesita un puntero a un valor en Go 1.26 y posteriores. En Go 1.27, las directrices presentan strings.CutLast y bytes.CutLast como alternativas a LastIndex y al corte manual.

El ejemplo de generic_methods, disponible desde Go 1.27, muestra cómo trasladar una operación genérica desde una función auxiliar a nivel de paquete a un método del tipo cuando la operación está relacionada naturalmente con ese tipo. El comando explain devuelve una explicación de la regla con un ejemplo del antes y el después, y también puede explicar varias reglas en una sola invocación.

¿Qué cambia en la práctica para los desarrolladores?

El valor principal no reside en actualizar automáticamente el código antiguo, sino en proporcionar al agente una referencia pequeña y específica mientras genera o modifica código. El proyecto se integra con herramientas como go fix en lugar de sustituirlas: las directrices de Modern Go Guidelines ayudan al agente a comenzar con un patrón moderno, mientras que go fix ayuda a actualizar los patrones que ya existen en la base de código.

El complemento se puede instalar desde el mercado de complementos o desde un repositorio local. La integración requiere que la cadena de herramientas de Go esté incluida en PATH. Durante el primer uso, la integración instala la herramienta de línea de comandos mediante go install y la almacena en una caché local, sin modificar el proyecto. El artículo muestra comandos para añadir el repositorio como mercado de Claude, instalar modern-go-guidelines y activar /use-modern-go. También menciona un procedimiento para probar un repositorio local antes de publicarlo o actualizarlo, con ejemplos que incluyen Claude y Codex.

Lectura de certi.news

El proyecto aborda un problema práctico del uso de agentes de inteligencia artificial: que el código compile correctamente no garantiza que sea adecuado para la versión del lenguaje ni que adopte los mejores patrones disponibles. Vincular las directrices al archivo go.mod establece un límite técnico claro sobre lo que el agente puede sugerir, mientras que la divulgación progresiva evita saturarlo con contexto innecesario. Sin embargo, la herramienta no elimina la necesidad de revisión por parte del desarrollador ni de pruebas; proporciona reglas y ejemplos al agente, y la fuente no demuestra que verifique de forma independiente cada cambio que este produce. Además, la cobertura anunciada llega hasta Go 1.27, por lo que las directrices para versiones posteriores seguirán necesitando incorporaciones y actualizaciones.

Fuente de la noticia
JetBrains Blog
Abrir fuente original ↗
ف
Autor

فريق تحرير certi.news

De la misma categoría

También te puede interesar

Ver todas las noticias