Найти в Дзене
In Data We Trust

GEMINI.MD для Gemini CLI

Оглавление

Как я писал в обзорной статье Gemini CLI:

GEMINI.MD — это не обязательный файл с инструкциями, о которых Gemini должен знать во время взаимодействия.

Файл хоть и не обязательный, но очень важный. Так как через него можно "познакомиться" и описать правила "игры" для Gemini.

Типы файлов GEMINI.MD

Если отправить промпт к gemini cli в режиме дебага, видно, что GEMINI попытается найти файл GEMINI.MD в нескольких местах:

1. В папке проекта из которой запущен gemini.

2. Поднимается вверх по дереву каталогов от папки проекта до корня диска.

3. Глобальный файл в рабочей папке .gemini.

-2

Я создал файл GEMINI.MD в каждом из этих мест. Теперь запускаем gemini и отправляем команду /memory show (показ контекста).

-3

Информация из каждого найденного файла объединяется в единый контекст.

Сам Gemini так отвечает на вопрос "Где он ищет файлы gemini.md"

Я ищу файлы gemini.md в определённом порядке, чтобы собрать наиболее полный контекст для нашей работы. Вот где я их ищу, в порядке приоритета:
1. В текущей директории проекта: Это наиболее важный файл, так как он содержит контекст, специфичный для проекта, над которым вы сейчас работаете. (В вашем случае, это D:\Dev\gemini_projects\gemini.md).
2. В родительской директории: Я проверяю на один уровень выше текущей директории. (Например, D:\Dev\gemini.md).
3. В специальной папке `.gemini` в вашей домашней директории: Это место для глобальных настроек и контекста, которые должны применяться ко всем вашим проектам. (Обычно это C:\Users\ <ваше_имя_пользователя>\.gemini\gemini.md).

Самый важный файл GEMINI.MD - тот, который хранится в папке проекта. Каждый последующий файл по уровням каталогов имеет приоритет все ниже. И самый низкий приоритет у файла из папки .gemini. То есть, если инструкции в файле в папе проекта и в файле .gemini будут противоречить друг другу, Gemini будет использовать инструкции из папки проекта.

Что писать в файле GEMINI.MD

Рекомендации по содержанию файла GEMINI.MD в папке проекта:

  • Команды для сборки, запуска и тестирования (`npm test`, `go build`, `pytest`). Это позволит Gemini проверять его работу и гарантировать, что ничего не сломалось.
  • Ключевые технологии, фреймворки и библиотеки (например, "Проект на React 18, TypeScript, Zustand"). Чтобы Gemini знал, с каким стеком технологий работать, и чтобы его изменения были корректными.
  • Правила стиля кода и линтеры (например, "Стиль кода по гайдам Google, линтер ESLint"). Чтобы поддерживать единообразие кода. Можно также включать небольшие примеры кода.
  • Структура проекта (например, "Вся бизнес-логика в `/src/domain`, компоненты UI в `/src/components`"). Помогает Gemini быстрее ориентироваться в проекте и размещать новый код в правильных местах.
  • Запреты (например, "Никогда не изменять файлы в папке `/legacy`"). Чтобы Gemini не менял чувствительные или устаревшие части системы.
  • Информация о базе данных или API (например, "Схема БД описана в `schema.sql`"). Полезно для понимания того, как проект взаимодействует с данными.

Рекомендации по содержанию файла GEMINI.MD в родительских папках:

  • Общие стандарты кодирования для проектов. Если есть единый стандарт для всех репозиториев.
  • Общие используемые библиотеки (например, "Всегда используем `axios` для HTTP-запросов"). Помогает поддерживать технологическую унификацию между несколькими проектами.
  • Общие архитектурные паттерны (например, "Предпочитаем DDD-подход"). Задает общее направление для разработки в рамках одной экосистемы проектов.

Рекомендации по содержанию глобального файла GEMINI.MD в папке .gemini:

  • Предпочтительный язык программирования. Чтобы Gemini учитывал это.
  • Общие предпочтения по стилю (например, "Предпочитаю функциональный стиль программирования"). Gemini будет генерировать более привычный и понятный код.
  • Настройка личности Gemini (например, "Отвечай кратко и по делу", "Объясняй сложные вещи простыми словами"). Позволяет получать ответы в том стиле, который привычен и убирать лишнее.
  • Опыт пользователя (например, "Я начинающий разработчик", "Я опытный архитектор"). Помогает Gemini адаптировать сложность и детализацию объяснений под пользователя.

Общие рекомендации по составлению файла GEMINI.MD

  1. Инструкции должны быть четкими и понятными, но на "естественном языке". Например, вместо сухого test_command=pytest, лучше написать: "Для запуска тестов в этом проекте используется pytest. Запускай его без аргументов."
  2. Использовать форматирование Markdown для структурирования информации. Чтобы конечный результат был понятен как пользователю, так и Gemini.
  3. Не хранить в GEMINI.MD чувствительной информации (секреты и ключи, пароли, токены или другие личные данные)
  4. Файлы всегда должны быть актуальными.