7.1 KiB
7.1 KiB
Саморазвитие и эволюция проекта
Зачем проекту саморазвитие
Проект, который не развивается, умирает. Но развитие требует ресурсов, которых у команды может не быть. Решение: агенты автоматизируют развитие.
- Проект живёт дольше команды — агенты продолжают работу независимо
- Автоматизация рутины — тесты, документация, ревью
- Адаптация — проект сам подстраивается под новые требования
Три уровня саморазвития
Level 1: Reactive (базовый)
Агенты реагируют на события:
- Pre-commit: AuditAgent проверяет правила
- Push: SecurityAgent проверяет зависимости
- Cron: DocAgent обновляет документацию
Начинаем с этого уровня.
Level 2: Proactive (целевой)
Агенты предлагают улучшения:
- EvolutionAgent анализирует код и предлагает рефакторинг
- ObserverAgent собирает метрики и предлагает оптимизацию
- FixAgent анализирует ошибки и предлагает исправления
Достигаем к Stage 3 (см. migration-path.md).
Level 3: Autonomous (будущее)
Агенты принимают решения:
- Self-healing: авто-откат при росте ошибок
- Auto-versioning: автоматический бамп версий
- Auto-scaling: масштабирование под нагрузку
Ядро агентов (создаются с первого коммита)
4 агента, которые должны жить в проекте всегда:
| Агент | Роль | Триггеры | Без него |
|---|---|---|---|
| DocAgent | Пишет документацию | pre-commit, manual | Документация пишется "потом" → никогда |
| AuditAgent | Проверяет правила | pre-commit, push, cron | Правила не применяются |
| EvolutionAgent | Версионирует агентов | cron, event, manual | Агенты не эволюционируют |
| SupervisorAgent | Следит за всеми агентами | cron, event, manual | Экосистема не контролируется |
Подробнее о каждом
DocAgent:
- При каждом коммите проверяет, что документация соответствует коду
- Если находит недокументированный публичный метод — добавляет docstring
- Обновляет ADR при архитектурных изменениях
AuditAgent:
- Проверяет каждый коммит на соответствие
docs/00-rules.md - Проверяет: стиль кода, наличие тестов, docstrings, .env.example
- Пишет отчёт о нарушениях
EvolutionAgent:
- Отслеживает версии всех агентов
- При изменении checksum агента — бампит версию
- При добавлении новой capability — бампит minor
- При breaking change — бампит major
SupervisorAgent:
- Регулярно проверяет health всех агентов
- Собирает метрики выполнения (длительность, успешность)
- При падении агента — перезапускает или шлёт алерт
- Формирует сводный отчёт о состоянии экосистемы
Расширение агентов
По мере роста проекта добавляются:
| Агент | Когда | Зачем |
|---|---|---|
| QATesterAgent | Появились тесты | Поддерживать качество тестов |
| FixAgent | Пойман первый баг | Анализировать и исправлять |
| BacklogAgent | Появился техдолг | Управлять задачами |
| SecurityAgent | Перед production | Проверять безопасность |
| SpecAgent | Перед релизом | Управлять версией |
| RolloutAgent | Перед деплоем | Постепенный rollout |
| ObserverAgent | После запуска | Собирать метрики |
| UITestAgent | Есть UI | Визуальное тестирование |
Agent Versioning
Каждый агент версионируется независимо по A.B.C.
Почему независимо: агенты изменяются с разной скоростью. DocAgent может меняться каждый день, а SecurityAgent — раз в месяц.
Как работает:
- Агент запускается → вычисляет SHA256 своего файла (
compute_checksum()) - Сравнивает с хранимым checksum
- Если не совпал → авто-бамп patch + запись в changelog
- EvolutionAgent анализирует изменения и решает: это minor (новая capability) или major (breaking change)?
Хранение: CHANGELOG/agents/<name>.md
# doc_agent Changelog
<!-- checksum: a1b2c3d4e5f6... -->
## 1.2.0 (2026-05-10)
- Added: поддержка YAML-формата для промптов
## 1.1.3 (2026-05-09)
- Fixed: обработка пустых docstrings
## 1.0.0 (2026-05-01)
- Initial version
Триггеры запуска агентов
| Триггер | Когда | Какие агенты |
|---|---|---|
pre_commit |
Перед каждым коммитом | AuditAgent, DocAgent |
push |
При пуше в remote | SecurityAgent, BacklogAgent, SpecAgent |
tag_creation |
При создании git-тега | RolloutAgent, SpecAgent |
cron |
По расписанию (daily) | EvolutionAgent, SupervisorAgent, ObserverAgent |
manual |
Вручную из админки | Любой |
api |
Через API | Любой |
event |
При событии (ошибка, деплой) | FixAgent, RolloutAgent |
[ASK] Вопросы по саморазвитию
- Сколько агентов нужно на старте? (рекомендация: 4 ядерных, остальные по необходимости)
- Как часто запускать EvolutionAgent? (рекомендация: ежедневно по cron)
- Кто пишет агентов? (рекомендация: команда, начиная с самого простого — DocAgent)
- Нужен ли SupervisorAgent на старте? (да — замкнутый круг: агенты без контроля = хаос)