Skip to content

Aeksar/codebase_assistant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧠 Codebase Assistant

Codebase Assistant — это интеллектуальный помощник для работы с кодовой базой проекта.
Он использует подход RAG (Retrieval-Augmented Generation) и стек LangGraph + Qdrant + Ollama + HuggingFace, чтобы:

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

🚀 Основная идея

Цель проекта — создать автономного агента, который понимает кодовую базу и помогает разработчику быстрее ориентироваться в ней:

  • Отвечает на вопросы о проекте: где используется переменная, как реализована функция, как устроен API и т.д.
  • Подсказывает улучшения кода: находит дубли, плохие практики, нарушения стиля.
  • Генерирует осмысленные commit-сообщения.
  • Работает только с открытыми источниками и локальными данными.

Способ запуска

1. Клонируйте репозиторий

git clone https://github.com/Aeksar/codebase_assistant.git
cd codebase_assistant

2. Установите зависимости

pip install -r requirements.txt

3. Запустите Qdrant череp Docker Compose

docker compose up -d

4. Запустите ассистента

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-пайплайн, состоящий из нескольких этапов:

  1. Query Rewriter
    Переписывает исходный вопрос пользователя, уточняя контекст и намерение.
    Пример:

    “Где используется GITHUB_API_KEY?”
    → “Покажи, в каких модулях проекта используется переменная окружения GITHUB_API_KEY и для чего она нужна.”

  2. Retriever (Qdrant)
    Поиск релевантных фрагментов кода и документации на основе эмбеддингов.
    Используется модель microsoft/codebert-base для кодовых эмбеддингов.

  3. Reranker (CrossEncoder)
    Повторное ранжирование найденных фрагментов для повышения точности.
    Модель: cross-encoder/ms-marco-MiniLM-L-6-v2.

  4. LLM (Ollama / HuggingFace)
    Генерация краткого ответа с примерами кода и пояснениями на основе найденного контекста.
    Примерно в таком стиле:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages