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 не находит ошибки и КАК это исправить!