Как это работает
Когда индексация включена:- Парсинг кода — система анализирует код с помощью Tree-sitter и выделяет семантические блоки (функции, классы, методы)
- Создание embeddings — каждый блок кода преобразуется в векторное представление с помощью AI моделей
- Хранение векторов — векторы сохраняются в базе данных Qdrant для быстрого поиска по сходству
- Инструмент поиска — Harvi Code получает доступ к инструменту
codebase_searchдля умного поиска кода
Быстрый старт
Шаг 1: Выбери компоненты
Для индексации нужны два компонента:- Провайдер embeddings — для преобразования кода в векторы
- Векторная база данных — для хранения и поиска векторов
Шаг 2: Настрой Qdrant (векторная БД)
Вариант A: Облачная установка (рекомендуется для начала) - БЕСПЛАТНО
- Зарегистрируйся на Qdrant Cloud (есть бесплатный тариф)
- Создай кластер
- Скопируй URL и API ключ
Вариант B: Локальная установка - БЕСПЛАТНО
Используя Docker:Шаг 3: Настрой провайдер embeddings
Google Gemini (рекомендуется) - БЕСПЛАТНО
- Получи API ключ на Google AI Studio (сейчас бесплатно)
- В настройках Harvi Code:
- Provider: Google Gemini
- API Key: Твой ключ из Google AI Studio
Шаг 4: Сохрани и запусти
- Нажми Save и Start Indexing
- Жёлтый (Indexing): Идёт обработка файлов
- Зелёный (Indexed): Готово к поиску
- Красный (Error): Проверь раздел решения проблем
Управление индексатором
Управлять индексацией можно прямо из интерфейса чата Harvi Code.Иконка статуса
В правом нижнем углу поля ввода находится иконка статуса индексации кодовой базы. Цвет иконки показывает состояние:- 🟢 Зелёный: Indexed — индекс актуален и готов к поиску
- 🟡 Жёлтый: Indexing — система обрабатывает файлы (поиск доступен, но результаты могут быть неполными)
- 🔴 Красный: Error — произошла ошибка (проверь подключение к Qdrant или провайдеру embeddings)
- ⚪ Серый: Standby — индексатор ожидает настройки или отключён
Окно настроек
Кликни на иконку статуса, чтобы открыть окно настроек:- Status: Детальное сообщение о текущем состоянии
- Setup: Основные поля для подключения к провайдеру embeddings и векторной БД
- Advanced Configuration: Тонкая настройка параметров поиска (порог сходства)
- Clear Index Data: Удаляет все данные из коллекции Qdrant и очищает локальный кэш (нельзя отменить)
- Save: Применяет изменения настроек
Поля настроек
Основные поля
- Embedder Provider: Выбор источника для генерации AI embeddings (OpenAI, Google Gemini, Ollama, OpenAI Compatible)
- API Key: Секретный ключ для аутентификации (для облачных провайдеров)
- Base URL: Endpoint для подключения к API (для Ollama и OpenAI Compatible)
- Model: Конкретная модель embeddings (размерность векторов показана рядом)
- Qdrant URL: Endpoint подключения к векторной БД (например,
http://localhost:6333) - Qdrant API Key: Ключ аутентификации для защищённого Qdrant (опционально)
Продвинутые настройки
-
Search Score Threshold: Минимальный порог сходства для результатов поиска (0.0-1.0)
- Низкий (0.15-0.3): Больше результатов, хорошо для исследования
- Средний (0.4-0.5): Баланс точности и полноты (по умолчанию: 0.4)
- Высокий (0.6-0.8): Только точные совпадения
- Maximum Search Results: Максимальное количество фрагментов кода в результатах одного поиска
Ключевые преимущества
- Семантический поиск: Находи код по смыслу, а не только по ключевым словам
- Улучшенное понимание AI: Harvi Code лучше понимает и работает с твоей кодовой базой
- Поиск по всему проекту: Ищи во всех файлах, а не только в открытых
- Распознавание паттернов: Находи похожие реализации и паттерны кода
Как обрабатываются файлы
Умный парсинг кода
Система использует продвинутую стратегию парсинга:- Tree-sitter сначала: Для поддерживаемых языков использует AST парсинг для выделения семантических блоков
- Поддержка Markdown: Индексирует Markdown файлы, используя заголовки как точки входа
- Умный fallback: Для неподдерживаемых типов файлов использует разбиение по строкам
- Минимум: 100 символов
- Максимум: 1,000 символов
- Большие функции разбиваются на логических границах
Фильтрация файлов
Индексатор учитывает паттерны игнорирования:- Файлы из
.gitignore - Файлы из
.harviignore - Бинарные файлы и изображения
- Файлы больше 1MB
.gitignore включает папки с зависимостями вроде node_modules, vendor, target и т.д.
Инкрементальные обновления
- Отслеживание файлов: Мониторит изменения в workspace в реальном времени
- Умные обновления: Обрабатывает только изменённые файлы
- Поддержка веток: Автоматически обрабатывает переключение веток Git
- Кэширование на основе хэшей: Избегает повторной обработки неизменённого контента
Лучшие практики
Эффективные запросы
Вместо поиска точного синтаксиса:- ❌
const getUser - ✅
функция для получения пользователя из базы данных
- “middleware для аутентификации”
- “обработка ошибок для API запросов”
- “настройка подключения к базе данных”
Безопасность
- API ключи: Хранятся безопасно в зашифрованном хранилище VS Code
- Приватность кода: Только небольшие фрагменты кода отправляются для создания embeddings
- Локальная обработка: Весь парсинг происходит локально
- Контроль доступа: Учитывает права доступа к файлам и паттерны игнорирования
Решение проблем
Проблемы с подключением
“Connection to Qdrant failed”- Убедись, что Qdrant запущен (
docker psдля проверки) - Проверь, что URL совпадает (по умолчанию:
http://localhost:6333) - Проверь firewall/сетевые политики
- Для облачных инстансов проверь URL и API ключ
- Перепроверь правильность API ключа
- Убедись, что ключ имеет необходимые права
- Для Ollama проверь, что сервис запущен
Ошибки формата API ключа
- Симптом: Ошибка упоминает “ByteString conversion”
- Причина: API ключ содержит недопустимые символы или скрытые пробелы
- Решение: Сгенерируй новый ключ и вставь его заново, убедившись в отсутствии лишних пробелов
Проблемы с моделями
“Model Not Found”- Для Google Gemini: Убедись, что имя модели правильное (например,
text-embedding-004) - Для других провайдеров: Проверь документацию для доступных моделей
Проблемы с индексацией
“Застрял в состоянии Error”- Сначала проверь проблемы с подключением
- Кликни “Clear Index & Re-index” в настройках
- Это решает проблемы с повреждённым кэшем или коллекцией
- Нормально для больших кодовых баз (10k+ файлов)
- Проверь, что
.gitignoreвключает большие директории - Рассмотри добавление паттернов в
.harviignore
Использование поиска
После индексации Harvi Code может использовать инструментcodebase_search:
Примеры запросов на естественном языке:
- “Как обрабатывается аутентификация пользователя?”
- “Настройка подключения к базе данных”
- “Паттерны обработки ошибок”
- “Определения API endpoints”
- “Управление состоянием компонентов”
- Релевантные фрагменты кода
- Пути к файлам с номерами строк
- Оценки сходства
- Прямые ссылки для навигации
Приватность и безопасность данных
Твой код остаётся приватным:- Только небольшие фрагменты кода (100-1000 символов) отправляются для создания embeddings
- Embeddings — это односторонние математические представления
- Локальный парсинг означает, что полные файлы не покидают твою машину
- Используй Ollama для полностью офлайн работы
- Векторы хранятся в выбранном тобой инстансе Qdrant
- Ты контролируешь, где хранятся данные (локально/облако)
- Легко удалить: просто очисти индекс
Текущие ограничения
- Размер файла: Максимум 1MB на файл
- Внешние зависимости: Требуется провайдер embeddings + Qdrant
- Поддержка языков: Лучшие результаты с языками, поддерживаемыми Tree-sitter