feat: Add review events persistence, version display, and auto-versioning system
This commit is contained in:
@@ -0,0 +1,384 @@
|
||||
# 🔍 Руководство по отладке 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 не находит ошибки и КАК это исправить!**
|
||||
|
||||
Reference in New Issue
Block a user