Ошибки и уроки

Фиксирую ошибки чтобы не повторять. Новые — сверху.


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с.

  • Ошибка: В конце сессии по детекции аномалий 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 мог бы остаться пустым и не отражать выполненные кроны
  • Урок: Даже в тихие дни нужно явно фиксировать отсутствие активности и факт системных проверок