Программирование и разработка программного обеспечения

Как Modern Go Guidelines помогает ИИ-агентам программирования писать современный код на Go

GoLand от JetBrains запустил проект с открытым исходным кодом, который предоставляет агентам программирования рекомендации, связанные с используемой в проекте версией Go, чтобы снизить их зависимость от устаревших шаблонов или несовместимых функций. Проект использует инструменты list и explain для постепенного предоставления подходящего контекста без изменения файлов проекта.

2026-08-24
5 мин. чтения
14 просмотров
فريق تحرير certi.news
Как Modern Go Guidelines помогает ИИ-агентам программирования писать современный код на Go

ИИ-агенты программирования могут создавать работоспособный код на Go, но это не означает, что они используют новейший синтаксис языка или дополнения его стандартной библиотеки. Более старые шаблоны Go гораздо шире представлены в обучающих данных, тогда как новейшие функции могут отсутствовать в данных, на которых основывалась модель. Чтобы устранить этот пробел, команда GoLand в JetBrains создала проект с открытым исходным кодом под названием Modern Go Guidelines, который предоставляет агентам практические рекомендации, связанные с версией Go, объявленной в проекте.

Что предлагает проект?

Рекомендации охватывают функции языка и полезные дополнения стандартной библиотеки в версиях Go от 1.0 до 1.27, а также шаблоны, с которыми работает анализатор go modernize. Агент не получает рекомендации для версий новее той, которая используется в проекте. Если файл go.mod содержит директиву go 1.25, агент может использовать рекомендации для Go 1.25 и более ранних версий, но не получит предложений, основанных на Go 1.26 или Go 1.27.

Это означает, согласно приведённому в материале примеру, что агент может предложить sync.WaitGroup.Go, представленную в Go 1.25, но не предложит errors.AsType, для которой требуется Go 1.26. Такая связь рекомендаций с версией проекта призвана снизить вероятность генерации кода, требующего более новой версии доступной среды, а также уменьшить объём ненужного контекста, который читает агент.

Постепенное раскрытие вместо загрузки всего контекста

Компонент включает инструмент командной строки под названием go-modern-guidelines и инструктивный навык под названием use-modern-go. Инструмент поддерживает две основные команды:

  • list: выводит краткие и релевантные рекомендации для файла Go или конкретной версии.
  • explain: предоставляет более подробное объяснение и пример, сравнивающий старый шаблон с современным вариантом.

Инструкции предлагают агенту запускать команду list для соответствующего файла перед его изменением, а затем использовать explain, когда требуется понять конкретное правило. Рекомендации можно запросить для такого файла, как ./internal/worker/worker.go, или напрямую указать версию с помощью --go-version 1.27. Вывод list начинается с наиболее новых применимых рекомендаций и содержит постоянный идентификатор для каждого правила, например sync_waitgroup_go, testing_t_context и json_omitzero.

Примеры современных шаблонов

Рекомендации содержат практические примеры замены распространённых шаблонов более современными вариантами, например использования slices.Contains вместо написанного вручную цикла поиска, min и max вместо ручных сравнений, а также cmp.Or вместо цепочки, выбирающей первое ненулевое значение.

Также объясняется использование sync.WaitGroup.Go вместо раздельного распределения операций Add, go и Done, применение errors.AsType для типобезопасного сопоставления ошибок в Go 1.26 и более новых версиях, а также new(value), когда требуется указатель на значение в Go 1.26 и более новых версиях. В Go 1.27 рекомендации предлагают strings.CutLast и bytes.CutLast как альтернативу LastIndex и ручному срезу.

Пример с generic_methods, доступный начиная с Go 1.27, показывает, как перенести обобщённую операцию из вспомогательной функции уровня пакета в метод типа, когда операция естественным образом связана с этим типом. Команда explain возвращает объяснение правила с примером до и после; она также может объяснить несколько правил за один вызов.

Что практически меняется для разработчиков?

Основная ценность здесь заключается не в автоматическом обновлении старого кода, а в предоставлении агенту небольшого и конкретного справочного материала во время генерации или изменения кода. Проект дополняет такие инструменты, как go fix, а не заменяет их: рекомендации Modern Go Guidelines помогают агенту начать с современного шаблона, тогда как go fix помогает обновлять шаблоны, уже существующие в кодовой базе.

Компонент можно установить из магазина расширений или локального репозитория. Для интеграции требуется, чтобы набор инструментов Go находился в PATH. При первом использовании интеграция устанавливает инструмент командной строки через go install и сохраняет его в локальном кэше, не изменяя сам проект. В материале приведены команды для добавления репозитория в качестве магазина Claude, установки modern-go-guidelines и активации /use-modern-go; также упоминается способ протестировать локальный репозиторий перед его публикацией или обновлением, с примерами, включающими Claude и Codex.

Чтение certi.news

Проект решает практическую проблему использования ИИ-агентов: корректность кода с точки зрения сборки не гарантирует его соответствия версии языка или применения лучших доступных шаблонов. Привязка рекомендаций к файлу go.mod устанавливает чёткое техническое ограничение на то, что агент может предложить, тогда как постепенное раскрытие снижает риск перегрузить его ненужным контекстом. Однако инструмент не отменяет необходимости проверки разработчиком или тестирования: он предоставляет агенту правила и примеры, и источник не утверждает, что инструмент независимо проверяет каждое создаваемое им изменение. Кроме того, заявленное покрытие достигает Go 1.27, поэтому рекомендации для более новых версий по-прежнему потребуют добавления и обновления.

Источник новости
ف
Автор

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

В той же категории

Вам также может понравиться

Все новости