12 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	🔍 Руководство по отладке 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 && (<div>text</div>} - пропущена )
❌ key на неправильном элементе
3. Увеличена temperature 🌡️
- Было: temperature=0.1(очень консервативно)
- Стало: temperature=0.3(более внимательный анализ)
Как использовать
Шаг 1: Запустите ревью
- Откройте http://localhost:5173
- Перейдите в Репозитории
- Нажмите 🔍 Проверить сейчас или 🔄 Повторить ревью
Шаг 2: Смотрите логи в терминале backend
В терминале где запущен backend (uvicorn app.main:app) вы увидите весь процесс:
- Какие файлы получены из Gitea API
- Какой patch для каждого файла
- Какой промпт отправлен в Ollama
- Что ответила AI (полный ответ)
- Сколько комментариев найдено
- Детали каждого комментария
Шаг 3: Анализируйте
Если AI не находит ошибки:
Проверьте логи:
- 
Patch приходит? Patch: ДА (1234 символов)- Если НЕТ - проблема с Gitea API
- Если ДА - идем дальше
 
- 
Patch содержит ошибки? Первые 200 символов patch: + 'Content-Type': 'shmapplication/json'- Проверьте что опечатка видна в patch
 
- 
Что ответила AI? 🤖 ОТВЕТ AI: {"comments": []}- Если []- AI не увидела проблему
- Причина: модель codellama:7bможет быть недостаточно хороша
 
- Если 
Возможные проблемы:
1. Модель codellama:7b не видит ошибки
CodeLlama оптимизирована для генерации кода, а не для ревью.
Решения:
# Попробуйте другую модель:
# Вариант 1: Mistral (лучше для анализа)
ollama pull mistral:7b
# Вариант 2: Llama 3 (самая умная)
ollama pull llama3:8b
# Вариант 3: DeepSeek Coder (специально для кода)
ollama pull deepseek-coder:6.7b
Затем в backend/.env:
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 (от лучшей к худшей):
- 
mistral:7b ⭐⭐⭐⭐⭐ РЕКОМЕНДУЕТСЯ! - ✅ Лучше всего следует инструкциям
- ✅ Правильный JSON формат
- ✅ Хороший анализ кода
- ⚡ Быстрая (~4GB RAM)
 
- 
llama3:8b ⭐⭐⭐⭐⭐ - ✅ Самая умная модель
- ✅ Лучший анализ кода
- ⚠️ Требует ~5GB RAM
 
- 
deepseek-coder:6.7b ⭐⭐⭐⭐ - ✅ Специально для кода
- ✅ Понимает много языков
- ⚠️ Требует ~4GB RAM
 
- 
codellama:7b ⭐⭐ НЕ РЕКОМЕНДУЕТСЯ - ❌ Отвечает текстом вместо JSON
- ❌ Не подходит для code review
- ⚠️ Для генерации кода, а не анализа
 
Как сменить модель:
# 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 не находит ошибки"
Действия:
- Смотрите логи backend - что в patch?
- Если patch пустой - проблема с Gitea API
- Если patch хороший, но AI не видит - меняйте модель на llama3:8b
❌ "Ревью падает с ошибкой"
Действия:
- Смотрите traceback в логах
- Проверьте что Ollama запущен: ollama list
- Проверьте что модель скачана
❌ "AI отвечает не в JSON"
Пример:
🤖 ОТВЕТ AI:
Thank you for the detailed analysis...
⚠️ Комментариев не найдено!
Причина: codellama:7b не подходит для code review!
Действия:
- Смените модель на mistral:7b (РЕКОМЕНДУЕТСЯ!)
ollama pull mistral:7b echo "OLLAMA_MODEL=mistral:7b" >> backend/.env
- Перезапустите backend
- Попробуйте снова
См. MODEL_RECOMMENDATION.md для деталей
Результат
Теперь вы видите весь процесс работы AI ревьювера:
- ✅ Что получено из API
- ✅ Что отправлено в AI
- ✅ Что AI ответила
- ✅ Какие комментарии созданы
Это позволяет понять ПОЧЕМУ AI не находит ошибки и КАК это исправить!