Перейти к основному содержимому

Контекст и соглашения для AI

Как устроить проект, чтобы ассистент писал код, который в него вписывается: записанные соглашения, единообразные паттерны и машиночитаемые инструкции, которые живут вместе с репозиторием.

Почему это важно. Агент выводит ваши соглашения из того, что видит. Кодовая база, где одна и та же задача решена тремя способами, учит его, что допустимы все три, — и он придумает четвёртый. Единообразие ценилось всегда; теперь оно работает как сложный процент.

Что понимать

  • Что агент на самом деле видит — а это меньше, чем весь репозиторий
  • Что он выведет из кода — верно или нет
  • Какие правила существуют только в головах у людей
  • Где лежат инструкции, чтобы их находили, а не вставляли в каждый запрос
  • Соответствуют ли инструкции коду до сих пор

Основные темы

Инструкции в репозитории

  • Файл инструкций проекта и что в него входит
  • Инструкции на уровне каталога — для областей со своими правилами
  • Краткость: инструкции, которым никто не следует, — это слишком длинные инструкции
  • Коммит в репозиторий, чтобы у всех людей и всех агентов были одни и те же правила

Что записывать

  • Структура: что где лежит и кому что разрешено импортировать
  • Именование и раскладка файлов
  • Команды сборки, тестирования и проверок
  • Паттерны, которым стоит следовать, и антипаттерны, которых стоит избегать, — с обоснованием
  • Чего нельзя делать никогда — правила с реальными последствиями

Единообразие как контекст

  • Один способ для каждой задачи, чтобы паттерн читался однозначно
  • Правильные примеры — потому что их будут копировать
  • Удаление мёртвого кода: это контекст, вводящий в заблуждение
  • Типы и понятные сигнатуры как машиночитаемое выражение замысла

Проверки как контекст

  • Тесты, линтеры и проверка типов как источник истины, по которому агент может себя сверить
  • Быстрая обратная связь, чтобы агент мог исправиться сам
  • Пусть сборка громко падает, а не тихо предупреждает

Как поддерживать это в актуальном состоянии

  • Инструкции протухают ровно так же, как документация
  • Обновлять их в том же изменении, что и код
  • Замечать, когда агент раз за разом делает одну и ту же ошибку: это недостающее правило

Уровни

УровеньКак это выглядит
JuniorСледует соглашениям проекта и пользуется его файлами инструкций.
MiddleПишет и поддерживает инструкции, удерживает единообразие паттернов, замечает, где ошибки агента вскрывают пробел.
SeniorУстраивает проект так, чтобы корректность проверялась машиной, следит, чтобы соглашения обеспечивались инструментами, и относится к инструкциям как к части кодовой базы.

Практика

Для начала

  • Запишите правила Заведите файл инструкций проекта: структура, команды и три самых важных правила.

  • Найдите разнобой Найдите в своей кодовой базе задачу, решённую тремя разными способами, и приведите её к одному решению.

  • Проверьте инструкции Дайте агенту задачу и посмотрите, следует ли он им. Исправьте то, что он упустил.

Глубже

  • Ограничьте область инструкций Добавьте инструкции на уровне каталога для области со своими правилами.

  • Сделайте правило проверяемым Превратите записанное соглашение в правило линтера, которое роняет сборку.

  • Замкните цикл Заметьте ошибку, которую агент повторяет, добавьте недостающее правило и убедитесь, что она исчезла.

Проверьте себя

  • Что агент поймёт о ваших соглашениях по одному только коду?
  • Какие из ваших правил живут только в комментариях к code review?
  • Соответствуют ли ваши файлы инструкций текущей кодовой базе?
  • Какую ошибку ассистент раз за разом повторяет в вашем проекте?
  • Как агент проверит собственную работу в вашем репозитории?
  • Какой мёртвый код лежит и учит неправильному паттерну?

Ресурсы

  • Claude Code memory and CLAUDE.md — как загружаются инструкции проекта и на какие области они распространяются. Самая внятная модель инструкций, которые живут вместе с репозиторием.
  • GitHub Copilot custom instructions — та же идея в другом инструменте: полезно, чтобы увидеть, что здесь общего.
  • Effective Dart — образец того, как писать соглашения: каждое правило вместе с причиной — именно это и позволяет правилам выживать.
  • llms.txt — соглашение о том, как сделать сайт или проект читаемым для моделей. Актуально, если поверх вашего проекта что-то строят другие.
  • Customizing static analysis — потому что самая сильная инструкция — та, которую обеспечивает инструментарий, а не та, что написана прозой.