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