Правило: пинг когда человек пропал
Trigger: сработал крон, поставленный через instructions/setup_idle_check_in (по умолчанию ежедневно в 13:00).
Как поступать
-
Прочитай состояние из
_remind_state.md(в корне vault). -
Если
silent_untilв будущем — выйти молча. Месяц молчания после серии безответных пингов. -
Найди последний daily в
daily/— самая свежая дата файла. -
Если daily обновлялась сегодня или вчера — очистить
_remind_state.mdк дефолту и выйти молча. Это происходит именно здесь, в момент срабатывания крона — не реактивно где-то ещё. Дефолт:# _remind_state - last_daily_seen: <дата найденного свежего daily> - last_ping_at: null - escalation_step: 0 - silent_until: nullЧеловек активен, прошлая серия эскалации больше не релевантна — стираем её полностью.
-
Иначе — решить, пора ли пинговать. Сверь сегодняшнюю дату с
last_ping_atиescalation_step:escalation_step Можно пинговать если с last_ping_at прошло 0 (ещё не пинговал) сразу — daily не обновлялась 1+ суток 1 (был первый пинг) 2+ дня 2 (был второй) 5+ дней 3 (был третий) замолчать на месяц ( silent_until = today + 30d)Если ещё не пора — выйти молча.
-
Найди зацепку из ночного отчёта. Загляни в
capabilities.md, секция «Доступно в школе» — её ночью обновляет instructions/cron_school_review на основе вчерашних задач. Если там есть свежая находка — выбери одну, самую релевантную последним темам владельца, чтобы упомянуть её в первом пинге. Если пусто — без зацепки, просто открытый вопрос. -
Сформируй пинг — открытый и конкретный, без «Вы здесь?». Все сообщения на «Вы». В групповом чате — начни с @owner (из
_remind_state.md), чтобы пинг адресно прилетал владельцу, а не всем участникам.-
Step 1 (первый — обязательно с дисклеймером):
«[@owner если группа] Это автоматическая напоминалка — крон срабатывает каждый день в HH:MM (сейчас у меня TZ-NAME, HH:MM). Я молчу, пока Вы активно пишете в daily; пингую, если daily не обновлялась сутки+.
Если время неудобное — скажите, переставлю. Если совсем не нужно — отключу:
/cron remove idle_check_in.Кстати, в ночном обзоре школы нашёл
school:insights/НАЗВАНИЕ— похоже, пригодится для [тема из вчерашних задач]. Рассказать?А по делу: на чём сложном сейчас застряли — могу помочь разобрать?»
Подставь реальное расписание из своего крона, текущее системное время с таймзоной и одну находку из шага 6 (если есть — иначе строку про школу пропусти). Без дисклеймера пинг воспримется как «агент сам ожил» и не будет ясно, как им управлять.
-
Step 2 (через 2 дня): «[@owner если группа] Я здесь. Если затык — напишите, посмотрим вместе.» — можно добавить зацепку из школы, если шаг 6 нашёл что-то новое со вчера.
-
Step 3 (через 5 дней): «[@owner если группа] Может, что-то нужное? Помолчу на месяц, если не зайдёте.»
-
-
Отправь пинг через канал общения с владельцем (мессенджер, email, что настроено).
-
Обнови
_remind_state.md:last_ping_at: сейчасescalation_step: +1- Если step стал 4 →
silent_until: сегодня + 30 дней,escalation_step: 3 (заморозили)
-
Залогируй в daily:
[[behaviors/idle_check_in]]— отправлен пинг (step N, зацепка из школы: была / не было) / пропущен (причина).
Сброс состояния
Сброс — единственный механизм очистки _remind_state.md, и происходит только когда сработал крон (шаг 4 выше). Не реактивно при ответе человека, не по таймеру, не при другом событии. Это держит логику в одном месте: «крон проснулся → посмотрел daily → решил что делать со state».
Серия эскалаций начинается заново только после нового периода тишины.
Не делать
- Не пинговать чаще раза в сутки — даже если в daily пусто несколько раз подряд, между пингами должен пройти интервал из таблицы
- Не цитировать конкретные старые задачи («Вы обещали доделать X») — это давит, а не помогает. Открытый вопрос работает лучше
- Не пинговать вне поставленного времени — крон в 13:00 это часть контракта с владельцем
- Не молчать про пропуск — всегда писать в daily причину «пропустил пинг: daily обновлялась вчера»
- Не обращаться в групповом чате ко всем сразу или без @mention — пинг прилетит всем участникам и будет восприниматься как спам
Когда отключать совсем
Если владелец ответил «отстаньте» или дважды проигнорировал с явным раздражением — снять крон (/cron remove idle_check_in) и удалить _remind_state.md. Лучше тишина, чем токсичность.
В группе сигналом «отключай» считается также реакция любого участника с явным негативом на пинг (например «спам, выключите этого бота») — снять без переспросов, владелец потом может включить заново.
Связано: instructions/setup_idle_check_in, insights/budgets_and_stopping (эскалация и точка молчания), behaviors/risky_actions (пинг это коммуникация наружу — формат фиксированный, никаких импровизаций)
Источник: sources/anthropic_blog (Effective Harnesses for Long-Running Agents — termination/escalation rules)