Org-mode. Пакет org-window-habit
Org-mode. Пакет org-window-habit.
Содержание
1 Общая информация
- Репозиторий: https://github.com/colonelpanic8/org-window-habit
- Расширение возможностей работы с Habit.
- Основная идея — введение окна привычки.
- Вместо вопроса «Вы это сделали сегодня?», она спрашивает «Вы сделали это достаточное количество раз в течение этого временного окна?»
2 Концепция окна привычки
Вы определяете:
- Длительность окна: насколько далеко назад следует учитывать завершенные операции (например, 7 дней, 1 месяц).
- Необходимое количество повторений: сколько завершений требуется в течение этого временного промежутка (например, 5 раз).
- Интервал оценки: как часто следует проводить повторную оценку, т.е. шаг для скользящего окна (например, ежедневно).
Продолжительность окна определяет, какой объем истории учитывается для достижения вашей цели.
Интервал оценки определяет, насколько детально окно сдвигается вперед.
- Например, при 7-дневном окне и 1-дневном интервале оценки вы получаете новую оценку каждый день, которая охватывает предыдущие 7 дней.
- Если бы интервал оценки также составлял 7 дней, окно сдвигалось бы еженедельно, а не сдвигалось бы ежедневно.
2.1 Пример
- Предположим, вы хотите писать 8 постов в блог в месяц, но не хотите ежедневных напоминаний — достаточно еженедельной проверки.
- Вы устанавливаете период в 1 месяц с интервалом оценки в 1 неделю.
- Каждую неделю система оценивает, движетесь ли вы к своей месячной цели, и привычка появляется в вашем расписании только через неделю.
2.2 Привязка интервала оценки
Для интервалов фиксированной длины (дни, часы) границы оценки привязаны ко времени начала вашей привычки, а не к произвольным календарным границам:
- Привычка с 3-дневным интервалом оценки, начавшаяся 10 января, будет иметь периоды: 10-13 января, 13-16 января, 16-19 января и т. д.
- Другая привычка с тем же 3-дневным интервалом, но начинающаяся 11 января, будет иметь другие периоды: 11-14 января, 14-17 января, 17-20 января и т. д.
Библиотека отслеживает выполнение заданий и рассчитывает коэффициент соответствия — движетесь ли вы к своей цели?
Когда вы выполняете привычку, org-window-habit автоматически переносит её на следующую дату, когда её выполнение потребуется для поддержания соответствия привычкам, вместо использования фиксированного интервала повторения.
2.3 Пример: Еженедельные упражнения
Вы хотите заниматься спортом 5 раз в неделю:
* TODO Exercise SCHEDULED: <2024-01-15 Mon .+1d> :PROPERTIES: :STYLE: habit :OWH_CONFIG: (:window-specs ((:duration (:days 7) :repetitions 5))) :END:Если вы занимаетесь спортом в понедельник, вторник, среду, четверг и пятницу, вы достигли своей цели на неделю.
Суббота и воскресенье будут отображаться как «необязательные» — заниматься спортом необязательно, но вы можете, если хотите создать запас энергии.
Если вы занимались спортом всего 3 раза на этой неделе, и сегодня пятница, график показывает, что вы отстаёте, и привычка, по-видимому, требует завершения.
3 Ключи конфигурации
| Ключ | Необходимый | По умолчанию | Описание |
|---|---|---|---|
:window-specs | Да | \- | Список технических характеристик окон |
:assessment-interval | Нет | (:days 1) | Как часто следует проводить переоценку |
:reschedule-interval | Нет | (:days 1) | Минимальный срок после завершения работ, после которого можно перенести их на другое время. |
:reschedule-threshold | Нет | 1.0 | Пороговое значение коэффициента соответствия для переноса сроков |
:max-reps-per-interval | Нет | 1 | Максимальное количество завершенных заданий за интервал оценки. |
:only-days | Нет | (все дни) | Ограничить определенными днями (например, (:monday :friday) ) |
:from | Нет | (неограниченный) | Игнорировать завершенные проекты до этой даты |
3.1 Формат спецификации окна
(:duration (:days 7) :repetitions 5)
(:duration (:days 7) :repetitions 5 :value 1.0) ; with explicit weight
3.2 Формат продолжительности
- Продолжительность окон можно указать следующим образом:
- Сокращенные строки:
1d(1 день),1w(1 неделя),1m(1 месяц),2w(2 недели). - Свойства:
(:days 7),(:weeks 1),(:months 1)или комбинации, такие как(:days 1 :hours 12).
- Сокращенные строки:
3.2.1 Недельное выравнивание
1wпреобразуется в(:days 7), который не привязан к конкретному дню недели.Для формирования привычек, привязанных к неделе, используйте тип продолжительности
:weeksс необязательным параметром:start:(:weeks 1): выравнивание по понедельникам (по умолчанию);(:weeks 1 :start :sunday): соответствует воскресенью;(:weeks 1 :start :saturday): соответствует субботе.
Доступные дни :
:sunday,:monday,:tuesday,:wednesday,:thursday,:friday,:saturday.
3.2.2 Ограничения по дням недели
Некоторые привычки имеют смысл только в определенные дни недели.
Например, вы можете ходить в спортзал по понедельникам, средам и пятницам или готовить еду заранее только по выходным.
:only-daysвOWH_CONFIGограничивает количество дней, которые засчитываются в вашу привычку.Когда
:only-daysустановлено:- Завершения тренировок в запрещенные дни не учитываются при подсчете достижения цели.
- При автоматическом переносе будет назначен следующий разрешенный день.
Формат представляет собой список символов дня недели:
(:monday :wednesday :friday)
4 Правила использования
4.1 Формирование привычки
Создайте заголовок TODO с помощью
SCHEDULEDилиDEADLINEлюбой из репитеров (значение репитера не имеет значения — org-window-habit использует собственную логику перепланирования, но репитер должен присутствовать)Добавлять
:STYLE: habitпод:PROPERTIES:Добавить
OWH_CONFIGсвойство с вашей конфигурацией привычекРекомендуемый способ настройки привычек работы с окнами — использование одного свойства, содержащего все параметры привычек:
* TODO Exercise SCHEDULED: <2024-01-15 Mon .+1d> :PROPERTIES: :STYLE: habit :OWH_CONFIG: (:window-specs ((:duration (:days 7) :repetitions 5))) :END:Это определяет привычку, требующую 5 выполнений в течение 7-дневного периода.
Можно задать дополнительные опции:
* TODO Exercise SCHEDULED: <2024-01-15 Mon .+1d> :PROPERTIES: :STYLE: habit :OWH_CONFIG: (:window-specs ((:duration (:days 7) :repetitions 5)) :assessment-interval (:days 1) :only-days (:monday :wednesday :friday)) :END:
4.2 Изменение привычек
- Привычки часто меняются со временем — вы можете начать с 3 тренировок в неделю и постепенно увеличить их до 5.
- Свойство CONFIG поддерживает версионированные конфигурации, которые позволяют изменять ваши требования к привычкам, сохраняя при этом точное отслеживание истории.
4.2.1 Пример: Увеличение частоты тренировок
* TODO Exercise
SCHEDULED: <2024-01-15 Mon .+1d>
:PROPERTIES:
:STYLE: habit
:OWH_CONFIG: ((:window-specs ((:duration (:days 7) :repetitions 5))) (:until "2024-06-01" :window-specs ((:duration (:days 7) :repetitions 3))))
:END:
- Текущее требование: 5 раз в неделю (действует с 1 июня 2024 года).
- Предыдущее требование: 3 раза в неделю (действует до 1 июня 2024 г.)
4.3 Правила версионирования
- Конфигурации перечислены в обратном хронологическом порядке (самые новые — первыми).
- В первой конфигурации ничего нет.
:until(активен сейчас и навсегда) - Каждая конфигурация
:fromпредполагает конфигурацию:until - Явный
:fromсоздается промежуток, где привычка неактивна.
4.3.1 Пример: перерыв в привычке
OWH_CONFIG: ((:window-specs ((:duration (:days 7) :repetitions 5))) (:until "2024-06-01" :from "2024-01-01" :window-specs ((:duration (:days 7) :repetitions 3))))
- Эта привычка не проявлялась до 1 января 2024 года.
:fromв самой старой конфигурации действует как время сброса.
4.4 Примеры
4.4.1 Ежемесячное чтение
* TODO Read a book
SCHEDULED: <2024-01-15 Mon .+1d>
:PROPERTIES:
:STYLE: habit
:OWH_CONFIG: (:window-specs ((:duration (:months 1) :repetitions 4)))
:END:
4.4.2 Ежемесячная задача, привязанная к календарю (например, оплата аренды)
Для задач, которые должны выполняться ровно один раз в календарный месяц (а не в течение скользящего 30-дневного периода), установите продолжительность периода и интервал оценки следующим образом:
(:months 1).Библиотека устанавливает ежемесячные интервалы, начиная с 1-го числа каждого месяца:
* TODO Pay rent SCHEDULED: <2024-01-01 Mon .+1d> :PROPERTIES: :STYLE: habit :OWH_CONFIG: (:window-specs ((:duration (:months 1) :repetitions 1)) :assessment-interval (:months 1)) :END:Оценивается раз в календарный месяц.
Период не обновляется ежедневно — он перескакивает с месяца на месяц.
4.4.3 Традиционный стиль (фиксированный интервал с момента завершения)
- Если вы хотите выработать привычку, которая просто повторяется фиксированное количество дней после каждого выполнения — как при традиционном методе.
* TODO Water plants
SCHEDULED: <2024-01-15 Mon .+1d>
:PROPERTIES:
:STYLE: habit
:OWH_CONFIG: (:window-specs ((:duration (:days 3) :repetitions 1)))
:END:
- В этом задании написано: «Мне нужно поливать растения раз в 3 дня».
- После выполнения привычка автоматически переносится на следующую дату, когда её нужно будет выполнить — примерно через 3 дня.
- Перепланирование в
org-window-habitосновано на моменте, когда вы перестанете соответствовать требованиям, а не на фиксированном смещении. - При наличии 3-дневного окна, требующего 1 завершения, вам нужно будет завершить задание снова в течение 3 дней после последнего завершения, чтобы оставаться в соответствии с требованиями.
4.4.4 Приём лекарств каждые 8 часов
* TODO Take medication
SCHEDULED: <2024-01-15 Mon .+1d>
:PROPERTIES:
:STYLE: habit
:OWH_CONFIG: (:window-specs ((:duration (:hours 8) :repetitions 1)) :assessment-interval (:hours 1))
:END:
4.4.5 Еженедельное задание (раз в неделю)
* TODO Review finances
SCHEDULED: <2024-01-15 Mon .+1d>
:PROPERTIES:
:STYLE: habit
:OWH_CONFIG: (:window-specs ((:duration (:days 7) :repetitions 1)))
:END:
4.4.6 Несколько окон
Привычка должна удовлетворять всем окнам одновременно:
:PROPERTIES: :OWH_CONFIG: (:window-specs ((:duration (:days 4) :repetitions 1) (:duration (:days 6) :repetitions 2))) :END:По крайней мере одно завершение в течение любого 4-дневного периода.
Не менее 2 завершенных сделок в течение любых 6 дней.
4.4.7 Еженедельный обзор каждый понедельник
* TODO Weekly review
SCHEDULED: <2024-01-15 Mon .+1d>
:PROPERTIES:
:STYLE: habit
:OWH_CONFIG: (:window-specs ((:duration (:weeks 1 :start :monday) :repetitions 1)) :assessment-interval (:weeks 1 :start :monday))
:END:
4.4.8 Привычка посещать спортзал
* TODO Go to gym
SCHEDULED: <2024-01-15 Mon .+1d>
:PROPERTIES:
:STYLE: habit
:OWH_CONFIG: (:window-specs ((:duration (:days 7) :repetitions 3)) :only-days (:monday :wednesday :friday))
:END:
- 3 посещения спортзала в неделю.
- Засчитываются только посещения в понедельник, среду и пятницу.
- Если вы по ошибке выполните задание во вторник, оно не будет засчитано в вашу цель.
- После выполнения в понедельник выполнение задания переносится на среду (пропуская вторник).
4.4.9 Приготовление еды на выходные
* TODO Meal prep for the week
SCHEDULED: <2024-01-20 Sat .+1d>
:PROPERTIES:
:STYLE: habit
:OWH_CONFIG: (:window-specs ((:duration (:days 7) :repetitions 1)) :only-days (:saturday :sunday))
:END:
- Требует приготовления еды один раз в неделю, но только по выходным.
- Выполнение задания в будний день не будет засчитано.
