📖 Uživatelská příručka

Laický průvodce pro Martina (a každého, kdo nechce číst kód)

Verze 1.2 · aktualizováno 2026-06-10

Jak to celé funguje — toky dat

Podrobnější pohled na vnitřní fungování systému — co se děje od chvíle, kdy pošleš zprávu, až po proaktivní upozornění.


Celkový obraz

┌─────────────────────────────────────────────────────────────────────┐
│  VSTUPY                                VÝSTUPY                      │
│  ───────                               ────────                     │
│  Telegram (text / hlas / foto)    ──►  Odpovědi na dotazy           │
│  Obsidian vault (noty, deník)     ──►  Proaktivní upozornění        │
│  Garmin hodinky                   ──►  Ranní brief                  │
│  Penízky (příjmy, výdaje)         ──►  Kauzální analýza (Layer B)   │
│  Google Calendar                       Zdravotní alerty             │
│  RAW Projekty (úkoly, klienti)         Hodnocení jídla / váhy       │
│                  │                                                  │
│                  ▼                                                  │
│       ┌──────────────────────┐                                      │
│       │  brain.rawfuture.cz  │  ← vlastní VPS (Hetzner)            │
│       │                      │                                      │
│       │  PostgreSQL + pgvec  │  ← vše trvalé                       │
│       │  Redis               │  ← kontext konverzace               │
│       │  Gemini Flash (LLM)  │  ← "mozek"                          │
│       │  APScheduler         │  ← automatické úlohy                │
│       └──────────────────────┘                                      │
└─────────────────────────────────────────────────────────────────────┘

Tok 1: Zpráva → odpověď

Jak zpráva cestuje od tebe k odpovědi:

Ty (Telegram)
  │  "Zapsal jsem večeři — sledové filety 18:42"
  ▼
[Telegram bot]
  │  ověří whitelist — jen ty smíš psát
  ▼
[Směrovač]
  ├─ pravidla / klíčová slova → rychlá cesta (milisekundy)
  └─ nejasné → LLM rozhodne → vybere nástroj
  ▼
[Agent — tool-calling loop]
  │  volá log_meal() s textem + časem jídla
  │  → LLM odhadne makra, rating, feedback
  │  → zapíše do JSON souboru + vault
  ▼
[Odpověď]
  "🍽 VEČEŘE — rating 8/10
   kcal 420 · B 34g · S 12g · T 22g
   Solidní volba. Přidej zítra trochu vlákniny."
  ▼
Ty (Telegram)  ← typicky do 3 vteřin

Vstupní formáty — systém rozumí všemu přirozeně česky:

Typ vstupu Příklad Co se stane
Text "Zapsal jsem 70.2 kg" log_body_metrics(weight=70.2)
Text + čas "Večeře 18:42 — sledové filety" Uloží i čas snědení
Hlasová zpráva [nahrávka] Přepis → stejný tok jako text
Foto jídla s popisem "Oběd:" + foto etikety OCR etikety + log_meal()
Foto bez kontextu [jakékoliv foto] OCR + uložení do inboxu

Tok 2: Dotaz → odpověď

Při otázce na historická data probíhá třívrstvé vyhledávání:

Dotaz: "Jak jsem spal minulý měsíc?"
  ▼
[Hybridní search — 3 vrstvy paralelně]

  Vrstva 1 — Strukturovaná data
  ─────────────────────────────
  SQL: SELECT AVG(sleep_h) FROM garmin_records
       WHERE record_date BETWEEN ... AND ...
  → přesná čísla: "průměr 7.2 h za 28 dní"

  Vrstva 2 — Fulltextové noty
  ────────────────────────────
  pg_trgm ILIKE na Obsidian vault
  → deník, retrospektivy, poznámky

  Vrstva 3 — Sémantické vyhledávání
  ───────────────────────────────────
  pgvector cosine similarity (768-dim embeddingy)
  → tematicky podobný obsah i bez shodných slov
  ▼
[RRF — sloučení výsledků ze všech 3 vrstev]
  ▼
[LLM syntéza] → srozumitelná odpověď
  ▼
"Průměrně 7.2 h. Nejhorší týden byl 13.–19. května (6.1 h)."

Co která vrstva umí:

Vrstva Silná stránka Příklad
SQL / strukturovaná Přesná čísla, součty, průměry "kolik jsem utratil v květnu"
Fulltextové noty Hledání v textu deníku "kdy jsem psal o únava na projektu"
Sémantická (vektory) Tematická blízkost bez klíčových slov "jak jsem se cítil po závodě"

Tok 3: Automatické proaktivní akce

Systém sleduje data a píše sám — bez toho aby ses ptal.

Ranní brief (7:30–9:00)

APScheduler → morning_brief()
  ├─ Garmin:    HRV + spánek + RHR z dnešní noci
  ├─ Počasí:    OpenWeatherMap API
  ├─ Kalendář:  Google Calendar — dnešní eventy
  ├─ Úkoly:     RAW Projekty — prioritní úkoly dne
  └─ Finance:   Penízky — měsíční přehled
  ▼
LLM sestaví brief → Telegram zpráva

Zdravotní monitoring (10:00 každý den)

Kontroluje čtyři oblasti. Každý alert se odešle maximálně jednou za 24 h.

Alert Podmínka spuštění Co pošle
RHR spike Klidová TF dnes > 7d průměr + 3 bpm Upozornění + analýza příčin (stres, km, spánek)
HRV drop HRV dnes < 7d průměr − 3 ms Upozornění + doporučení na dnes
Vysoký stres Stres včera ≥ 35 AND ≥ 7 nad 7d průměrem Analýza příčin (spánek, HRV, trénink — vše jako delta od průměru, ne absolutní prahy)
Špatná výživa Kcal / protein / vláknina mimo cíl, nebo pozdní večeře Plán korekce na dnešní den

Váha (okamžitě při zápisu)

Jakmile zadáš váhu, systém okamžitě vyhodnotí:


Layer A — Wikilink ontologie

Vault obsahuje tisíce Markdown souborů propojených [[wikilinky]]. Layer A tuto síť mapuje a prohledává.

Jak to funguje

Při každém uložení poznámky:
  │
  ├─ extrahuj všechny [[wikilinks]] z textu
  ├─ ulož do tabulky note_links:
  │     source_path   │ target_slug
  │     projekt-x.md  │ klient-abc
  │     projekt-x.md  │ meeting-2026-05
  └─ smaž stale linky (co byly, ale teď nejsou)

BFS traversal — prohledání sítě do hloubky

Při dotazu "co vím o projektu X?" systém nepřečte jen jednu notu — projde celou síť:

projekt-x  (hloubka 1)
  ├── klient-abc       → jeho profil, projekty, platby
  ├── meeting-2026-05  → zápisky z meetingu
  └── smlouva-2024     → podmínky, termíny

klient-abc  (hloubka 2)
  ├── komunikace-email
  └── invoice-2025-12

Výsledek: AI dostane kontext celé sítě kolem tématu — ne jen jednu notu, ale celý graf propojených informací.

Parametr Možnosti
Hloubka 1–3 skoky
Směr backlinks (co odkazuje na X), outlinks (co X odkazuje), obojí

Layer B — Kauzální analýza

Systém průběžně hledá statistické vztahy mezi 25 proměnnými tvých zdravotních, nutričních a finančních dat.

Proměnné (DayData)

Kategorie Proměnné
Spánek sleep_h, deep_sleep_pct, rem_sleep_pct
Fitness hrv, stress, rhr, steps, run_km, active_kcal
Výživa kcal, protein, carbs, fat, fiber, nut_rating, last_meal_h
Finance daily_spend
Odvozené recovery (HRV+spánek+stres composite), hrv_deficit (vs. 7d průměr), run_load_7d, caloric_surplus, sleep_debt_3d (3-denní spánkový dluh), training_debt (objem × HRV deficit), dow (den týdne)

Analytická vrstva 1 — Pairwise korelace

Pearson r pro všechny kombinace 25 proměnných při 6 časových posunech (lazích):

Lag Typ vztahu Příklad
0 dní Současné HRV ↔ spánek dnes
+1 den Přímý efekt Trénink dnes → HRV zítra
+2–3 dny Odložený efekt Stres → výživa za 2 dny
+5, +7 dní Kumulativní Tréninkový dluh → únava za týden

Celkem ~3 700 kombinací. Filtruje se na |r| ≥ 0.13, zobrazí top 6 per proměnná.

Analytická vrstva 2 — Parciální korelace (automatické hledání konfoundrů)

Hledá trojice X→Y kde třetí proměnná Z věc vysvětluje nebo zprostředkovává.

Příklad:
  r(kroky, nálada) = 0.45       ← zdánlivý vztah
  r(kroky, nálada | spánek) = 0.08  ← mizí po kontrole spánku

  → Spánek způsobuje obojí.
    Kroky nejsou příčinou lepší nálady.
Nález Interpretace
r klesne po kontrole Z Z je konfounder (způsobuje obojí)
r klesne a Z koreluje s Y Z je mediátor (X působí skrz Z)

Systém automaticky projde všechny trojice a vrátí top 8 nejzajímavějších.

Analytická vrstva 3 — Interakční vzory (16 patterns)

Podmíněná analýza — co se děje při kombinaci více faktorů najednou:

# Vzor Co hledá
1 Běh + protein → HRV Jak jídlo po tréninku ovlivňuje regeneraci
2 Regenerace → příští běh Dovolí ti dobrá recovery výkonnostní trénink?
3 Pozdní jídlo + stres → spánek + HRV Trojice, která ničí noc
4 Kumulativní stres (3+ dny) → HRV propad Akumulace zátěže přes dny
5 HRV deficit → trénink + stres Co se děje v podprůměrných dnech
6 Vláknina + tuk → hluboký spánek Mikrobiom–spánková osa
7 Výdaje → stres příští den Finance → psychická zátěž
8 Tréninkový objem 7d → klidová TF Chronická adaptace vs. přetížení
9 Kalorický deficit → trénink příští den Energetická dostupnost
10 Spánek ≥8h → stres + HRV příští den Obnova přes spánek
11 Spánek × stres × protein → HRV Trojice (s nutricí nebo bez)
12 Trénink × spánek → regenerace Při vysokém objemu rozhoduje spánek
13 Finance → stres → spánek (řetěz) Kaskáda přes mediánový split
14 Stres → kvalita stravy příští den Emoční jídlo
15 RED-S riziko (deficit + objem) Energetická dostupnost v tréninku
16 Recovery arc +1 až +5 dní HRV deficit trajektorie po náročném dni

Jak výsledky vidíš: Napiš "jak trénink ovlivňuje moje HRV" nebo "spusť kauzální analýzu".


Individuální thresholdy — proč nejsou pevné meze

Systém nepoužívá obecné normy z internetu. Každý alert je relativní vůči tvým vlastním průměrům:

Tvůj 7denní rolling průměr = tvůj "normál"
  │
  ├─ HRV:   průměr 63 ms  → alert při poklesu o ≥ 3 ms (= < 60)
  ├─ RHR:   průměr 47 bpm → alert při vzrůstu o ≥ 3 bpm (= > 50)
  └─ Stres: průměr 32     → alert při ≥ 35 AND ≥ 7 nad průměrem

Pokud procházíš stresovým obdobím a tvůj průměr stresu vzroste na 45, práh se posune — nebudeš dostávat falešné alarmy kvůli přirozenému bazálu.


Proaktivní persony

Tři "hlasy" systému, každý sleduje jinou oblast a píše sám:

Persona Oblast Kdy se ozve
Eva Zdraví, spánek, výživa, stres Zdravotní alerty, nutriční feedback
Emil Sport, trénink, regenerace Výkonnostní tipy, recovery varování
Elon Finance, projekty, prokrastinace Finanční přehledy, upozornění na prodlení

Kde jsou data fyzicky

Typ dat Úložiště Sync / záloha
Markdown noty, deník, projekty /srv/vault/ (VPS) Dropbox ↔ VPS automaticky
Garmin, výživa, finance PostgreSQL tabulky VPS snapshot
Vektorové embeddingy (RAG) PostgreSQL + pgvector VPS snapshot
Nutriční log (JSON/den) /srv/vault/00_meta/nutrition-days/ Dropbox sync
Kontext konverzace Redis (TTL 10 min) záměrně bez zálohy
Secrets (API klíče, hesla) /srv/brain-secrets/brain.env mimo repozitář

Vault na VPS ↔ Dropbox se synchronizuje automaticky. Nové/upravené soubory jsou reindexovány (embeddingy) do 5 minut od změny.


Bezpečnost a soukromí

Ochrana Jak funguje
Whitelist Bot odmítne zprávy od kohokoliv jiného než tebe
Sensitive blok Noty s #sensitive nebo ve složce private/ nejdou do Gemini API
Self-hosted Žádná osobní data nejdou do komerčních cloudů (jen AI inference přes Gemini API)
HTTPS Veškerá komunikace šifrována, Caddy + Let's Encrypt
OAuth Garmin, Google, Penízky — přístup jen přes tokeny, ne plaintext hesla

Dostupné nástroje (co agent umí zapsat / smazat)

Nástroj Akce Příklad hlášky
log_meal Zápis jídla + analýza "Oběd — rýže s lososem"
delete_meal Smazat jídlo ze záznamu "Smaž tu večeři, je špatně"
log_body_metrics Zápis váhy, tuku %, svalů… "70.2 kg dnes ráno"
delete_body_metric Smazat poslední zápis metriky "Oprav tu váhu"
save_note Uložit poznámku do inboxu Jakýkoliv volný text
delete_note Smazat poznámku z vaultu "Smaž tu poznámku co jsi uložil"
add_task Přidat úkol do RAW Projektů "Zapiš úkol: faktura do pátku"
complete_task Označit úkol jako hotový "Splněno: faktura"
delete_task Smazat špatně přidaný úkol "Smaž ten úkol o faktuře"
add_penizky_transaction Zapsat výdaj / příjem "Zaplatil jsem 450 Kč za oběd"
query_nutrition Výpis jídel s makry per slot "Kolik kalorií měla večeře?"
query_garmin Dotaz na Garmin data "Kolik jsem naběhal tento týden?"
analyze_patterns Layer B — kauzální analýza "Spusť kauzální analýzu"
follow_links Layer A — prohledat wikilink síť "Co vím o projektu X?"