| name | post-mortem-analyzer |
| description | Автоматический разбор провалов и дорогих операций. Замкнутый цикл обучения: ошибка → анализ → исправление → предотвращение. |
| tags | ["meta","learning","post-mortem","improvement"] |
Post-Mortem Analyzer — Разбор ошибок и замкнутый цикл обучения
Зачем
Каждая ошибка — бесплатный урок. Но только если её проанализировать.
Сейчас: ошибка → "ой, ну бывает" → та же ошибка через час → "опять?!"
Надо: ошибка → анализ → корень → фикс в скилл → больше никогда.
Триггер
Запускать автоматически когда:
- Задача заняла >10 tool calls (слишком много)
- Было >3 ошибок подряд
- subagent вернул мусор
- Был убыток >10₽ на задачу (оценить примерно)
- Пользователь сказал "не то" или переделал то же самое
- Задача провалилась (не сделано что просили)
- Повторно сделал то, что разбирали в прошлой сессии (session_search подтверждает)
Формат разбора (3 секунды в голове)
1. ЧТО пошло не так? (1 предложение)
- "Зациклился на browser_navigate вместо curl"
- "Дёрнул 5 read_file вместо execute_code"
- "subagent наврал про Ozon API"
2. ПОЧЕМУ? (корень, не симптом)
- ❌ "Потому что капча" — симптом
- ✅ "Потому что выбрал browser вместо curl без причины" — корень
- ❌ "Потому что модель тупая" — симптом
- ✅ "Потому что дал subagent-у слишком широкую задачу" — корень
3. ЧТО делать по-другому? (1 действие)
- "Вместо browser_navigate для статики — всегда curl"
- "subagent-ам давать одну конкретную задачу, не 5 в одном"
4. Сохранить в скилл
Скилл который предотвратит повторение:
- Если скилл существует →
skill_manage(patch) с новым знанием
- Если нет →
skill_manage(create) + добавить триггер в rules-and-bounds
5. Запомнить в memory (только важное)
Только если урок стоит того: "не использовать browser для статических страниц" — стоит.
"pip install опечатался" — не стоит, разовая случайность.
Примеры
Пример 1: Зациклился на браузере
1. ЧТО: 8 tool calls на browser_navigate → browser_snapshot → browser_click → ... без результата
2. ПОЧЕМУ: Выбрал browser для статической страницы, хотя curl был бы в 1 вызов
3. ФИКС: Для любых URL на .json/.txt/.md и API — использовать curl
4. СКИЛЛ: ✅ В context-economy добавить правило "browser только для JS-heavy"
5. ПАМЯТЬ: "browser_for_static = BAD" (1 запись)
Пример 2: subagent наврал
1. ЧТО: subagent вернул "файл сохранён", а файла нет
2. ПОЧЕМУ: Не проверил subagent-а. Верил на слово
3. ФИКС: После каждого delegate_task проверять файл/статус самостоятельно
4. СКИЛЛ: ✅ В reflection-qa уже есть правило "не верь subagent-у" — уже покрыто
5. ПАМЯТЬ: не надо, уже есть
Пример 3: Потратил 20₽ на задачу ценой 2₽
1. ЧТО: Гонял 5 delegate_task на DeepSeek V4 (26.88₽) вместо GPT-5 Nano (0.96₽)
2. ПОЧЕМУ: Забыл про cost-aware-orchestrator
3. ФИКС: Перед delegate_task проверять — нужна ли сложная модель
4. СКИЛЛ: ✅ cost-aware-orchestrator уже есть, триггер усилить в rules-and-bounds
5. ПАМЯТЬ: не надо
Anti-Patterns
- ❌ Разбирать каждую мелочь — опечатка в команде не требует post-mortem
- ❌ Валить всё на модель — "модель тупая". 90% проблем в подходе, не в модели
- ❌ Не сохранять — продумал, понял, забыл. Бесполезно
- ❌ Слишком много сохранять — каждый чих в скилл. Только повторяющиеся проблемы
- ❌ Обвинять себя — это не самокритика, это анализ. Без эмоций
Quick Reference
Ошибка? → Триггер? → 3-сек разбор → Фикс в скилл → Продолжить
↓
1. ЧТО пошло не так?
2. ПОЧЕМУ (корень)?
3. ЧТО делать иначе?
4. СКИЛЛ обновлён?
5. ПАМЯТЬ обновлена?