code-review-agent/DEBUG_GUIDE.md
Primakov Alexandr Alexandrovich 09cdd06307 init
2025-10-12 23:15:09 +03:00

12 KiB
Raw Permalink Blame History

🔍 Руководство по отладке 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: Запустите ревью

  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 оптимизирована для генерации кода, а не для ревью.

Решения:

# Попробуйте другую модель:

# Вариант 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 (от лучшей к худшей):

  1. mistral:7b РЕКОМЕНДУЕТСЯ!

    • Лучше всего следует инструкциям
    • Правильный JSON формат
    • Хороший анализ кода
    • Быстрая (~4GB RAM)
  2. llama3:8b

    • Самая умная модель
    • Лучший анализ кода
    • ⚠️ Требует ~5GB RAM
  3. deepseek-coder:6.7b

    • Специально для кода
    • Понимает много языков
    • ⚠️ Требует ~4GB RAM
  4. 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 не находит ошибки"

Действия:

  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 (РЕКОМЕНДУЕТСЯ!)
    ollama pull mistral:7b
    echo "OLLAMA_MODEL=mistral:7b" >> backend/.env
    
  2. Перезапустите backend
  3. Попробуйте снова

См. MODEL_RECOMMENDATION.md для деталей


Результат

Теперь вы видите весь процесс работы AI ревьювера:

  • Что получено из API
  • Что отправлено в AI
  • Что AI ответила
  • Какие комментарии созданы

Это позволяет понять ПОЧЕМУ AI не находит ошибки и КАК это исправить!