# 🔍 Руководство по отладке AI ревьювера ## Что добавлено ### 1. **Детальное логирование всего процесса** 📊 Теперь в терминале backend вы увидите ВЕСЬ процесс работы агента: #### **Этап 0: Информация о PR** ⭐ НОВОЕ! ``` 📋📋📋📋📋 ИНФОРМАЦИЯ О PR 📋📋📋📋📋 📝 Название: Добавление функционала редактирования аватара 👤 Автор: primakov 🔀 Ветки: feature/avatar → main 📄 Описание: -------------------------------------------------------------------------------- Реализована возможность загрузки и изменения пользовательского аватара. Добавлен предпросмотр перед сохранением. -------------------------------------------------------------------------------- 📋📋📋📋📋📋📋📋📋📋📋📋📋📋📋📋📋📋 ``` #### **Этап 1: Получение файлов из PR** ``` 📥📥📥📥📥📥📥📥📥📥 ПОЛУЧЕНИЕ ФАЙЛОВ ИЗ PR 📥📥📥📥📥📥📥📥📥📥 📊 Получено файлов из API: 1 1. src/pages/SearchCharacterPage.tsx Status: modified +4 -4 Patch: ДА (1234 символов) Первые 200 символов patch: @@ -55,7 +55,7 @@ export const SearchCharacterPage = ... ✅ Файлов для ревью: 1 - src/pages/SearchCharacterPage.tsx (typescript) ``` #### **Этап 2: Анализ каждого файла** ``` 🔬🔬🔬🔬🔬 НАЧАЛО АНАЛИЗА ФАЙЛОВ 🔬🔬🔬🔬🔬 Файлов для анализа: 1 📂 Файл 1/1: src/pages/SearchCharacterPage.tsx Язык: typescript Размер patch: 1234 символов Additions: 4, Deletions: 4 ``` #### **Этап 3: Детали анализа LLM** ``` ================================================================================ 🔍 АНАЛИЗ ФАЙЛА: src/pages/SearchCharacterPage.tsx ================================================================================ 📋 КОНТЕКСТ PR: ⭐ НОВОЕ! -------------------------------------------------------------------------------- Название: Добавление функционала редактирования аватара Описание: Реализована возможность загрузки и изменения аватара... -------------------------------------------------------------------------------- 📝 DIFF (1234 символов): -------------------------------------------------------------------------------- @@ -55,7 +55,7 @@ export const SearchCharacterPage = () => { search: searchValue }), headers: { - 'Content-Type': 'application/json' + 'Content-Type': 'shmapplication/json' // <-- ОШИБКА! } -------------------------------------------------------------------------------- 💭 ПРОМПТ (2500 символов): -------------------------------------------------------------------------------- Ты СТРОГИЙ code reviewer. Твоя задача - найти ВСЕ ошибки в коде... -------------------------------------------------------------------------------- ⏳ Отправка запроса к Ollama (codellama:7b)... 🤖 ОТВЕТ AI (500 символов): -------------------------------------------------------------------------------- { "comments": [ { "line": 58, "severity": "ERROR", "message": "Опечатка в Content-Type..." } ] } -------------------------------------------------------------------------------- ✅ Найдено комментариев: 1 1. Строка 58: Severity: ERROR Message: Опечатка в Content-Type: 'shmapplication/json'... ================================================================================ ``` ### 2. **Улучшенные промпты** 🎯 Промпт теперь **пошаговый** с конкретными примерами: ``` ПОШАГОВЫЙ АНАЛИЗ каждой строки с +: Шаг 1: ЧИТАЙ КАЖДУЮ СТРОКУ с + внимательно Шаг 2: ПРОВЕРЬ каждую строку на: a) ОПЕЧАТКИ - неправильные слова, typos b) СИНТАКСИС - скобки, кавычки, запятые c) ЛОГИКА - правильность кода d) REACT ПРАВИЛА - key, hooks, JSX КОНКРЕТНЫЕ ПРИМЕРЫ ОШИБОК: ❌ 'shmapplication/json' вместо 'application/json' ❌ {condition && (
text
} - пропущена ) ❌ key на неправильном элементе ``` ### 3. **Увеличена temperature** 🌡️ - **Было:** `temperature=0.1` (очень консервативно) - **Стало:** `temperature=0.3` (более внимательный анализ) --- ## Как использовать ### Шаг 1: Запустите ревью 1. Откройте http://localhost:5173 2. Перейдите в **Репозитории** 3. Нажмите **🔍 Проверить сейчас** или **🔄 Повторить ревью** ### Шаг 2: Смотрите логи в терминале backend В терминале где запущен backend (`uvicorn app.main:app`) вы увидите **весь процесс**: 1. **Какие файлы получены** из Gitea API 2. **Какой patch** для каждого файла 3. **Какой промпт** отправлен в Ollama 4. **Что ответила AI** (полный ответ) 5. **Сколько комментариев** найдено 6. **Детали каждого комментария** ### Шаг 3: Анализируйте #### Если AI не находит ошибки: **Проверьте логи:** 1. **Patch приходит?** ``` Patch: ДА (1234 символов) ``` - Если **НЕТ** - проблема с Gitea API - Если **ДА** - идем дальше 2. **Patch содержит ошибки?** ``` Первые 200 символов patch: + 'Content-Type': 'shmapplication/json' ``` - Проверьте что опечатка видна в patch 3. **Что ответила AI?** ``` 🤖 ОТВЕТ AI: {"comments": []} ``` - Если `[]` - AI не увидела проблему - **Причина:** модель `codellama:7b` может быть недостаточно хороша #### Возможные проблемы: **1. Модель codellama:7b не видит ошибки** CodeLlama оптимизирована для генерации кода, а не для ревью. **Решения:** ```bash # Попробуйте другую модель: # Вариант 1: Mistral (лучше для анализа) ollama pull mistral:7b # Вариант 2: Llama 3 (самая умная) ollama pull llama3:8b # Вариант 3: DeepSeek Coder (специально для кода) ollama pull deepseek-coder:6.7b ``` Затем в `backend/.env`: ```bash OLLAMA_MODEL=mistral:7b # или OLLAMA_MODEL=llama3:8b # или OLLAMA_MODEL=deepseek-coder:6.7b ``` **2. Patch не содержит нужных строк** Gitea может не давать полный patch для больших файлов. **Решение:** Проверьте в логах что именно в patch. **3. AI отвечает не в JSON формате** Бывает модель пишет текст вместо JSON. **Решение:** В логах вы увидите: ``` ⚠️ Комментариев не найдено! AI не нашел проблем. ``` Смотрите полный ответ AI и меняйте модель. --- ## Рекомендуемые модели ### Для code review (от лучшей к худшей): 1. **mistral:7b** ⭐⭐⭐⭐⭐ **РЕКОМЕНДУЕТСЯ!** - ✅ Лучше всего следует инструкциям - ✅ Правильный JSON формат - ✅ Хороший анализ кода - ⚡ Быстрая (~4GB RAM) 2. **llama3:8b** ⭐⭐⭐⭐⭐ - ✅ Самая умная модель - ✅ Лучший анализ кода - ⚠️ Требует ~5GB RAM 3. **deepseek-coder:6.7b** ⭐⭐⭐⭐ - ✅ Специально для кода - ✅ Понимает много языков - ⚠️ Требует ~4GB RAM 4. **codellama:7b** ⭐⭐ **НЕ РЕКОМЕНДУЕТСЯ** - ❌ Отвечает текстом вместо JSON - ❌ Не подходит для code review - ⚠️ Для генерации кода, а не анализа ### Как сменить модель: ```bash # 1. Скачайте Mistral (РЕКОМЕНДУЕТСЯ) ollama pull mistral:7b # 2. Обновите .env echo "OLLAMA_MODEL=mistral:7b" >> backend/.env # 3. Перезапустите backend # Ctrl+C в терминале backend # Затем снова: python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 # Или для самой умной: ollama pull llama3:8b # И обновите: OLLAMA_MODEL=llama3:8b ``` --- ## Пример полного лога успешного ревью ``` 📥📥📥📥📥 ПОЛУЧЕНИЕ ФАЙЛОВ ИЗ PR 📥📥📥📥📥 📊 Получено файлов из API: 1 1. src/file.tsx Status: modified +2 -2 Patch: ДА (500 символов) ✅ Файлов для ревью: 1 🔬🔬🔬 НАЧАЛО АНАЛИЗА ФАЙЛОВ 🔬🔬🔬 📂 Файл 1/1: src/file.tsx ================================================================================ 🔍 АНАЛИЗ ФАЙЛА: src/file.tsx ================================================================================ 📝 DIFF (500 символов): + 'Content-Type': 'shmapplication/json' ⏳ Отправка запроса к Ollama (llama3:8b)... 🤖 ОТВЕТ AI: { "comments": [ { "line": 58, "severity": "ERROR", "message": "Опечатка: 'shmapplication/json' должно быть 'application/json'" } ] } ✅ Найдено комментариев: 1 1. Строка 58: ERROR - Опечатка... ✅ ИТОГО комментариев: 1 🤖 AI Code Review завершен Найдено проблем: 1 - ❌ Критичных: 1 Проанализировано файлов: 1 ``` --- ## Чеклист отладки - [ ] Backend логи показывают получение файлов? - [ ] Patch содержит изменения? - [ ] Ошибки видны в patch? - [ ] AI получает правильный промпт? - [ ] AI отвечает в JSON формате? - [ ] AI находит очевидные ошибки? - [ ] Попробовали другую модель? - [ ] Temperature = 0.3? --- ## Быстрая диагностика ### ❌ "AI не находит ошибки" **Действия:** 1. Смотрите логи backend - что в patch? 2. Если patch пустой - проблема с Gitea API 3. Если patch хороший, но AI не видит - меняйте модель на `llama3:8b` ### ❌ "Ревью падает с ошибкой" **Действия:** 1. Смотрите traceback в логах 2. Проверьте что Ollama запущен: `ollama list` 3. Проверьте что модель скачана ### ❌ "AI отвечает не в JSON" **Пример:** ``` 🤖 ОТВЕТ AI: Thank you for the detailed analysis... ⚠️ Комментариев не найдено! ``` **Причина:** codellama:7b не подходит для code review! **Действия:** 1. **Смените модель на mistral:7b** (РЕКОМЕНДУЕТСЯ!) ```bash ollama pull mistral:7b echo "OLLAMA_MODEL=mistral:7b" >> backend/.env ``` 2. Перезапустите backend 3. Попробуйте снова См. `MODEL_RECOMMENDATION.md` для деталей --- ## Результат Теперь вы видите **весь процесс работы** AI ревьювера: - ✅ Что получено из API - ✅ Что отправлено в AI - ✅ Что AI ответила - ✅ Какие комментарии созданы **Это позволяет понять ПОЧЕМУ AI не находит ошибки и КАК это исправить!**