# 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` при кожному виклику, щоб наступне пробудження знало, яке завдання відновити.
