181 lines
4.3 KiB
Markdown
181 lines
4.3 KiB
Markdown
# FixAgent Mechanism - VoIdea
|
|
|
|
**Дата:** 2026-05-10
|
|
**Статус:** Backlog
|
|
|
|
---
|
|
|
|
## Обзор
|
|
|
|
Агент для автоматического анализа и исправления багов с созданием PR.
|
|
|
|
---
|
|
|
|
## Архитектура
|
|
|
|
### FixAgent responsibilities
|
|
|
|
1. **Анализ багов**
|
|
- Получение данных от QATesterAgent
|
|
- Анализ логов
|
|
- Определение причины
|
|
|
|
2. **Генерация исправлений**
|
|
- Написание кода
|
|
- Создание тестов
|
|
- Обновление документации
|
|
|
|
3. **Создание PR**
|
|
- Формирование pull request
|
|
- Описание изменений
|
|
- Добавление тестов
|
|
|
|
---
|
|
|
|
## Процесс работы
|
|
|
|
```python
|
|
async def fix_bug(bug_data: BugReport) -> FixResult:
|
|
# 1. Анализ
|
|
analysis = await analyze_bug(bug_data)
|
|
|
|
# 2. Поиск решения
|
|
solution = await find_solution(analysis)
|
|
|
|
# 3. Генерация кода
|
|
fix_code = await generate_fix(solution)
|
|
|
|
# 4. Создание PR
|
|
pr_url = await create_pr(fix_code, analysis)
|
|
|
|
# 5. Уведомление
|
|
await notify_about_pr(pr_url)
|
|
|
|
return FixResult(pr_url=pr_url)
|
|
```
|
|
|
|
---
|
|
|
|
## Анализ багов
|
|
|
|
### Источники данных
|
|
|
|
1. **QATesterAgent**
|
|
- Failed тесты
|
|
- Логи выполнения
|
|
- Скриншоты (если есть)
|
|
|
|
2. **Логи системы**
|
|
- Error логи
|
|
- Warning логи
|
|
- Traceback
|
|
|
|
3. **Пользовательские отчёты**
|
|
- Feedback из админ-панели
|
|
- Exception reports
|
|
|
|
### Типы анализа
|
|
|
|
- **Static analysis** — код ревью
|
|
- **Log analysis** — поиск паттернов
|
|
- **Test replay** — воспроизведение
|
|
|
|
---
|
|
|
|
## Генерация исправлений
|
|
|
|
### Правила
|
|
|
|
1. **Минимальные изменения** — исправлять только проблему
|
|
2. **Не ломать существующее** — регрессионные тесты
|
|
3. **Документация** — обновлять комментарии и docs
|
|
4. **Тесты** — добавлять новые тесты для предотвращения
|
|
|
|
### Формат PR
|
|
|
|
```markdown
|
|
## Fix: [Краткое описание]
|
|
|
|
### Проблема
|
|
[Описание бага]
|
|
|
|
### Причина
|
|
[Найденная причина]
|
|
|
|
### Решение
|
|
[Описание исправления]
|
|
|
|
### Тесты
|
|
- [ ] Добавлен тест для предотвращения
|
|
- [ ] Существующие тесты проходят
|
|
|
|
### Логи
|
|
[Связанные логи]
|
|
```
|
|
|
|
---
|
|
|
|
## Взаимодействие с другими агентами
|
|
|
|
### QATesterAgent
|
|
```
|
|
FixAgent → "Исправь баг X"
|
|
QATesterAgent → "Проверь исправление"
|
|
```
|
|
|
|
### DocAgent
|
|
```
|
|
FixAgent → "Обнови документацию"
|
|
DocAgent → "Документация обновлена"
|
|
```
|
|
|
|
### RolloutAgent
|
|
```
|
|
FixAgent → "Обнаружен критический баг"
|
|
RolloutAgent → "Приостановить rollout, исправить"
|
|
```
|
|
|
|
---
|
|
|
|
## Безопасность
|
|
|
|
### Ограничения
|
|
|
|
1. **Только PR, не direct push** — человек проверяет
|
|
2. **Scope ограничен** — один файл за раз
|
|
3. **Тесты обязательны** — без тестов PR не создаётся
|
|
4. **Логирование** — все действия фиксируются
|
|
|
|
### Что НЕ делает FixAgent
|
|
|
|
- Не удаляет файлы
|
|
- Не меняет чужие PR
|
|
- Не коммитит в main напрямую
|
|
- Не создаёт бесконечных PR (лимит: 3 на один баг)
|
|
|
|
---
|
|
|
|
## Метрики
|
|
|
|
- Bugs fixed
|
|
- PRs created
|
|
- PRs merged
|
|
- Average fix time
|
|
- False positives
|
|
|
|
---
|
|
|
|
## TODO
|
|
|
|
- [ ] Реализовать FixAgent
|
|
- [ ] Интегрировать с QATesterAgent
|
|
- [ ] Добавить анализ логов
|
|
- [ ] Создать шаблон PR
|
|
- [ ] Настроить безопасность
|
|
- [ ] Добавить метрики
|
|
- [ ] Написать тесты
|
|
|
|
---
|
|
|
|
*Создано: 2026-05-10*
|
|
*Управляется FixAgent* |