| name | cron |
| description | Управление собственным расписанием — напоминания, рутины, периодические задачи. Триггеры — "напомни", "каждый день/час/утро", "по расписанию", "schedule", "reminder", "отмени напоминание", "что запланировано". |
Cron: расписания и напоминания
Ты управляешь своим расписанием сам — через CLI, который редактирует
jobs.json. Бот перечитывает файл каждую минуту и запускает задания в
отдельной cron-сессии. Результат запуска уходит пользователю в Telegram.
Команды
Рабочая директория — vault, проект уровнем выше (--project ..):
Таймзона. Время в --cron — местное; ВСЕГДА передавай --tz зоной
ПОЛЬЗОВАТЕЛЯ. Никогда не хардкодь чужую зону. В примерах ниже стоит
"${TZ:-UTC}" — это РАБОЧЕЕ значение: shell подставит env TZ (зона из
конфигурации пользователя), а если она не задана — UTC. Чтобы зафиксировать
конкретную зону, замени на IANA-имя (напр. Europe/Moscow). <offset> в
--at — UTC-смещение зоны (+05:00, +03:00, +00:00), его подставляешь
при вычислении времени.
uv run --project .. python -m d_brain.cron add \
--prompt "Собери утреннюю сводку: вчерашний daily, goals недели" \
--cron "0 9 * * *" --tz "${TZ:-UTC}" --id morning-brief
uv run --project .. python -m d_brain.cron add \
--prompt "Проверь inbox в vault, новое разложи по карточкам. Если пусто — начни ответ с [SILENT]" \
--every 3600
uv run --project .. python -m d_brain.cron add \
--prompt "Напомни про звонок с подрядчиком" \
--at "2026-06-12T18:00:00<offset>" --delete-after-run
uv run --project .. python -m d_brain.cron list
uv run --project .. python -m d_brain.cron remove <id>
uv run --project .. python -m d_brain.cron enable <id>
Ошибка → exit 2 и текст в stderr: прочитай и исправь аргументы.
Перевод естественного языка в расписание
| Просьба | Аргументы |
|---|
| «каждый день в 9» | --cron "0 9 * * *" --tz "${TZ:-UTC}" |
| «по будням в 18:30» | --cron "30 18 * * 1-5" --tz "${TZ:-UTC}" |
| «каждое воскресенье» | --cron "0 10 * * 0" --tz "${TZ:-UTC}" |
| «каждый час» | --every 3600 |
| «каждые 15 минут» | --every 900 |
| «через 20 минут» | вычисли ISO-время: now+20m → --at <ISO> --delete-after-run |
| «завтра в 15» | --at "<завтра>T15:00:00<offset>" --delete-after-run |
Правила
- Никогда не эмулируй расписание через
sleep, циклы в Bash или
фоновые процессы — только этот CLI.
- Разовое («напомни…») — всегда
--at + --delete-after-run.
--at пиши со смещением зоны ПОЛЬЗОВАТЕЛЯ (<offset>, напр. +05:00);
naive-время (без смещения) трактуется в --tz, по умолчанию UTC.
- Prompt задания — самодостаточный: исполняет отдельная сессия без
контекста текущего разговора. Включай в prompt всё нужное (пути, имена,
критерии).
- Мониторинговым заданиям («проверь и скажи, если что-то новое») вели в
prompt: «если ничего важного — начни ответ строкой [SILENT]» — тогда
пользователь не получит пустой спам.
- Recursion guard: если текущий запрос сам помечен
[CRON JOB ...] —
ты внутри планового запуска; создавать/менять/удалять задания ЗАПРЕЩЕНО.
- После add/remove подтверди пользователю результат строкой из
list
(id, расписание, next run).