Перейти к содержанию

Файл .kodaignore

Файл .kodaignore — это механизм игнорирования файлов и папок в Koda, аналогичный .gitignore. Он указывает Koda, какие файлы и директории следует исключать из индексации, автодополнения, контекста и других функций.

Обзор

.kodaignore используется для:

  • Исключения файлов из индексации — ускорение работы и снижение размера индекса
  • Защиты конфиденциальных данных — предотвращение утечки .env, ключей, секретов
  • Оптимизации контекста — исключение шумных файлов из контекста LLM
  • Контроля автодополнения — отключение автодополнения в определённых файлах
  • Игнорирования временных файлов — артефакты сборки, кэши, логи

Расположение файлов

Koda поддерживает несколько уровней .kodaignore:

Уровень Путь Описание
Глобальный ~/.koda/.kodaignore Применяется ко всем проектам
Рабочий (workspace) .kodaignore в корне проекта Применяется только к текущему проекту
Вложенный .kodaignore в подпапках Применяется к подпапке и ниже

Глобальный .kodaignore

Глобальный файл находится в домашней директории Koda:

  • macOS/Linux: ~/.koda/.kodaignore
  • Windows: %USERPROFILE%\.koda\.kodaignore

Пример глобального .kodaignore:

# Глобальные игноры для всех проектов
*.log
*.tmp
.DS_Store

Локальный .kodaignore

Создайте файл .kodaignore в корне вашего проекта:

# В корне проекта
touch .kodaignore

Пример локального .kodaignore:

# Игнорировать папку сборки
dist/
build/

# Игнорировать файлы окружения
.env
*.env.local

# Игнорировать временные файлы
*.tmp
*.bak

Вложенный .kodaignore

Можно создать .kodaignore в любой подпапке для игнорирования файлов только в этой директории и её подпапках:

project/
├── .kodaignore          # Применяется ко всему проекту
├── src/
│   └── .kodaignore      # Применяется только к src/ и ниже
└── tests/
    └── .kodaignore      # Применяется только к tests/ и ниже

Синтаксис

.kodaignore использует тот же синтаксис, что и .gitignore:

Базовые правила

Паттерн Описание Пример
*.ext Игнорировать все файлы с расширением .ext *.log
dir/ Игнорировать всю папку dir node_modules/
file Игнорировать файл с именем file README.md
path/to/file Игнорировать файл по относительному пути src/temp.txt
/file Игнорировать файл только в корне проекта /config.json
**/file Игнорировать файл в любой папке **/.gitignore
dir/** Игнорировать всё внутри папки dir logs/**
!file Исключение из игнорирования (не игнорировать) !.env.example

Комментарии и пустые строки

  • Строки, начинающиеся с #, считаются комментариями
  • Пустые строки игнорируются

Пример:

# Это комментарий
*.log

# Игнорировать папки сборки
dist/
build/

Исключения (negation)

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

# Игнорировать все .env файлы
*.env

# Кроме .env.example
!.env.example

Глобальные паттерны

  • ** означает «любая глубина вложенности»
  • Паттерны без / применяются рекурсивно

Примеры:

# Игнорировать все файлы .log в любой папке
**/*.log

# Игнорировать папку temp на любом уровне
**/temp/

# Игнорировать всё в папке logs
logs/**

Приоритет игнорирования

Koda применяет игноры в следующем порядке (от низшего к высшему приоритету):

  1. .gitignore — базовый уровень
  2. По умолчанию (default ignores) — встроенные игноры Koda
  3. Глобальный .kodaignore (~/.koda/.kodaignore)
  4. Локальный .kodaignore (в корне проекта)
  5. Вложенный .kodaignore (в подпапках)

Важно: Более поздние правила могут переопределять более ранние.

Пример переопределения

# .gitignore
secret.txt

# .kodaignore (переопределяет .gitignore)
!secret.txt

В этом случае secret.txt не будет игнорироваться, потому что .kodaignore имеет более высокий приоритет.

Игноры по умолчанию

Koda автоматически игнорирует следующие файлы и папки:

Игнорируемые файлы (расширения)
*.DS_Store
*-lock.json
*.lock
*.ttf
*.png
*.jpg
*.jpeg
*.gif
*.mp4
*.svg
*.ico
*.pdf
*.zip
*.gz
*.tar
*.dmg
*.tgz
*.rar
*.7z
*.exe
*.dll
*.obj
*.o
*.o.d
*.a
*.lib
*.so
*.dylib
*.ncb
*.sdf
*.woff
*.woff2
*.eot
*.cur
*.avi
*.mpg
*.mpeg
*.mov
*.mp3
*.mkv
*.webm
*.jar
*.onnx
*.parquet
*.pqt
*.wav
*.webp
*.db
*.sqlite
*.wasm
*.plist
*.profraw
*.gcda
*.gcno
go.sum
*.env
*.gitignore
*.gitkeep
*.kodaignore
*.uasset
*.pdb
*.bin
*.pag
*.swp
Игнорируемые папки
.git/
.svn/
.vscode/
.idea/
.vs/
venv/
.venv/
env/
.env/
node_modules/
dist/
build/
Build/
target/
out/
bin/
.pytest_cache/
.vscode-test/
.koda/
__pycache__/
site-packages/
.gradle/
.mvn/
.cache/
gems/
vendor/

Эти игноры можно переопределить в .kodaignore.

Практические примеры

Для веб-разработки
# .kodaignore для веб-проекта

# Зависимости
node_modules/
vendor/
bower_components/

# Сборка
dist/
build/
out/
.next/
.nuxt/

# Логи
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Переменные окружения
.env
.env.local
.env.*.local

# Кэш
.cache/
.parcel-cache/
.eslintcache

# ОС
.DS_Store
Thumbs.db
Для Python-проектов
# .kodaignore для Python-проекта

# Виртуальные окружения
venv/
.venv/
env/
.env/

# Сборка
build/
dist/
*.egg-info/
.eggs/

# Кэш
__pycache__/
*.py[cod]
*$py.class
.pytest_cache/
.mypy_cache/
.coverage
htmlcov/

# Логи
*.log

# IDE
.idea/
.vscode/
*.swp
*.swo

# Переменные окружения
.env
.env.local
Для Java/Kotlin проектов
# .kodaignore для Java/Kotlin проекта

# Сборка
target/
build/
out/
*.class
*.jar
*.war
*.ear

# Зависимости
.gradle/
.mvn/
libs/

# IDE
.idea/
.vscode/
*.iml
*.ipr
*.iws

# Кэш
.cache/
.gradle/

# Логи
*.log

# Переменные окружения
.env
.env.local
Для C++ проектов
# .kodaignore для C++ проекта

# Сборка
build/
cmake-build-*/
Debug/
Release/
x64/
*.o
*.obj
*.a
*.lib
*.so
*.dylib
*.dll
*.exe

# CMake
CMakeCache.txt
CMakeFiles/
cmake_install.cmake
Makefile

# Visual Studio
.vs/
*.suo
*.user
*.ncb
*.sdf

# Логи
*.log

# Переменные окружения
.env
Для проектов с документацией
# .kodaignore для проекта с документацией

# Сгенерированная документация
docs/_build/
site/
public/

# Временные файлы
*.tmp
*.bak
*.swp

# Логи
*.log

# ОС
.DS_Store
Thumbs.db

# Переменные окружения
.env
Для машинного обучения
# .kodaignore для ML-проекта

# Данные (большие файлы)
data/raw/
data/processed/
*.csv
*.parquet
*.pqt

# Модели
models/
*.h5
*.pkl
*.onnx
*.pth
*.pt
*.bin

# Логи и метрики
logs/
runs/
*.tensorboard

# Виртуальные окружения
venv/
.venv/

# Кэш
__pycache__/
.ipynb_checkpoints/

# Переменные окружения
.env
Для мобильных проектов
# .kodaignore для мобильного проекта (iOS/Android)

# iOS
*.ipa
*.xcworkspace
Pods/
DerivedData/

# Android
.gradle/
build/
*.apk
*.aab
local.properties

# Общие
node_modules/
.env
*.log
.DS_Store

Конфиденциальные данные

Файлы с секретами
# Переменные окружения
.env
.env.local
.env.*.local
*.env

# Ключи и сертификаты
*.pem
*.key
*.crt
*.p12
*.pfx
id_rsa
id_rsa.pub
id_ed25519
id_ed25519.pub

# Конфигурации с паролями
config.secrets.json
secrets.yaml
credentials.json
service-account.json

# Базы данных
*.db
*.sqlite
*.sql.dump

# Логи с чувствительными данными
*.log
logs/

Предотвращение утечек

Важно

Файл .kodaignore не защищает от уже закоммиченных файлов в Git. Для удаления чувствительных данных из истории Git используйте:

# Удалить файл из истории Git
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch path/to/secret" \
--prune-empty --tag-name-filter cat -- --all

Или git-filter-repo:

git filter-repo --path path/to/secret --invert-paths

Интеграция с Git

Синхронизация с .gitignore

Часто полезно синхронизировать .kodaignore с .gitignore:

# Скопировать .gitignore в .kodaignore
cp .gitignore .kodaignore

# Добавить дополнительные игноры для Koda
echo -e "\n# Koda-specific ignores\n.koda/\n*.log" >> .kodaignore

Различия с .gitignore

Аспект .gitignore .kodaignore
Назначение Игнорирование в Git Игнорирование в Koda
Приоритет Ниже Выше (может переопределять)
Глобальный файл ~/.gitignore_global ~/.koda/.kodaignore
Влияет на Git commit/index Индексация, контекст, автодополнение

Рекомендация

Хорошая практика: Держите .kodaignore и .gitignore синхронизированными для консистентности, но добавляйте в .kodaignore специфичные для Koda игноры.

Взаимодействие с функциями Koda

Индексация

Файлы из .kodaignore исключаются из:

  • Семантического поиска
  • Контекста @codebase
  • Быстрого поиска по файлам

Автодополнение

Koda не предлагает автодополнение в игнорируемых файлах.

Контекст

Игнорируемые файлы недоступны через:

  • @file (в чате)
  • Автоматический контекст
  • Индексированный поиск

Диффы

Игнорируемые файлы могут быть исключены из анализа изменений.

Отладка

Проверка игнорирования

Чтобы проверить, игнорируется ли файл:

  1. Откройте чат Koda
  2. Попробуйте добавить файл через @file
  3. Если файл игнорируется, он не появится в списке

Логирование

Koda логирует игнорирование файлов в консоли разработчика:

File ignored: path/to/file.env (matched by .kodaignore pattern: *.env)

Тестирование паттернов

Создайте тестовый .kodaignore и проверьте различные паттерны:

# Тестовые паттерны
test-*.log
temp/
!**/important.txt

Рекомендации

Хорошие практики

1. Документируйте игноры:

# Логи - не нужны для контекста
*.log

# Переменные окружения - конфиденциально
.env

# Сборка - шум для индексации
dist/
build/

2. Используйте специфичные паттерны:

# ✅ Хорошо: специфично
src/**/*.test.ts

# ❌ Плохо: слишком широко
**/*.ts

3. Исключайте важное:

# Игнорировать все .env, кроме примеров
*.env
!.env.example
!.env.template

4. Синхронизируйте с .gitignore:

# Поддерживайте синхронизацию
diff .gitignore .kodaignore

Чего избегать

1. Игнорирование всего:

# ❌ Плохо: игнорирует весь проект
*

2. Игнорирование важных файлов:

# ❌ Плохо: игнорирует исходный код
src/
*.ts
*.py

3. Дублирование без необходимости:

# ❌ Плохо: дублирует default ignores
node_modules/
.git/
.koda/

# ✅ Хорошо: только кастомные игноры
custom-folder/

Производительность

Оптимизация:

  • Минимизируйте количество паттернов
  • Избегайте сложных глобальных паттернов (**/)
  • Регулярно очищайте устаревшие игноры

Влияние на скорость:

  • Каждый .kodaignore проверяется при обходе файлов
  • Большое количество игноров замедляет индексацию
  • Глобальный .kodaignore применяется ко всем проектам