Коротко
- Восстановление охватывает принятые турны в очереди и на этапе подготовки.
- Запись восстановления создаётся до отмены работы в очереди.
- Бюджет обновляется после запуска настоящего backend-турна.
Сверено с документацией OpenClaw 2026.10.6, 22 октября 2026.
В 2026.10.6 в него входят и принятые турны, которые ещё ждут в очереди или готовятся к запуску. Запись восстановления Gateway создаёт до того, как отменить поставленную в очередь работу.
Что изменилось в бюджете восстановления
Три попытки, не сумевшие запустить backend-турн, исчерпывают бюджет восстановления. Как только настоящий backend-турн стартовал, бюджет обновляется. Последующий рестарт Gateway не расходует прежний запас.
Если полномочия отправителя делегированного турна не удаётся восстановить, автоматическое восстановление останавливается с записанной причиной. Сохранённого делегирования самого по себе недостаточно, чтобы повторить турн после рестарта.
When a Gateway restart interrupts an admitted turn, including one still waiting
in the queue or preparing to execute, OpenClaw tries to continue the existing
session automatically. Shutdown records recovery before canceling queued work.
Three attempts that fail to start a backend turn exhaust the recovery budget.
Once a real backend turn starts, the budget refreshes, so a later Gateway
restart does not consume the old allowance.
Когда упавший вызов инструмента не блокирует продолжение
Встроенный исполнитель может один раз продолжить работу с текущим транскриптом. Это разрешено, когда провайдер отклонил неверный вызов инструмента до передачи, а предыдущие инструменты уже отработали.
Продолжение разрешено, если каждая прежняя ошибка подтверждает, что выполнение так и не началось. Результат ошибки уже находится перед отклонённым ответом в текущем турне. Само продолжение не повторяет исходную задачу и не увеличивает бюджет повторных попыток.
Ошибки, которые могли оставить побочные эффекты, незавершённые инструменты и асинхронная работа по-прежнему блокируют продолжение.
Как учитывать незавершённые вызовы Code Mode
Вызовы Code Mode exec и wait остаются активной работой до завершения. Сюда входят вызовы awaitResults: true, которые ждут вложенную работу. Завершение вложенного инструмента не завершает внешний вызов.
Действуют обычный лимит восстановления заблокированных инструментов и принудительные сроки выполнения. После завершения внешнего вызова встроенный запуск, переставший продвигаться, остаётся доступным для восстановления.
Где ломается и когда не применять
Таймаут во время выполнения инструмента не превращает незавершённый вызов в приостановленный запуск, если нет финального ответа или принятого продолжения. Метка сбоя сжатия контекста не превращает такой таймаут в приостановленный запуск. Предупреждения инструментов и ход рассуждения не считаются завершённым ответом.
Тихие дочерние турны и дочерние турны в режиме collect не подавляют таймаут, если ответом владеет другое продолжение. Само принятие дочернего турна не гарантирует доставку ответа. Сообщение о прогрессе или сообщение в другую беседу не завершает текущий ответ. Умышленные уступки сохраняют прежнюю семантику принятой работы. Медиа инструмента остаётся в результате рядом с таймаутом.
Ручная очистка и последующие автоматические проверки с ограничением частоты повторяют попытку чекпойнта. Ранее заблокированное наблюдение не может удерживать очистку бесконечно, если другое подключение завершило чекпойнт без публикации результата. Очистка по-прежнему требует, чтобы владелец чекпойнта записал завершение после ожидающей работы. Каждое удаление или vacuum-коммит SQLite снова требует нового подтверждения перед дальнейшей очисткой, поэтому ни прошедшее время, ни изменение бюджета, ни корректировка системных часов не снимают это ограничение. Обычные периодические чекпойнты продолжаются: опубликованное завершение разрешает следующей активности повторить попытку сразу, иначе действует обычный интервал проверки.