Формат экспорта
Экспорт, часть Deskami Plus, выгружает ту же поминутную запись, которую Deskami ведёт на твоём Mac. Ничего не добавляется, не оценивается и не дописывается. На этой странице описано, что лежит в файле.
Соглашения
- Пустая ячейка в CSV или
nullв JSON означает не измерено.0означает измерено, и это был ноль. - Названия столбцов на всех языках английские и неизменные; они меняются только вместе с новым значением
export_version. - Файлы в кодировке UTF-8. В CSV значения разделены запятыми, первая строка — заголовки.
- Время указано в UTC в формате ISO 8601, например
2026-09-28T07:41:00Z. Даты записаны какYYYY-MM-DD: это календарный день, под которым записана минута. - В дробных числах стоит точка, разделителя тысяч нет никогда. Логические значения —
trueиfalse. - На каждую минуту, в которую Deskami что-то записал, приходится одна строка; для минут, когда он ничего не записал, строки нет.
Столбцы минут
В CSV эти столбцы идут в таком порядке; в JSON те же поля составляют каждую минуту. Имя в скобках — это столбец в исходном файле базы данных.
minute_utc— время. Начало минуты, в UTC. (minute_utc, в секундах Unix-времени)local_day— дата. Календарный день, к которому относится минута, в часовом поясе, в котором тогда был Mac. Фиксируется при записи; последующая смена часового пояса его не сдвигает. (day_key)setup_id— целое число. Используемое рабочее место: камера плюс расположение экранов. В JSON рабочие места перечислены вsetups. (profile_id)seconds_at_desk— от 0 до 60. Секунды, в которые камера видела тебя в эту минуту. Еслиcamera_offравно false, 0 значит, что камера была включена и тебя не видела. (present_s)posture_deviation— число, 0 или больше. Насколько голова и плечи были ниже твоего собственного ориентира, в среднем за минуту, в единицах порога напоминания, действовавшего в тот момент: 0 на уровне ориентира, 1 на пороге. Пусто, если осанка не измерялась. (posture_dev)posture_peak— число, 0 или больше. Наибольшее значение той же величины за минуту. (posture_peak)distance_deviation— число, 0 или больше. Насколько ближе к экрану было твоё лицо, чем при ориентире, в той же шкале, по расстоянию между глазами в кадре. (distance_dev)blinks— целое число. Моргания, подсчитанные, пока глаза удавалось измерять. Пусто, если не удавалось. (blinks)incomplete_blinks— целое число. Моргания, у которых самый узкий момент не подошёл достаточно близко к закрытию. Пусто, если судить было не по чему. (incomplete_blinks)head_pitch_degrees— число. Средний наклон головы вперёд-назад в градусах, как его сообщает камера: относительно камеры, а не твоего ориентира. (head_pitch)confidence— от 0 до 1. Средняя уверенность обнаружения лица. (confidence)light— от 0 до 1. Средняя яркость области лица, от 0 (темно) до 1 (светло). Не яркость комнаты. (light)eyes_measured— логическое значение. Глаза хотя бы раз удалось измерить в эту минуту. Если значение false,blinks,incomplete_blinksиeye_observed_secondsпусты. (eye_valid)eye_observed_seconds— от 0 до 60. Секунды, в которые за глазами действительно удавалось следить. Морганий в минуту:blinks× 60 ÷eye_observed_seconds. (eye_observed_s)look_aways— целое число. Завершённые взгляды вдаль, привычка 20-20-20. Пусто, если взгляд вдаль не измерялся. (gaze_breaks)camera_off— логическое значение. Камера в эту минуту была выключена: ты выключил её сам, её занимало другое приложение или было отозвано разрешение. Столбцы камеры тогда пусты; столбцы приложений и активности всё равно могут быть заполнены. (camera_off)declared_break— логическое значение. Перерыв по твоим словам: ты сказал Deskami, что у тебя перерыв. Минута считается временем вне стола, что бы ни видела камера. (declared_break)front_app— текст. Идентификатор пакета (bundle identifier) приложения, которое было впереди большую часть минуты, напримерcom.apple.Safari. Пусто, если этот замер был выключен, экран был заблокирован или впереди ничего не было. Никогда не заголовок окна. (app_id)app_switches— целое число. Сколько раз в эту минуту сменилось приложение впереди. (app_switches)active_seconds— от 0 до 60. Секунды, в которые клавиатуры или мыши касались в течение последних 15 секунд. Читается только время с последнего события, никогда не клавиши. Пусто, если этот замер был выключен. (active_s)call_seconds— от 0 до 60. Секунды, в которые впереди было приложение для звонков или одно приложение одновременно держало открытыми микрофон и динамик. Пусто, если не измерялось, в том числе во всех минутах, записанных до того, как Deskami начал это измерять. (meeting_s)
JSON
Файл JSON — один объект. Он начинается с заголовка: export_version, app_version, exported_at, time_zone (на момент экспорта), database_schema_version, range (kind, from, to) и setups (id, camera_name, created_at).
Затем идёт days — по объекту на каждый записанный день в диапазоне. Каждый день несёт свою сводку, минуты и напоминания:
local_dayиminutes_at_desk— суммаseconds_at_desk, делённая на 60.breaks: отрезки вне стола длиной от 5 минут, но короче 2 часов, между двумя отрезками за столом. Время с выключенной камерой не засчитывается ни туда, ни сюда.posture_fine_minutes(posture_deviationниже 1) иposture_attention_minutes(1 и выше).blink_rate: моргания в минуту за время, пока за глазами следили;null, если следили меньше минуты.incomplete_blink_ratio:null, если оценить удалось слишком мало морганий.reminders_by_signal: показанные напоминания, подсчитанные по сигналам.minutes: столбцы минут, описанные выше, по объекту на минуту.reminders: по объекту на каждое напоминание, с полямиtime_utc,local_day,setup_id,signal(posture,distance,blink,incompleteBlinkилиgaze),build_up_seconds(время выше порога до напоминания),recover_seconds(время до возвращения ниже порога;null, если измерение остановилось раньше),asked(был ли показан вопрос о твоём ориентире) иanswer(null, если вопрос не задавался, иначеtrueилиfalse).
PDF — не таблица: это сама сводка — сводка дня, неделя или месяц, — напечатанная на одной странице точно так, как она выглядит на экране. Каждое число в нём — то же, что на экране.
Исходный файл
Настройки › Основные › Данные › Показать в Finder выделяет history.sqlite, рядом с которым лежат history.sqlite-wal и history.sqlite-shm. Пока Deskami работает, самые свежие минуты могут ещё лежать в файле -wal; скопируй все три файла или сначала заверши Deskami. Если удалить их, пока Deskami работает, он через несколько секунд начнёт новую пустую запись. Экспорт всегда записывает полный срез данных. Что хранится в базе данных, перечислено на странице о конфиденциальности.