Codebase Assistant — это интеллектуальный помощник для работы с кодовой базой проекта.
Он использует подход RAG (Retrieval-Augmented Generation) и стек LangGraph + Qdrant + Ollama + HuggingFace, чтобы:
- искать релевантные фрагменты кода и документации,
- переписывать запросы пользователя для улучшения поиска,
- ранжировать найденные результаты,
- и формировать короткие, точные ответы с примерами кода.
Цель проекта — создать автономного агента, который понимает кодовую базу и помогает разработчику быстрее ориентироваться в ней:
- Отвечает на вопросы о проекте: где используется переменная, как реализована функция, как устроен API и т.д.
- Подсказывает улучшения кода: находит дубли, плохие практики, нарушения стиля.
- Генерирует осмысленные commit-сообщения.
- Работает только с открытыми источниками и локальными данными.
git clone https://github.com/Aeksar/codebase_assistant.git
cd codebase_assistant
pip install -r requirements.txt
docker compose up -d
python3 main.py
Модуль | Описание |
---|---|
main.py |
Точка входа. Инициализация агента, пайплайна LangGraph и подключений. |
services/graph.py |
Построение графа пайплайна: Query Rewriter → Retriever → Reranker → LLM. |
services/loader.py |
Загрузка исходных данных и индексация в Qdrant. |
services/prompt.py |
Хранение шаблонов промптов и подсказок для агента. |
services/llm.py |
Работа с LLM через Ollama и HuggingFace. |
services/ranker.py |
Реализация reranker-модели на основе CrossEncoder. |
services/store.py |
Подключение к Qdrant, создание коллекции и векторного хранилища. |
models/agent_states.py |
Определения состояний LangGraph-агента. |
models/github.py |
Модель для взаимодействия с GitHub API (репозитории, коммиты). |
models/namer.py |
Генерация осмысленных commit-сообщений. |
utils/crypto.py |
Утилиты для безопасного хранения и шифрования секретов. |
config/settings.py |
Глобальные настройки проекта: пути, модели, параметры окружения. |
config/logs.py |
Конфигурация логирования и форматирования вывода. |
commit_namer.py |
CLI-инструмент для генерации commit message на основе git diff. |
Агент реализован как LangGraph-пайплайн, состоящий из нескольких этапов:
-
Query Rewriter
Переписывает исходный вопрос пользователя, уточняя контекст и намерение.
Пример:“Где используется
GITHUB_API_KEY
?”
→ “Покажи, в каких модулях проекта используется переменная окруженияGITHUB_API_KEY
и для чего она нужна.” -
Retriever (Qdrant)
Поиск релевантных фрагментов кода и документации на основе эмбеддингов.
Используется модельmicrosoft/codebert-base
для кодовых эмбеддингов. -
Reranker (CrossEncoder)
Повторное ранжирование найденных фрагментов для повышения точности.
Модель:cross-encoder/ms-marco-MiniLM-L-6-v2
. -
LLM (Ollama / HuggingFace)
Генерация краткого ответа с примерами кода и пояснениями на основе найденного контекста.
Примерно в таком стиле: