code-review-agent/docs/DEBUG_GUIDE.md

385 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🔍 Руководство по отладке 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 оптимизирована для генерации кода, а не для ревью.
**Решения:**
```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 не находит ошибки и КАК это исправить!**