Schedule в Kavor: добавьте часы к графу
Schedule делает причину активности видимой: вы выбираете время, подключаете одну цель и можете проверить каждую попытку на Canvas.
В домене Kavor Schedule — доступный источник Trigger. Он не выполняет работу и не решает, стоит ли действовать. У него только две обязанности: когда сработать и какой payload доставить.
Смысл payload задаёт цель:
- для CodingAgent это prompt;
- для Terminal это shell-команда.
Остальное принадлежит цели. Workspace, каталог, provider или shell, Git mode, permissions, Guardrails и контекст графа остаются прежними.
Schedule запускает активность; CodingAgent использует достижимый контекст, чтобы выполнить работу и объяснить результат.
Три оправданных сценария Schedule
Разбудить Maintainer вместе с контекстом
Schedule ежедневно доставляет prompt CodingAgent. Агент достигает Specification с контрактом сопровождения, Terminal для проверок, File с входными данными, Sticky Note для отчёта и Reviewer для независимой оценки.
Schedule создаёт причину, а граф предоставляет намерение, инструменты, память и совместную работу.
Выполнить видимую операционную команду
Schedule, напрямую соединённый с Terminal, доставляет проверку, скрипт или команду обслуживания. Если File также соединён с Terminal через переменную окружения, команда использует канонический путь без копирования значений между окнами.
sqlite3 app.db < "$CHECK_SQL"
Процесс остаётся в настоящем Terminal. История фиксирует наблюдаемую Kavor доставку, не выдумывая успех по тексту shell.
Создать небольшую полуавтономную систему
Schedule — Maintainer — Specification
├─ Terminal
├─ File
├─ Sticky Note
└─ Reviewer
Линии — Connections без сохраняемого направления. У Schedule одна прямая цель: Maintainer. CodingAgent использует
остальную достижимую компоненту и оставляет доказательства для решения человека.
Сначала настройте, затем запускайте часы
Новый Schedule начинается в состоянии Paused как будущее однократное выполнение. Можно написать payload, выбрать повторение, соединить цель и проверить preview до разрешения активности.
Безопасный порядок:
- добавьте Schedule на Canvas;
- напишите конкретный проверяемый payload;
- выберите однократное или повторяющееся выполнение;
- проверьте
Next occurrencesи показанную зону; - напрямую соедините один CodingAgent или Terminal;
- используйте
Resume, только когда структура готова.
Во время настройки Trigger может не иметь цели. Работающий Schedule без target Connection записывает момент как
Blocked; Run now без цели отклоняется до создания попытки.
Напишите payload, который способен завершиться
Хороший prompt указывает цель, ресурсы графа, ожидаемые доказательства и условие остановки:
Проанализируй недавние сбои CI. Выполни только нужные проверки в Terminal Checks, запиши подтверждённое резюме в Sticky Note Daily report и попроси Reviewer о независимой оценке. Не меняй код до фиксации вероятной причины и остановись, если исправление требует расширить область Specification.
Хорошая Terminal-команда явна, не интерактивна и оставляет наблюдаемый результат:
pnpm test -- --runInBand
Payload не заменяет Connections. Упоминание Sticky Note, File или Specification не даёт доступ, если Node не входит в достижимую компоненту CodingAgent.
Повторение без скрытого календаря
Редактор предлагает Once, Hourly, Daily, Weekdays, Weekly, Monthly и Custom для расширенного cron.
Presets и расширенный редактор меняют одно выражение — двух расходящихся расписаний нет. Минимальный интервал — одна
минута. Не изображайте cron-выражением повторение, которое cron не представляет точно, например «каждые две недели
от этой даты».
Kavor сохраняет явную IANA-зону и показывает будущие моменты в локальной зоне машины, отображающей Canvas. В UI зона
не редактируется: она фиксируется с host при сохранении. Всегда проверяйте preview перед Resume.
При переходе летнего времени повторяющееся локальное время срабатывает один раз. Несуществующее время переносится на первый допустимый локальный момент. Месячный preset пропускает отсутствующий день: 31-е не выполняется в феврале.
Pause, Resume и Run now — разные действия
- Pause немедленно останавливает новые моменты; пауза не создаёт попыток или
Missed. - Resume рассматривает только будущие моменты и требует валидный payload; однократный момент также должен быть в будущем.
- Run now создаёт отдельную ручную попытку, работает на паузе и не сдвигает следующее повторение.
Run now проверяет payload и цель до запуска часов. Это не автоматический retry и он не меняет состояние Paused или
Running. После Once Schedule возвращается в Paused; история и Run now остаются.
Что происходит в назначенное время
Kavor сохраняет долговечную попытку и согласует доставку с уже принятыми целью сообщениями. До результата возможны
состояния Pending и Delivering.
- Completed — Kavor наблюдал завершение;
- Needs attention — CodingAgent запросил вмешательство и ещё может завершиться;
- Fired — доставка произошла, но путь не даёт наблюдаемого завершения;
- Failed — произошёл наблюдаемый сбой;
- Interrupted — доставка началась, но закончилась без надёжного результата;
- Blocked — цель или Workspace были недоступны;
- Missed — runtime не смог занять момент;
- Coalesced — единственный pending slot цели уже занимала другая попытка.
Плановое время не доказывает выполнение. Проверьте последнее состояние Node и откройте историю: nominal time, delivery, result и diagnostic.
Когда машина спит или Kavor закрыт
Schedule зависит от локального runtime: Kavor должен работать, машина — не спать, пользователь — быть аутентифицирован, а сессия цели — активна.
Если во время недоступности прошло несколько моментов, Kavor записывает только последний Missed для этого Schedule.
Он не создаёт тысячи строк и неожиданно не запускает старую работу после возвращения. UI показывает Missed и
предлагает явное действие, эквивалентное Run now.
Автоматического catch-up и retry внешних эффектов нет.
Когда цель уже занята
Во время работы цели Schedule хранит не более одной pending-попытки. Новые моменты при занятом slot получают
Coalesced и позже не доставляются.
Если задача может длиться дольше интервала, увеличьте его или заставьте цель идемпотентно сверять текущее состояние.
Ограничения, которые нужно учитывать
- у Schedule не более одной прямой цели: CodingAgent или Terminal;
- он не запускает намеренно закрытую сессию;
- не расширяет граф, permissions или Guardrails цели;
- не заменяет acceptance criteria и не оценивает правильность результата;
- делает не более одной автоматической доставки на зарегистрированную попытку;
- не обещает exactly-once для внешних эффектов;
- не ставит все
MissedиCoalescedв очередь на потом.
Если нужны fan-out, поэтапное согласование, compensation или транзакционная оркестрация, моделируйте ответственность в графе и оставляйте решение человека явным.
Checklist перед Resume
- payload содержит цель, доказательства и условие остановки?
Next occurrencesсоответствует ожиданиям?- показанная зона верна?
- существует ровно одна target Connection?
- сессия цели должна оставаться активной?
- в графе только нужные контекст и capabilities?
- повтор безопасен, если внешний эффект уже произошёл?
- известно, где смотреть результат и историю?
Дальше
- Проверьте матрицу Connections.
- Узнайте, как CodingAgents видят и строят Canvas.
- Используйте CodingAgents и роли, чтобы разделить сопровождение, ревью и решение.