Инструкция: Узнать и запомнить часовой пояс пользователя

Trigger:

  • Любая попытка поставить cron, напоминание, утренний брифинг
  • Пользователь говорит «в 9 утра», «после обеда», «вечером»
  • Первая настройка агента
  • Пользователь упомянул другой город/переезд

Зачем

Без часового пояса cron ставится в UTC контейнера. Напоминание «в 9:00» придёт пользователю в Москве в 12:00, в Калифорнии в 1:00 ночи. Это самая частая невидимая ошибка агентских напоминалок.

Правило

Никогда не ставь cron, не зная часового пояса. Если поставил с предположением — сразу проверь у пользователя.

Где хранить

Один файл: /opt/data/secondbrain/user_settings.md

---
timezone: Europe/Moscow
timezone_set_at: 2026-05-22
locale: ru
---

timezone — в формате IANA (Europe/Moscow, Asia/Yekaterinburg, America/Los_Angeles).

Шаги

1. Проверь, известна ли таймзона

read_file /opt/data/secondbrain/user_settings.md
  • Если файла нет → шаг 2 (спросить)
  • Если есть и timezone: заполнен → используй его, шаги 2–4 пропусти
  • Если файл есть, но timezone: пустой/устарел → шаг 2

2. Спроси у пользователя

Короткий, не настойчивый вопрос:

«Чтобы напоминания приходили вовремя — в каком часовом поясе ты сейчас? Можешь сказать город (Москва, Калининград, Алматы) или сразу зону (Europe/Moscow).»

Если пользователь говорит «не важно» или «UTC». Не спорь, но зафиксируй явно timezone: UTC чтобы потом не переспрашивать.

Если пользователь много путешествует. Спроси: «Где обычно живёшь? К нему привязываю напоминания. Когда переедешь — скажи, поправлю».

3. Конвертируй город в IANA-зону

Сказал пользователь Запиши
Москва, СПб, Краснодар, Сочи Europe/Moscow
Калининград Europe/Kaliningrad
Самара Europe/Samara
Екатеринбург, Челябинск, Уфа Asia/Yekaterinburg
Новосибирск, Омск Asia/Novosibirsk
Красноярск Asia/Krasnoyarsk
Иркутск Asia/Irkutsk
Якутск Asia/Yakutsk
Владивосток Asia/Vladivostok
Магадан, Сахалин Asia/Magadan
Камчатка Asia/Kamchatka
Алматы, Астана Asia/Almaty
Минск Europe/Minsk
Киев Europe/Kyiv
Тбилиси, Ереван Asia/Tbilisi / Asia/Yerevan
Стамбул Europe/Istanbul
Дубай Asia/Dubai
Берлин, Париж, Прага Europe/Berlin
Лондон Europe/London
Нью-Йорк America/New_York
Лос-Анджелес, СФ America/Los_Angeles
Бангкок Asia/Bangkok
Шанхай, Пекин Asia/Shanghai

Если города в таблице нет — ищи ближайший или спроси точнее: «Ближе к [X] или [Y] по времени?»

4. Создай / обнови user_settings.md

---
timezone: Europe/Moscow
timezone_set_at: 2026-05-22
locale: ru
---

# Настройки пользователя

Сохранены агентом из ответов пользователя. Меняй когда переезжаешь.

- timezone — IANA зона для всех cron-задач
- locale — язык для напоминаний (`ru` / `en`)

5. Подтверди понимание

Коротко:

«Запомнил: ты в Europe/Moscow. Все напоминания буду ставить по местному. Переедешь — скажи.»

Не на каждый cron — только при первой записи или смене.

6. Используй при создании cron

В любом cron-вызове добавляй timezone-флаг. Пример:

/cron create "Утренний брифинг" --schedule "0 9 * * *" --timezone "Europe/Moscow"

Если у /cron нет флага --timezone — пиши время в cron уже сконвертированным в UTC и в описании пометь оригинальное местное:

/cron create "Утренний брифинг (9:00 MSK = 6:00 UTC)" --schedule "0 6 * * *"

7. Залогируй

В дневной заметке:

HH:MM user: <триггер-запрос>
Настроил timezone: Europe/Moscow. См. [[user_settings]].

Когда переспросить

  • Пользователь упомянул что переехал
  • Cron сработал не вовремя — пользователь жалуется
  • Прошёл год с timezone_set_at — лёгкая проверка «всё ещё [Europe/Moscow]?»

Что НЕ делать

  • ❌ Не угадывать таймзону по IP (агент в контейнере, IP не имеет отношения к пользователю)
  • ❌ Не ставить Europe/Moscow по умолчанию для русскоязычных — Россия в 11 зонах
  • ❌ Не использовать UTC «по-тихому» — это вечный источник «почему оно пришло в 4 утра»
  • ❌ Не переспрашивать на каждом cron — один раз сохранил, дальше читай файл

Кейсы

Кейс 1: первая постановка крона
Пользователь: «напомни мне завтра в 9:00 позвонить маме».
Агент: «В каком ты часовом поясе? Москва?» → ответ → user_settings.md → cron.

Кейс 2: уже знаем таймзону
user_settings.md есть, timezone заполнен → агент сразу ставит cron в правильной зоне, не переспрашивает.

Кейс 3: переезд
Пользователь: «я переехал в Алматы».
Агент: «Перенастрою на Asia/Almaty. Существующие напоминания тоже сдвинуть на новое время?»

Кейс 4: групповой чат
В групповом чате таймзона может быть у разных участников разной. Сохраняй per-user, не общую. Файл user_settings_<handle>.md.