# ScheduleWakeup

Планирует, когда возобновить работу в динамическом режиме `/loop`. Инструмент позволяет Claude самостоятельно управлять темпом итераций задачи, засыпая на выбранный интервал, а затем снова запускаясь с тем же промптом цикла.

## Когда использовать

- При самостоятельном управлении темпом динамической задачи `/loop`, где интервал итераций зависит от состояния работы, а не от фиксированного таймера
- При ожидании завершения длительной сборки, развёртывания или запуска тестов перед проверкой результатов
- При вставке холостых тиков между итерациями, когда нет конкретного сигнала для мониторинга в данный момент
- При запуске автономного цикла без промпта пользователя — передать буквальный sentinel `<<autonomous-loop-dynamic>>` как `prompt`
- При опросе процесса, состояние которого вот-вот изменится (использовать короткую задержку для поддержания кэша в тёплом состоянии)

## Параметры

- `delaySeconds` (число, обязательное): Секунды до возобновления. Среда выполнения автоматически ограничивает значение до `[60, 3600]`, поэтому ручное ограничение не требуется.
- `reason` (строка, обязательная): Одно короткое предложение, объясняющее выбранную задержку. Отображается пользователю и записывается в телеметрию. Будьте конкретны — «проверяю длительную сборку bun» полезнее, чем «ожидание».
- `prompt` (строка, обязательная): Входные данные `/loop` для запуска при пробуждении. Передавать ту же строку в каждом ходу, чтобы следующий запуск повторил задачу. Для автономного цикла без промпта пользователя передать буквальный sentinel `<<autonomous-loop-dynamic>>`.

## Примеры

### Пример 1: короткая задержка для повторной проверки быстро меняющегося сигнала (поддержание кэша в тёплом состоянии)

Сборка только что запущена и обычно завершается за две-три минуты.

```json
{
  "delaySeconds": 120,
  "reason": "проверяю сборку bun, ожидаемое завершение через ~2 мин",
  "prompt": "проверить статус сборки и сообщить об ошибках"
}
```

120 секунд сохраняет контекст разговора в кэше промптов Anthropic (TTL 5 мин), поэтому следующее пробуждение выполняется быстрее и дешевле.

### Пример 2: длинный холостой тик (принять промах кэша, амортизировать на более длительное ожидание)

Миграция базы данных выполняется и обычно занимает 20–40 минут.

```json
{
  "delaySeconds": 1200,
  "reason": "миграция обычно занимает 20–40 мин; проверяю через 20 мин",
  "prompt": "проверить статус миграции и продолжить если завершена"
}
```

При пробуждении кэш будет холодным, но 20-минутное ожидание с лихвой амортизирует стоимость одного промаха. Опрос каждые 5 минут платил бы ту же цену промаха 4 раза без какой-либо выгоды.

## Примечания

- **TTL кэша 5 минут**: Кэш промптов Anthropic истекает через 300 секунд. Задержки менее 300 с сохраняют контекст тёплым; задержки более 300 с приводят к промаху кэша при следующем пробуждении.
- **Избегайте ровно 300 с**: Это худший вариант из обоих миров — вы платите за промах кэша, не получая при этом значительно более длительного ожидания. Либо снизьте до 270 с (сохраните тёплый кэш), либо зафиксируйте 1200 с или больше (один промах обеспечивает гораздо более длительное ожидание).
- **Значение по умолчанию для холостых тиков**: Когда нет конкретного сигнала для мониторинга, используйте **1200–1800 с** (20–30 мин). Это позволяет циклу периодически проверять, не сжигая кэш 12 раз в час без причины.
- **Автоматическое ограничение**: Среда выполнения ограничивает `delaySeconds` до `[60, 3600]`. Значения ниже 60 становятся 60; значения выше 3600 становятся 3600. Не нужно самостоятельно обрабатывать эти границы.
- **Пропустить вызов для завершения цикла**: Если вы намерены остановить итерации, не вызывайте ScheduleWakeup. Простое отсутствие вызова завершает цикл.
- **Передавать тот же `prompt` в каждом ходу**: Поле `prompt` должно содержать исходную инструкцию `/loop` при каждом вызове, чтобы следующее пробуждение знало, какую задачу возобновить.
