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
190 visitas
certi.news Editorial Team
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 ↗
c
Autor

certi.news Editorial Team

Lo que necesitas saber

El proyecto de código abierto Modern Go Guidelines de JetBrains proporciona a los agentes de programación directrices de Go vinculadas a la versión especificada en el archivo go.mod, lo que les ayuda a sugerir patrones modernos y compatibles. El proyecto utiliza las herramientas list y explain para proporcionar contexto gradualmente, pero no sustituye la revisión del desarrollador ni las pruebas.

  • El proyecto cubre directrices para características del lenguaje y de la biblioteca estándar en las versiones de Go de la 1.0 a la 1.27.
  • Si el proyecto utiliza Go 1.25, el agente no sugerirá características que requieran Go 1.26 o 1.27.
  • La herramienta list muestra las directrices breves pertinentes, mientras que explain ofrece explicaciones y ejemplos del antes y el después.
  • El proyecto incluye ejemplos como sync.WaitGroup.Go, errors.AsType, strings.CutLast y bytes.CutLast.
  • Modern Go Guidelines ayuda al agente durante la generación de código, mientras que go fix está destinado a actualizar patrones existentes.
  • La integración no modifica los archivos del proyecto al instalarse y no elimina la necesidad de la revisión del desarrollador ni de las pruebas.

Preguntas frecuentes

¿Qué es Modern Go Guidelines?

Es un proyecto de código abierto creado por el equipo de GoLand de JetBrains para proporcionar a los agentes de programación directrices modernas de Go vinculadas a la versión de Go utilizada en el proyecto.

¿Cómo determina el proyecto qué directrices puede utilizar el agente?

Lee la versión de Go declarada en el archivo go.mod y, a continuación, habilita las directrices específicas de esa versión y de las versiones anteriores, sin sugerir características que requieran una versión más reciente.

¿Cuál es la diferencia entre list y explain?

list muestra directrices breves y pertinentes para un archivo o una versión determinados, mientras que explain ofrece una explicación más detallada y un ejemplo que compara el patrón antiguo con la alternativa moderna.

¿Sustituye el proyecto a go fix?

No. Modern Go Guidelines ayuda al agente a comenzar con patrones modernos, mientras que go fix ayuda a actualizar los patrones existentes en la base de código.

De la misma categoría

También te puede interesar

Ver todas las noticias