Ошибки и уроки
Фиксирую ошибки чтобы не повторять. Новые — сверху.
2026-06-29 | Перезапись /etc/caddy/Caddyfile целиком вместо patch/diff (потеря блока assistai)
- Ошибка: Агент OpenClaw (Дедус) при настройке MemOS 24–25.06 переписал
/etc/caddy/Caddyfileцеликом (cat >-стиль) вместо точечного дополнения — блокassistai.unf86.orgисчез, остался толькоmemos.unf86.org. - Последствие: Веб-консоль OpenClaw на
https://assistai.unf86.org/стала недоступна (tlsv1 alert internal error, HTTP 308 на нерабочий HTTPS); инцидент обнаружен только 29.06 ~12:10 при попытке пользователя зайти в консоль. Фикс: восстановлен Caddyfile с обоими блоками,caddy validate+systemctl reload caddy, проверка снаружи — assistai HTTP 200, memos HTTP 404 (норма). - Урок: Правки конфигов reverse-proxy (Caddy/Nginx) — только через patch/diff, никогда не перезапись файла целиком; после правки обязательно проверять снаружи все хосты, а не только тот, что менялся. Зафиксировать правило в AGENTS.md OpenClaw. Аналогично правилу про сервисные правки Dash (edit → reload → live check).
2026-06-28 | Race condition в браузерном парсинге балансов (Claudexia $0.00)
- Ошибка: Скрипт
llm_provider_balances.pyпарсил дашборд Claudexia (SPA) через 4с послеbrowser-ak open, но баланс$35.80отрисовывался позже — в отчёт попадали нули. - Последствие: Утренний отчёт показывал
$0.00при реальном$35.80; пользователь обратил внимание; потребовалась диагностика и доработка. - Урок: Для SPA-источников (browser-ak) фиксированная задержка ненадёжна — нужен либо polling до появления значения, либо страховка в виде детектора аномалий с retry. Реализовано: state-базлайн + детектор (≤0 / не active / ошибка / падение 50%+) + retry 3×8с.
2026-06-28 | Destructive-команда rm заблокирована без consent
- Ошибка: В конце сессии по детекции аномалий
rm -f /tmp/test_anomaly.pyбыл заблокирован — destructive-команда без явного подтверждения пользователя. - Последствие: Очистка не выполнена (файл оставлен в /tmp, самоочистится); лишний эпизод блокировки в конце сессии.
- Урок:
rm/перезапись/удаление — destructive-действия, требующие consent; для cleanup тестовых артефактов в /tmp либо получать разрешение заранее, либо не инициировать rm в финальной части сессии (файлы самоочистятся).
2026-06-23 | Код поправлен, а сервисный restart/live-check сначала не доведены
- Ошибка: В сессии по Hermes Dash правки в коде были внесены раньше, чем сразу выполнены restart сервиса и проверка живого URL.
- Последствие: Пользователь некоторое время видел старое поведение UI, а задача потребовала лишней итерации и отдельного дожима.
- Урок: Для сервисных изменений критерий завершения должен быть жёстким:
edit → restart → live check, без самоуспокоения на уровне файловой правки.
2026-06-06 | Служебная синхронизация без пользовательской активности
- Решение: В daily за 2026-06-06 зафиксировать отсутствие пользовательских сессий, но отметить выполнение системных проверок/кронов и пересборку Quartz.
- Почему: Даже при нулевой пользовательской активности vault-контур должен оставлять след выполнения.
- Последствие: Состояние working-context и daily синхронизировано; журнал не пустой.
2026-06-01 | Не выполнен полный restart gateway без подтверждения
- Ошибка: По сессии OpenClaw/Telegram был найден сбойный Telegram-канал, но полный
systemctl restart openclaw-gatewayне был доведён до конца из-за блокировки вмешательства. - Последствие: Проблема Telegram-канала осталась без окончательного recovery в рамках этой сессии.
- Урок: Если нужен full restart, подтверждение на вмешательство должно быть получено заранее; иначе работать точечно по каналу.
2026-05-31 | Риск пустого daily без служебной фиксации
- Ошибка: В тихий день daily мог бы остаться без записи, если не зафиксировать отсутствие активности явно.
- Последствие: Потеря следа выполнения кронов и синхронизации контекста.
- Урок: Даже без пользовательских сессий daily должен содержать служебную запись и ссылку на системные проверки.
2026-05-26 | Ошибка в роли контрагента в реестре счетов
- Ошибка: ООО «Ромис-технология» было ошибочно воспринято как поставщик.
- Последствие: Риск неверной строки в реестре счетов и путаницы в статусах.
- Урок: В реестре счетов фиксировать по документу: поставщик — юрлицо из счета, заказчик/покупатель — отдельным полем.
2026-05-19 | Долгая сессия с компрессией и сбоем auxiliary fallback
- Ошибка: Подготовка КП по
ТЗ прокладка кабелей.pdfушла в долгую компрессию, а auxiliary session_search/fallback контур несколько раз отваливался - Последствие: Ответ затянулся на ~25 минут, сессия стала менее предсказуемой по времени и нагрузке
- Урок: Для длинных пользовательских сессий нужен рабочий fallback-контур; компрессию и поиск надо держать короткими итерациями и раньше резать рискованные ветки
2026-05-12 | Слишком широкий набор источников правды по model routing
- Ошибка: В контуре Hermes/OpenClaw/OmniRoute одновременно фигурирует несколько пространств имён моделей и провайдеров
- Последствие: Риск дрейфа алиасов, конфликтов приоритетов и непредсказуемого выбора модели
- Урок: Канонический список model IDs and provider names должен быть один, а все остальные — только производные алиасы
2026-05-11 | Секреты светятся в логах и чатах
- Ошибка: Gateway запущен с
HERMES_REDACT_SECRETS=false - Последствие: API keys и токены могут попадать в output, session JSON и логи в открытом виде
- Урок: На рабочих контурах redaction должна быть включена по умолчанию; отключать только осознанно и кратковременно
2026-05-11 | Длинная диагностика без жёстких отсечек
- Ошибка: Проверка Omniroute частично ушла в длинные зависающие шаги с таймаутами, restart’ами и потерей времени
- Последствие: Пользователь прямо указал, что агент “занят был какой-то херней целый час”; часть действий пришлось прерывать
- Урок: Для инфраструктурной диагностики идти короткими итерациями: одна гипотеза → одна проверка → один вывод; long-running шаги только через background + явный критерий готовности
2026-05-16 | Quartz build ещё не выполнен на момент записи daily
- Ошибка: В daily journal зафиксировали служебную запись и обновили working context до фактического rebuild Quartz
- Последствие: Между журналом и состоянием wiki мог появиться краткий рассинхрон
- Урок: Сначала build/verify, потом финальная фиксация статуса в дневнике и context
2026-05-11 | Вспомогательная модель не настроена
- Ошибка: Auxiliary provider недоступен (
no provider available/No auxiliary model available for session summarization) - Последствие: Ломаются summarization, compression и memory flush, падает качество долгих сессий и журналирования
- Урок: Auxiliary/fallback контур нужно считать обязательной частью прод-конфига, а не опцией “потом доделаем”
2026-05-21 | Пользовательских сессий не зафиксировано
- Ошибка: За день не было новых пользовательских сессий, но журнал и контекст требовали синхронизации
- Последствие: Без служебной записи daily мог бы остаться пустым и не отражать выполненные кроны
- Урок: Даже в тихие дни нужно явно фиксировать отсутствие активности и факт системных проверок
2026-05-20 | Пользовательских сессий не зафиксировано
- Ошибка: За день не было новых пользовательских сессий, но журнал и контекст требовали синхронизации
- Последствие: Без служебной записи daily мог бы остаться пустым и не отражать выполненные кроны
- Урок: Даже в тихие дни нужно явно фиксировать отсутствие активности и факт системных проверок