
Apple Watch знали, что я сделал. Obsidian знал, что я планировал. Но перед следующей тренировкой я всё равно открывал два разных места, смотрел на один красивый график и принимал решение почти вслепую.
Несколько лет я пробовал оцифровывать здоровье кусками. Выгружал сон и параллельно записывал настроение, чтобы найти корреляции. Вручную вёл тренировки в Obsidian. Складывал анализы в отдельную папку. Каждый подход работал пару недель, затем превращался в очередную заброшенную таблицу.
Проблема была не в нехватке данных. У меня не было места, где план, факт и контекст можно посмотреть вместе.
За месяц новая система не сделала меня здоровее и не нашла сенсационной закономерности. Польза получилась скучнее. Я вижу нагрузку в контексте и понимаю, когда не нужно добавлять ещё один километр или подход ради растущего графика. Иногда «ничего не менять» и есть результат анализа.
Ниже расскажу, как устроена система, какие данные я храню, как не плодить дубли при импорте Apple Health и почему агент здесь отвечает за ввод и хронологию, а не за диагнозы.
Почему прошлые попытки не работали
Каждая старая система требовала отдельного ритуала. Нужно было открыть приложение, выбрать шаблон, вспомнить тег, перенести запись и не забыть вернуться к ней через неделю.
Через две‑три недели я переставал это делать. Не потому, что таблица была плохой. Её ведение отнимало больше сил, чем экономило.
Отсюда появилось первое требование:
Ввод должен быть дешевле пропущенной записи.
В моей текущей системе ручной вход выглядит как короткое сообщение: «Пробежал 3, колено ноет» или «Спал плохо, подтягивания дались тяжелее». Агент сам находит нужный файл, раскладывает сообщение по полям и оставляет исходный текст рядом.
Второе требование появилось, когда я вернулся к бегу. За пять дней беговая часть прогулок выросла примерно с 1,2 до 3,2 км, а средний пульс поднялся со 129 до 152. Эти числа ничего не доказывают сами по себе. Менялись темп, погода, накопленная нагрузка и восстановление.
Мне нужно было видеть рядом:
Что я собирался сделать.
Что записали часы.
Как я сам описал тренировку.
Что решил изменить на следующей неделе.
Так появилась архитектура из четырёх слоёв.
Четыре слоя системы
1. Ручная запись
В Obsidian я храню план, подходы, технику, боль и самочувствие. Это контекст, которого нет у часов.
2. Apple Watch
Во время занятия я включаю тренировку. В записи остаются длительность, дистанция, активная энергия и пульс. Точный набор зависит от типа тренировки.
3. Импорт
Раз в неделю или две я выгружаю Apple Health. Парсер выбирает нужные тренировки, нормализует поля и дополняет существующие заметки. Он не должен создавать второй файл, если тренировка уже была запланирована вручную.
4. Агент
Агент читает Markdown, сравнивает план с фактом, собирает недельную сводку и помогает подготовить следующее решение. Он не увеличивает нагрузку автоматически и не пытается заменить врача.
Граница простая. Часы измеряют. Obsidian хранит контекст. Импорт связывает записи. Агент поддерживает хронологию и готовит данные к пересмотру.
Что лежит в Obsidian
Для первой версии хватает такой структуры:
Health/ ├── Dashboard.md ├── Workouts.base ├── Schema.md ├── Workouts/ ├── Plans/ ├── Labs/ ├── Metrics/ └── _templates/ ├── Workout.md ├── Training Plan.md └── Lab Result.md
Одна физическая тренировка хранится в одном Markdown‑файле. YAML даёт структуру Obsidian Bases и агенту, обычный текст остаётся человеку.
--- type: workout workout_type: кардио workout_date: 2026-07-15 workout_time: "13:36" duration_min: 61 status: выполнено data_source: apple_health source_record_id: "..." distance_km: 5.29 active_kcal: avg_hr: 129 max_hr: 173 rpe: pain_level: 0 --- ## План - Лёгкий бег 2 км внутри прогулки. ## Факт - Бег 2,05 км. Без боли. ## После - Нагрузку пока не повышать.
План и факт не смешиваются. Импорт заполняет измеренные поля, но не перезаписывает ручные заметки о боли, технике и самочувствии.
Пустое значение тоже важно. Для лекарства, боли или симптома я различаю три состояния: не записано, нет и да. Если превратить пропуск в ноль, через месяц нельзя будет понять, человек не принял лекарство или просто не открыл заметку.
Для минимальной версии community‑плагины не нужны. Properties, Bases, Templates и Daily Notes входят в Obsidian. Dataview, Tracker и QuickAdd можно добавить позже, но Obsidian предупреждает, что community‑плагины выполняют сторонний код с правами приложения.
Когда таблица лучше Obsidian

Если нужны только числа и графики, я бы выбрал Google Sheets или приложение вроде Daylio. Obsidian оправдывает себя, когда рядом с показателем нужно хранить обстоятельства и принятое решение.
Задача | Таблица или приложение | Obsidian и агент |
|---|---|---|
Ввод с телефона | Готовая форма, несколько секунд | Нужен короткий шаблон или автоматизация |
Графики | Формулы и диаграммы доступны сразу | Bases показывает таблицу, сложные графики требуют настройки |
Контекст | Длинный текст неудобен в ячейке | План, факт и заметка лежат рядом |
Работа агента | Компактные и предсказуемые строки | История решений доступна вместе с цифрами |
Переносимость | Выгрузка в CSV или XLSX | Файлы уже лежат в Markdown и YAML |
Моё правило такое: цифры без контекста остаются в приложении, решения живут в Obsidian. Не нужно переносить в Markdown каждый образец пульса. Для высокочастотных данных достаточно агрегатов и ссылки на сырой источник.
Три других применения той же схемы

Моя система выросла из бега и подтягиваний. Ниже не мои готовые кейсы, а три варианта той же конструкции. Они помогают сначала выбрать вопрос, затем поля и автоматизацию.
Дневник при хронической болезни. Сон, еда, лекарства и самочувствие попадают в ежедневную заметку и раз в неделю собираются в таблицу. Задача не в том, чтобы самостоятельно найти причину обострения. Такая хронология помогает заметить совпадения и принести их врачу.
Восстановление после лечения. В одной истории лежат анализы, данные трекеров и назначения. Если врач назначил повторный анализ через три месяца, система напомнит о дате. Агент не решает сам, когда и что нужно пересдавать.
Справочная вики. Учебник или клиническое руководство разбирается на короткие связанные страницы. Под конкретный вопрос агент получает нужный фрагмент, а не весь PDF. Так проще проверить, на какой материал он опирался.
Из этих вариантов я забрал четыре правила. Заметки после приёма лежат на странице специалиста. Пропуск не равен нулю. Ввод с телефона занимает секунды. Гипотеза агента остаётся гипотезой, пока её не подтвердил врач.
Три способа забрать данные из Apple Health
У Apple нет готовой кнопки «синхронизировать Health в Obsidian». Встроенная функция создаёт полный XML‑экспорт. Это хороший способ загрузить историю, но не постоянный поток.
Полный XML‑экспорт
На iPhone откройте Health, профиль и Export All Health Data. Apple документирует экспорт всех данных в XML.
Я храню исходный ZIP отдельно от Obsidian и Git. GPX‑файлы тренировок могут содержать точный маршрут. Агенту нужен нормализованный итог, а не весь архив.
Shortcuts
Shortcuts умеет искать отдельные образцы Health. Из этих действий можно собрать дневную сводку или короткий сценарий после тренировки. Это не готовый коннектор Apple и Obsidian. Логику сохранения и формат заметки всё равно нужно определить самому.
Приложение с HealthKit
Если нужен выборочный инкрементальный импорт, придётся делать приложение с HealthKit. Оно запрашивает разрешение отдельно для каждого типа данных. Пользователь может дать доступ только к недавнему периоду, а приложение не всегда может отличить отказ в чтении от отсутствия записей. Это ещё одна причина не превращать пропуск в ноль. Ограничения описаны в документации HealthKit.
Для личной системы я начал с XML и собственного потокового парсера. Строить iOS‑приложение ради первой версии не стал.
Как импорт не плодит дубли
Повторный импорт обязан быть идемпотентным. Один и тот же архив можно обработать второй раз, не получив копии каждой тренировки.
Мой контракт импорта выглядит так:
Спросить период и нужные типы данных.
Разобрать ZIP вне Obsidian.
Сохранить источник и доступный идентификатор записи.
Сначала искать совпадение по идентификатору, затем по дате, типу и ближайшему времени.
Обновить измеренные поля существующего файла.
Не трогать ручные разделы «План», «Факт» и «После».
Сообщить, сколько записей найдено, обновлено, создано и осталось неоднозначными.
Проверить несколько случайных тренировок по исходному приложению.
Отдельная проблема появляется, когда шаги пишут и iPhone, и Apple Watch. Их интервалы пересекаются. Складывать оба числа нельзя, пока импорт не учитывает источник и приоритет данных.
Анализы, снимки и граница агента

Старый бумажный анализ можно отсканировать. Агент переносит дату, лабораторию, показатель, значение, единицу и референсный диапазон. Текстовое заключение УЗИ, ЭКГ или рентгена становится частью хронологии.
Сырые снимки остаются специалисту. Моя система умеет найти старый результат, показать изменение совместимых показателей и собрать вопросы к врачу. Она не диагностирует по изображению и не предлагает лечение.
Я отдельно проверяю три вещи:
Единицы совпадают. Значения в разных единицах нельзя молча ставить в один ряд.
Референс взят из того же документа. Диапазоны могут отличаться между лабораториями.
Факт отделён от гипотезы. «Показатель выше указанного референса» зафиксирован в документе. Причину должен определять врач.
Приватность здесь приходится проектировать сразу. Исходные XML, GPX, лабораторные PDF и снимки лежат вне публичного vault. Obsidian не шифрует локальный vault, поэтому нужны FileVault, блокировка устройства и резервная копия. Перед отправкой данных в облачную модель я убираю ФИО, адреса, координаты и лишние идентификаторы.
Если использовать ChatGPT, в настройках можно отключить Improve the model for everyone. Для разовых запросов есть Temporary Chat. OpenAI описывает эти режимы в Data Controls.
Как агент получает постоянный вход
Сначала я работал с vault вручную. Открывал папку, запускал агента, передавал файл и просил обновить запись. Технически всё работало, но цена ввода снова росла.
Следующий шаг я сделал через Hermes Agent. У него есть отдельные профили, Telegram gateway и расписания. Для здоровья я выделил отдельный профиль со своими правилами, памятью и файлами.
Теперь вход выглядит так:
Пробежал 3, колено ноет. Пульс был выше обычного.
Или так:
Спал плохо. Подтягивания 5 × 6, последний подход тяжёлый.
Агент находит тренировку, заполняет доступные поля и сохраняет исходное сообщение. Если данных недостаточно, он задаёт уточняющий вопрос. Формат YAML мне помнить не нужно.
Важнее самого Hermes здесь контракт. Его можно применить в другом агенте с доступом к файлам.
Короткий контракт для агента
Ты поддерживаешь личную систему здоровья в Obsidian. Это система наблюдения и хронологии, а не медицинский прибор.
Сначала найди существующий vault и изучи его схему.
До изменений покажи, какие файлы собираешься создать или обновить.
Одна физическая тренировка равна одному файлу.
Не превращай пустое значение в ноль.
Не перезаписывай ручные заметки импортом.
Сохраняй источник и доступный идентификатор записи.
Не копируй XML, GPX и оригиналы медицинских документов в публичный vault или Git.
Отделяй факты документа от гипотез и вопросов.
Не ставь диагнозы и не назначай лечение.
После работы перечисли изменённые файлы и неоднозначные совпадения.
Что сломает систему
Я уже наступал на часть этих ошибок:
Ошибка | Что происходит | Что сделать |
|---|---|---|
Собирать все доступные метрики | Дашборд растёт, решений больше не становится | Начать с одного вопроса на неделю |
Требовать заполнить длинную форму | Через две недели записи заканчиваются | Оставить три ручных поля |
Хранить сырой XML внутри vault | Агент получает лишние данные, Git легко уносит их наружу | Держать сырой архив отдельно |
Считать пропуск нулём | «Не было» смешивается с «не записал» | Хранить три состояния значения |
Создавать файл на каждый импорт | План и факт расходятся по дублям | Сначала искать существующую запись |
Просить агента объяснить диагноз | Корреляция превращается в уверенный медицинский совет | Готовить хронологию и вопросы врачу |
Система должна уменьшать количество ручных действий. Если для её обслуживания появляется отдельный вечер каждую неделю, я снова построил хобби, а не инструмент.
Что получилось в итоге
Сейчас система держится на нескольких ограничениях:
четыре слоя: ручная запись, часы, импорт и агент;
двадцать минут на папки, шаблон и первую ручную запись;
ноль обязательных community‑плагинов;
одна тренировка равна одному файлу;
три состояния значения: не записано, нет и да;
ноль диагнозов от агента.
Пустую структуру, шаблоны, Base и полный промпт я собрал в starter‑vault. Архив скачивается напрямую, без регистрации и почты.
Apple Watch и раньше записывали тренировки. Obsidian и раньше хранил планы. Разница появилась, когда план, нагрузка и самочувствие оказались в одной хронологии.
Я больше не пытаюсь оцифровать всю жизнь за вечер. Сначала создаю одну запись, провожу одну тренировку и проверяю, помогли ли данные принять следующее решение. Если нет, добавлять новые метрики пока незачем.

