Кейc продукта · 29 октября 2026 года

Gemini CLI .geminiignore: Проверьте, какие файлы достигают контекста

Тестируйте фильтрацию файлов Gemini CLI с синтетическими заметками, сравнивайте новые сессии и узнавайте, почему .geminiignore не является границей для хранения секретов.

Время чтения
7 мин
Проверено
29 октября 2026 года
Синяя карточка с доказательством лежит отдельно от охристых архивных карточек в угольно-сером лотке для сортировки бумаги с открытым проходом
Проверьте, что попадает в файловый запрос, и оставляйте контроль доступа как отдельное решение.
Итог

Используйте видимый контроль и исключённый тестовый элемент, чтобы проверить фильтрацию контекста перед применением шаблонов игнорирования к реальному проекту.

Проект может содержать полезные исходные файлы вместе со старыми экспортами и черновыми заметками, которые добавляют шум в контекст агента. Gemini CLI’s .geminiignore позволяет вспомогательным инструментам пропускать выбранные пути. В этой лабораторной работе проверяется один небольшой случай: два явных вложения файла до фильтрации, затем те же вложения после исключения одного файла.

Источники проверены 29 октября 2026 года. Это упражнение с документационной поддержкой. Мы проверили создание локальной фикстуры, создание файла игнорирования и побайтовое сравнение. Мы не запускали аутентифицированные сессии Gemini. Ожидаемые наблюдения ниже являются критериями принятия для вашего запуска, а не отчетными результатами модели.

Вам нужны Bash, Python 3 и установленный, аутентифицированный CLI Gemini. Используйте только указанные ниже выдуманные заметки. Нет никакой причины привлекать учетные данные, записи клиентов или фактический приватный документ для теста фильтрации.

Создайте пару заметок с отдельным ключом ответа

Выполните это в вашем терминале, вне существующего проекта:

lab_root=$(mktemp -d /tmp/gemini-ignore-lab.XXXXXX)
mkdir -p "$lab_root/проект/заметки "$lab_root/evidence
cd "$lab_root/project
кот > notes/current.txt <<'ТЕКУЩИЙ'
Проект: Lantern
День обзора: Пятница
ТЕКУЩИЙ
кот > notes/archive.txt <<'АРХИВ'
Проект: Pebble
День обзора: Вторник
АРХИВ
cp notes/current.txt "$lab_root/доказательства/текущий.before.txt
cp notes/archive.txt "$lab_root/доказательства/архив.before.txt
printf 'Корень лаборатории: %s\n' "$lab_root"

Держите эту оболочку открытой и записывайте выведенный путь. Папка с доказательствами находится вне проекта, чтобы последующие проверки вложений файлов случайно не захватили резервные копии.

Ваш ключ ответа прост: текущая запись говорит Lantern и Пятница; архив говорит Pebble и Вторник. Ни одна заметка не содержит инструкций. Избегайте добавления GEMINI.md которые повторяют эти факты: это дало бы модели другой способ получить ответ.

Установите, что оба вложения работают

Из нового каталога проекта зафиксируйте версию CLI и начните новую сессию:

gemini --version > "$lab_root/evidence/cli-version.txt
gemini

Сохраняйте обычные права доступа. Отправляйте только этот запрос, а не статью или ключ ответов:

@notes/current.txt @notes/archive.txt
Сообщите проект и день проверки из каждого прикрепленного файла, указав путь источника.
Если вложение недоступно, укажите это. Используйте только
приложенное содержимое; не выполняйте команды оболочки, не ищите альтернативные копии,
не используйте другие инструменты, не редактируйте файлы и не делайте выводы о недостающих фактах. Остановитесь после отчета.

Google справочник команд documents @ как способ вставки содержимого файла в подсказку. Также они различают явные файлы и ссылки на директории, что может позволить модели просматривать директорию, а не сразу прикреплять всё. В этом упражнении каждый файл получает имя, чтобы исследование директории не становилось другой переменной.

Проверьте, что обе заметки были прикреплены и что ответ соответствует обеим парам фактов. Сохраните ответ и любую диагностику вложений в вашей папке доказательств. Если любое из вложений здесь не проходит проверку, исправьте это, прежде чем добавлять правило игнорирования; в противном случае фильтрованный прогон не даст полезной базы для сравнения.

Полностью выйдите из Gemini. Не возобновляйте этот разговор для следующего шага. Предыдущий ответ с фактами из архива может поставить под угрозу проверку того, предоставит ли новое вложение эти факты.

Исключите архив и повторите точную подсказку

В исходной оболочке, все еще находясь внутри одноразового проекта, создайте:

кот > .geminiignore <<'IGNORE'
/notes/archive.txt
IGNORE

С официальное руководство по игнорированию размещает этот файл в корне проекта и документирует ведущий слэш как привязку относительно корня. В нем указано, что поддерживаются инструменты, включая @ совместное использование файлов, исключение совпадающих путей и инструкции для читателей перезапустить сеанс после изменений.

Запуск gemini снова из той же директории. Вставьте точно ту же подсказку с двумя файлами. Не сообщайте модели, что содержала исключенная запись, и не просите продемонстрировать, что правило сработало.

Рассмотрите эти наблюдения вместе:

ПроверитьОжидаемое наблюдение для этого упражнения
Видимый контрольnotes/current.txt поставляет Lantern и Friday.
Вложение исключеноДиагностика вложений показывает notes/archive.txt было пропущено или недоступно. Точная формулировка может различаться.
ОтветВ ответе не утверждается, что архив был прочитан или что предоставлены его два факта.
Альтернативный доступДля восстановления отсутствующего содержимого не используется ни команда shell, ни альтернативное чтение файла, ни поиск, ни внешний инструмент.

Недостаточно отсутствия факта только в ответе: модель может опустить материал, который получила. Предпочтительно использовать статус вложения CLI как доказательство фильтрации, затем проверять ответ на неподдерживаемые утверждения. Если UI не предоставляет достаточно деталей, чтобы определить, было ли вложение прикреплено, результат фиксируется как неопределенный.

Ответ, который предполагает факты архива, также не дает определенного заключения о механизме фильтрации. Запишите как доказательства вложений, так и сам ответ вместо того, чтобы превращать правдоподобное предложение в доказательство чтения файла.

Диагностируйте сравнение, не изменяя все настройки.

Сначала проверьте ваш рабочий каталог и точное написание .geminiignore. Архивный файл должен все еще существовать в notes/archive.txt; его удаление проверяло бы другое поведение.

С ссылка на конфигурацию documents context.fileFiltering.respectGeminiIgnore и context.fileFiltering.respectGitIgnore как включено по умолчанию, для изменений требуется перезапуск. Также он перечисляет дополнительные файлы для игнорирования в context.fileFiltering.customIgnoreFilePaths. Проверьте вашу действующую конфигурацию, если базовый или фильтрованный запуск ведет себя неожиданно. Не перезаписывайте существующий файл пользовательских настроек фрагментом из руководства.

Если оба файла исчезают, изучите другие правила игнорирования и конфигурацию, прежде чем прийти к выводу, что ваш однострочный шаблон слишком широк. Если архив всё ещё прикрепляется, убедитесь, что вы перезапустили, запустили в нужном проекте и не отключили обработку игнорирования Gemini. Сохраните запись версии с результатом, чтобы можно было повторить сравнение после обновления.

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

Подтвердите, что фильтрация не изменила исходные файлы

После выхода из Gemini проведите следующие проверки в оригинальной оболочке:

cmp "$lab_root/доказательства/текущий.before.txt "$lab_root/project/notes/current.txt"
cmp "$lab_root/доказательства/архив.before.txt "$lab_root/project/notes/archive.txt"
python3 - <<'PY'
from pathlib import Path
утверждать Path('.geminiignore').read_text() == '/notes/archive.txt\n'
for path in sorted(Path('.').rglob('*')):
    если path.is_file():
        print(path.as_posix())
PY

Каждая cmp должен возвращать ноль без вывода. Список должен включать две заметки и .geminiignore; исследовать дополнительные файлы, а не автоматически удалять их. Сравнение, не равное нулю, означает сбой или нечитаемый файл, а не успешное выполнение. Эти проверки охватывают данный фикс проекта, а не все возможные записи в других местах на компьютере.

Архив остается читаемым обычными локальными программами. Например, запустите это сами после выхода агента:

кот "$lab_root/project/notes/archive.txt"

Вы все еще должны видеть Pebble и Tuesday. Файл ни удалялся, ни изменялись его права операционной системы.

Используйте результат для уменьшения шума контекста

Google описывает командную утилиту как выполнение команд в оболочке системы. В сочетании с явным ограничением файла игнорирования на поддержку инструментов это является причиной рассматривать .geminiignore как фильтр контекста, а не как универсальное ограничение доступа. Оболочка или другая интеграция могут иметь отдельный путь к файлу. Наша локальная проверка cat иллюстрирует различие между файловыми системами; это не тест разрешений оболочки Gemini.

Для реального проекта начните с узкого исключения, например, устаревшей директории экспорта. Держите необходимые исходные файлы и тестовые данные видимыми, и повторите небольшую проверку вложений после изменения шаблона. Не используйте файл игнорирования как единственную защиту для секретов; контролируйте, к каким данным может получить доступ среда агента, отдельно.

Сохраните вашу версию, два ответа и наблюдения по вложениям в качестве результата. Если вы хотите протестировать изоляцию файловой системы, используйте отдельную лабораторию проверки песочницы Gemini. Для более широкой работы над проектом урок по конкретным проверкам приемки объясняет, как превратить вывод агента в нечто, что вы можете проверить самостоятельно.

Основные источники и область проверки

Все источники проверены 29 октября 2026 года:

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

Содержание заметки, процедура сравнения и таблица приемки являются авторской практикой. Проверки с использованием локальных приспособлений подтверждают только механику оболочки; они не устанавливают, что какой-либо конкретный выпуск Gemini прошел сравнение вложений.

Запустите это в работу

Различайте фильтрацию контекста и ограничения доступа к файловой системе.

Попробовать

Выполните сравнение до и после, используя две синтетические заметки проекта.

Докажите, что это сработало

Подтвердите, что видимая заметка остается читаемой, в то время как исключенная заметка пропускается при фильтрованном запуске.

Держите в поле зрения

  • Создайте две безвредные заметки и исключите из контекста на основе файлов только одну.
  • Сравните одни и те же явные ссылки на файлы в отдельных сессиях Gemini.
  • Проверьте диагностику вложений, а также окончательный ответ.
Изучите рабочий процесс: Определите проверки приемки перед тем, как доверять рабочему процессу ИИ