Представлены правила для AI-ассистентов, применяемых при разработке ядра Linux

Саша Левин (Sasha Levin) из компании NVIDIA, занимающийся сопровождением LTS-веток ядра Linux и входящий в консультативный совет организации Linux Foundation, выставил на обсуждение разработчиков набор правил и документацию, которые должны учитываться AI-ассистентами при генерации изменений для ядра Linux. Ссылки на инструкции отмечены в файлах конфигурации, подготовленных для AI-платформ Claude, GitHub Copilot, Cursor, Codeium, Continue, Windsurf и Aider.

Определены следующие ключевые принципы для AI:

  • Перед созданием изменений необходимо прочитать документацию и следовать изложенным в ней требованиям.
  • Следует выполнять требования по стилю и оформлению кода для ядра.
  • Перед отправкой изменения его нужно тщательно протестировать.
  • К коду нужно приложить понятное и исчерпывающее сообщение с описанием изменения.
  • Изменения не должны нарушать работу компонентов в пространстве пользователя.
  • В качестве соавтора изменения должен быть отмечен AI, не ограничиваясь только упоминанием разработчика, использовавшего AI-ассистент.

Для выделения изменений, подготовленных с использованием AI, к коммиту предписывается прикреплять тег «Co-developed-by: $AI_NAME $AI_MODEL $AI_VERSION». Например: «Co-developed-by: Claude claude-3-opus-20240229», «Co-developed-by: GitHub-Copilot GPT-4 v1.0.0» и «Co-developed-by: Cursor gpt-4-turbo-2024–04–09». При этом AI-ассистент не должен добавлять себя в тег «Signed-off-by». Данный тег должен добавляться только человеком для юридически значимого подтверждения права на передачу кода под открытой лицензией.

Документация, которую должен учитывать AI-ассистент:

  • Руководство, как стать разработчиком ядра.
  • Информация о процессе разработки ядра.
  • Руководство по передаче своего кода в ядро.
  • Чек-лист проверок перед отправкой кода в ядро.
  • Требования к стилю и оформлению кода (использование табуляции для выравнивания, не больше 80 символов в строке, отдельные правила форматирования функций и условных выражений).
  • Требования к языкам программирования и стандартам.
  • Запрет использования устаревших программных интерфейсов и возможностей.

  • Правила отправки патчей для включения в ядро.
  • Настройки почтового клиента для отправки патчей.
  • Правила приёма патчей.

  • Правила лицензирования кода для ядра (лицензия GPL-2.0 c исключениями для системных вызовов, наличие SPDX-идентификаторов лицензии в каждом файле).
  • Инструкция по добавлению нового системного вызова.
  • Правила для отправки патчей к стабильным веткам ядра.
  • Обработка проблем с безопасностью.
  • Действия при выявлении регрессий.
  • Руководство по взаимодействию с сопровождающими.
  • Руководства, специфичные для подсистем.



Источник: http://www.opennet.ru/opennews/art.shtml? num=63631

©  OpenNet