Przejdź do treści

Osobisty asystent AI - jak zbudowałem system, który zna mój kalendarz, sen i styl pisania

Schemat architektury osobistego asystenta AI z połączeniami do kalendarza, Garmina, zadań i plików markdown

Mówię "dzień dobry". Po 5 sekundach dostaję raport: 7 godzin snu, HRV 42ms (poniżej baseline - lżejszy dzień), Body Battery 73/100, pogoda w Warszawie 2 stopnie i deszcz, dwa spotkania w kalendarzu, trzy zaległe zadania. Plus rekomendację: "Słaba regeneracja nocna. Priorytet rutynowe zadania, nie kreatywne. Spacer odpada - pada."

To nie jest sci-fi. To mój poranny check-in w terminalu. Claude Code, 8 równoległych wywołań API, odpowiedź w jednym komunikacie.

Budowałem to przez kilka tygodni. Nie jako produkt do sprzedaży, a jako narzędzie dla siebie. Programista, który chciał mieć jednego asystenta zamiast dziesięciu zakładek. Ten artykuł opisuje jak to działa, czego się nauczyłem i jak zacząć budować własny system.

Problem: rozproszenie

Przed zbudowaniem asystenta mój poranek wyglądał tak: Google Calendar w jednej karcie, Garmin Connect w drugiej, pogoda w trzeciej, lista zadań w czwartej. Ręczne przełączanie między aplikacjami, ręczne decydowanie co jest ważne dzisiaj.

Do tego AI, które brzmiało jak AI. Każdy tekst wygenerowany przez ChatGPT trzeba było przepisywać, bo "z przyjemnością informuję" i "w kontekście dynamicznie zmieniającego się rynku" nie pasowały do mojego stylu komunikacji.

I utrata kontekstu między sesjami. Mówisz AI o swoich planach w poniedziałek, a we wtorek zaczyna od zera. Znowu tłumaczysz kim jesteś, co robisz, nad czym pracujesz.

Trzy problemy, jeden system.

Architektura: Claude Code + MCP + markdown

Cały system opiera się na trzech warstwach.

Claude Code to interfejs - agentowy asystent AI od Anthropic, który działa w terminalu i ma dostęp do lokalnego systemu plików. Nie jest to chatbot w przeglądarce. To agent, który czyta pliki, wykonuje komendy, wywołuje narzędzia i zapisuje wyniki.

MCP (Model Context Protocol) to warstwa integracji. Otwarty protokół, który pozwala AI łączyć się z zewnętrznymi usługami - kalendarzem, zadaniami, zegarkiem sportowym, pogodą. Więcej o nim za chwilę.

Pliki markdown to pamięć. Zamiast bazy danych - katalog z plikami .md, które Claude czyta na początku każdej sesji. Profil użytkownika, cele, plany, notatki z nauki, historia decyzji.

Schemat wygląda tak:

Terminal (Claude Code)
  │
  ├── CLAUDE.md ← instrukcje systemowe, role, zasady
  │
  ├── MCP Servers
  │   ├── Google Calendar (tworzenie/edycja wydarzeń)
  │   ├── Google Tasks (zarządzanie listami zadań)
  │   ├── Garmin Connect (sen, HRV, Body Battery, kroki)
  │   └── Open-Meteo (pogoda, opady, temperatura)
  │
  └── DATA/ ← pamięć długoterminowa
      ├── profil.md (informacje o użytkowniku)
      ├── WIZJA/ (cele, kariera, plany)
      ├── NAUKA/ (postępy w nauce)
      ├── PROJEKTY/ (dokumentacja projektów)
      └── EWALUACJA/ (przygotowania do oceny)

Żadnego backendu, żadnej bazy danych, żadnego hostingu. Wszystko na jednej maszynie, w jednym katalogu.

Co to jest MCP i dlaczego zmienia zasady gry

Model Context Protocol to otwarty standard stworzony przez Anthropic w listopadzie 2024. Analogia, która najlepiej oddaje sens: MCP jest dla AI tym, czym USB-C jest dla urządzeń - jeden standard, wiele połączeń.

Przed MCP każda integracja AI z zewnętrznym serwisem wymagała custom kodu. Chcesz połączyć AI z Google Calendar? Pisz wrapper na API. Z bazą danych? Kolejny wrapper. Z każdym nowym narzędziem - od zera.

MCP standaryzuje ten proces. Definiuje trzy elementy:

  • Host - aplikacja AI (Claude Code, Claude Desktop, IDE)
  • Klient - protokół komunikacji między hostem a serwerem
  • Serwer - lekki program udostępniający narzędzia przez MCP

Każdy serwer MCP definiuje swoje "narzędzia" (tools) - funkcje, które AI może wywoływać. Serwer Google Calendar ma narzędzia list-events, create-event, delete-event. Serwer Garmin ma get_sleep_summary, get_hrv_data, get_body_battery. AI widzi listę dostępnych narzędzi, rozumie ich parametry i wywołuje je gdy potrzebuje danych.

W 2026 roku ekosystem MCP przekroczył 1000 serwerów stworzonych przez społeczność. Google Calendar, Slack, bazy danych, systemy plików, Notion - prawie wszystko ma serwer MCP. OpenAI ogłosił wsparcie MCP we wszystkich swoich produktach. Google uruchomił komplementarny protokół Agent2Agent. MCP stał się standardem branżowym.

To co MCP daje w praktyce: AI, które nie tylko rozmawia, ale działa. Tworzy wydarzenia w kalendarzu. Sprawdza jakość snu. Dodaje zadania do listy. Pobiera prognozę pogody. Bez pisania kodu integracyjnego - wystarczy skonfigurować serwer MCP.

6 agentów - po co osobne role

System operuje na 6 wyspecjalizowanych agentach. Każdy ma inną instrukcję systemową, inne pliki kontekstowe, inne zachowania.

/ceo - poranny briefing i priorytety

Agent decyzyjny. Wywołuję go rano jednym słowem - "dzień dobry". Uruchamia 8 równoległych wywołań API i zwraca sformatowany raport.

Co robi:

  • Pobiera dane zdrowotne z Garmina (Body Battery, HRV, sen, kroki, status treningowy)
  • Sprawdza pogodę w Warszawie
  • Listuje wydarzenia z Google Calendar
  • Wyciąga zadania z Google Tasks
  • Czyta aktualne deadliny z plików
  • Na podstawie danych daje rekomendację: lekki dzień czy pełna moc

Przykład rekomendacji gdy HRV jest poniżej baseline:

→ REKOMENDACJA: HRV poniżej normy + sen 6.2h.
  Lżejsze zadania, przerwy co 45 min.
  Nie planuj kreatywnej pracy rano.

Logika jest konkretna. Body Battery poniżej 25 po 13:00 - sugestia drzemki. ACWR (stosunek obciążenia treningowego) powyżej 1.3 - ostrzeżenie o overtreningu. Mniej niż 3000 kroków do 14:00 - "wyjdź na 15 minut spacer". Deszcz w prognozie - "rozciąganie w domu zamiast spaceru".

Nie wymyślam tych reguł codziennie. Są zapisane w pliku RULES/INTEGRACJE.md - Claude je czyta i stosuje automatycznie.

/ghost - cyfrowy bliźniak do pisania

To agent, któremu poświęcam osobną sekcję niżej. W skrócie: ghostwriter wytrenowany na moim stylu komunikacji. Pisze maile, posty, wiadomości do klientów - tak, jakbym pisał je sam.

/planista - harmonogramy i planowanie

Zarządza tygodniowym planem. Sprawdza wszystkie źródła: pliki nauki, kalendarz, zadania, cele z pliku kariera. Priorytetyzuje: deadliny na ten tydzień jako krytyczne, na ten miesiąc jako wysokie, reszta jako średnie.

/nauczyciel - śledzenie nauki

Monitoruje postępy w nauce. Mam ścieżki edukacyjne zapisane w plikach - nauka AI/agentów, przygotowania do Mistrzostw Polski w Sudoku, psychologia tradingowa. Agent sprawdza co zrobiłem, co jest zaplanowane, co się opóźnia.

/inwestor - research giełdowy

Analizuje sektory, spółki, trendy. Ma submody: scan (przegląd rynku), deep (analiza sektora), stock (karta spółki), alpha (polowanie na ukryte sygnały - patenty, dane akademickie, rekrutacje, regulacje).

/ewaluator - przygotowania do oceny

Agent tymczasowy, aktywny do konkretnej daty. Pilnuje procesu przygotowań do ewaluacji w pracy: prezentacja, argumenty, strategia negocjacyjna. Śledzi postępy i pilnuje deadlinów.

Dlaczego osobne agenty zamiast jednego

Jeden agent z instrukcją na 500 linii działałby gorzej. Każdy agent ma wąski kontekst - czyta tylko te pliki, które potrzebuje. Ghost czyta profil komunikacji i zasady stylu. CEO czyta integracje i dane zdrowotne. Inwestor czyta watchlistę i raporty sektorowe.

To zmniejsza szum. Agent pisący maile nie potrzebuje wiedzieć o moim HRV. Agent analizujący spółki nie potrzebuje moich zasad stylu pisania. Węższy kontekst to lepsze odpowiedzi.

Ghost - jak zbudować cyfrowego bliźniaka do pisania

To sekcja, z której wyniesiesz najwięcej, jeśli komunikacja pisemna jest częścią Twojej pracy.

Ghost operuje na dwóch plikach:

  1. Profil komunikacji - dokument opisujący jak mówię i piszę
  2. Zasady anty-AI - lista zakazanych wzorców, które zdradzają tekst generowany przez AI

Profil komunikacji

Plik zawiera konkretne informacje o moim stylu:

Powitania: "Dzień dobry," (formalnie), "Cześć," (luźno), "Kamil, ..." (bezpośrednio)

Zakończenia: "Pozdrawiam" (standard), pełne imię i nazwisko w mailach, inicjały w krótszych formach

Charakterystyczne frazy: "Zgodnie z obietnicą", "docelowo", "kwestia", "wypływa na", "daję znać", "podałem dane"

Styl odpowiedzi:

  • Na dobre wiadomości - entuzjastycznie, ale konkretnie ("Super!", "Dobra robota")
  • Na problemy - analitycznie, szukanie przyczyny, podawanie faktów
  • Na prośby - rzeczowo, z konkretnym terminem i zasadami

Struktura: wyraźne akapity, bullet pointy przy wyliczeniach, precyzyjne obliczenia (15 * 7 = 105h)

Czego nigdy: emoji w komunikacji zawodowej. P.S. na końcu maila. Słowa "kluczowy", "fundamentalny", "holistyczny".

To 50 linijek tekstu. Ale robi ogromną różnicę - AI przestaje brzmieć jak AI i zaczyna brzmieć jak ja.

Zasady anty-AI

Drugi plik to 140 linii reguł stylistycznych. Kilka przykładów:

  • Nie kończ zdań frazami typu "podkreślając tym samym...", "ukazując...", "odzwierciedlając..."
  • Nie używaj: "dynamiczny", "tętniący życiem", "bogaty wachlarz", "mozaika"
  • Nie używaj konstrukcji "to nie tylko X, ale także Y"
  • Nie dodawaj sekcji "Podsumowanie" ani "Wnioski"
  • Preferuj tekst ciągły zamiast list punktowanych
  • Każde zdanie powinno wnosić konkretną informację
  • Nie pisz "eksperci twierdzą" bez podania konkretnego źródła

Plik działa jak filtr. Ghost generuje tekst, a reguły wycinają AI-owe wzorce zanim tekst wyjdzie z systemu.

Jak to zbudować od zera

  1. Zbierz 10-20 swoich tekstów (maile, posty, wiadomości)
  2. Przeanalizuj wzorce: jak zaczynasz, jak kończysz, jakie słowa powtarzasz, czego unikasz
  3. Zapisz to w pliku markdown - konkretnie, nie ogólnikowo
  4. Dodaj listę zakazanych zwrotów (weź dowolny tekst AI i wypisz co brzmi sztucznie)
  5. Testuj: daj agentowi zadanie napisania maila, porównaj z tym jak sam byś napisał

Im więcej przykładów i reguł, tym lepszy wynik. Mój profil komunikacji to efekt kilku tygodni dopracowywania.

Poranny briefing krok po kroku

Oto co się dzieje technicznie, gdy mówię "dzień dobry".

Krok 1: jeden batch, 8 wywołań

Claude Code wysyła w jednym batchu (nie sekwencyjnie - równolegle):

1. mcp__gcalendar__get-current-time
2. mcp__garmin__get_user_summary(today)
3. mcp__garmin__get_sleep_summary(today)
4. mcp__garmin__get_hrv_data(today)
5. mcp__garmin__get_training_status(today)
6. mcp__garmin__get_daily_steps(today-7, yesterday)
7. mcp__weather__weather_forecast(lat=52.23, lon=21.01)
8. mcp__gcalendar__list-events(today)

Plus czyta Google Tasks i dwa pliki markdown z deadlinami. Wszystko jednocześnie.

Krok 2: agregacja danych

Claude dostaje surowe JSON-y z każdego serwera MCP. Wyciąga z nich wartości, porównuje z progami (HRV vs baseline, Body Battery vs 70, sen vs 6 godzin) i generuje rekomendacje.

Krok 3: raport

Wynik wygląda tak:

## PORANNY CHECK-IN - poniedziałek, 03.02.2026

### Garmin
- BB: 73/100 (rano: 78) | HRV: 42ms (avg 7d: 48, LOW) | RHR: 54
- Sen: 6.2h, score 71 | Deep 18%, REM 22%
- Trening wczoraj: bieg 8km | Load ratio: 1.1 (OPTIMAL)
- Kroki: 1200 / 10k (avg 7d: 8400)
→ HRV poniżej normy. Lżejsze zadania, przerwy co 45 min.

### Pogoda - Warszawa
- Dziś: -1°C / 3°C, deszcz ciągły, wiatr 25 km/h
→ Spacer odpada. Rozciąganie w domu.

### Kalendarz
- 10:00 Daily standup
- 14:00 Review sprintu

### Deadliny
- EWALUACJA: 19.02 (za 16 dni)

### Co udało się zrobić od ostatniego razu?

Ostatnie pytanie to zachęta do aktualizacji - odpowiadam co zrobiłem, a system zaznacza postępy w plikach.

5 sekund na 8 źródeł danych. Bez otwierania jednej aplikacji. To jest powód, dla którego zbudowałem ten system.

Pamięć: dlaczego markdown, a nie baza danych

Tradycyjne podejście do pamięci AI to wektory, embeddingi, bazy danych. Moje podejście: katalog z plikami .md.

Dlaczego to działa lepiej w tym kontekście:

Transparentność. Mogę otworzyć DATA/profil.md w dowolnym edytorze i zobaczyć co AI o mnie "wie". Żadnych czarnych skrzynek, żadnych wektorów do debuowania.

Kontrola. Mogę ręcznie edytować pamięć. Zmienił się plan? Otwieram plik, zmieniam linijkę. AI przy następnej sesji przeczyta zaktualizowaną wersję.

Trwałość. Pliki markdown przetrwają zmianę modelu, zmianę dostawcy, zmianę narzędzia. To zwykły tekst - czyta go Claude, przeczyta go GPT, przeczyta go cokolwiek co pojawi się za rok.

Struktura. Jeden temat = jeden plik. Profil to profil.md. Kariera to kariera.md. Nauka AI to NAUKA/ai.md. Łatwe do nawigacji, łatwe do archiwizacji.

Auto-zapis i Lessons Learned

System automatycznie zapisuje nowe informacje. Mówię "zrobiłem LinkedIn" - agent aktualizuje plik z postępami kariery. Mówię "zmieniłem zdanie o technologii X" - agent aktualizuje profil.

Reguła jest zapisana w instrukcjach systemowych: "Po KAŻDYM prompcie użytkownika zastanów się: czy użytkownik powiedział coś nowego? Jeśli tak - NATYCHMIAST ZAPISZ."

Ta reguła powstała po konkretnym błędzie. 22 stycznia 2026 powiedziałem że zrobiłem LinkedIn - headline, about, skills. Agent podsumował, powiedział "dobra robota" i... nie zapisał nic. Gdy zapytałem "co zapisałeś?" - okazało się, że nic. Informacja "uciekła".

Dodałem to do sekcji Lessons Learned w instrukcjach systemowych. Od tamtej pory błąd się nie powtórzył. To działa jak pamięć instytucjonalna - system uczy się na swoich pomyłkach.

Sekcja Lessons Learned w moim pliku:

## LESSONS LEARNED
- Niezapisane postępy: Gdy użytkownik raportuje postępy
  → NATYCHMIAST edytuj pliki, nie tylko mów
- Daty: NIGDY env, ZAWSZE MCP get-current-time
- Duplikowanie plików: PRZED tworzeniem nowego pliku
  → sprawdź czy już istnieje. JEDEN TEMAT = JEDEN PLIK

Każdy błąd staje się regułą. Reguła zapobiega powtórzeniu. System z czasem staje się coraz bardziej niezawodny.

Protokół zero halucynacji

AI halucynuje. Podaje pewnie brzmiące informacje, które nie mają pokrycia w danych. W kontekście osobistego asystenta, który zarządza kalendarzem, zadaniami i finansami - to niedopuszczalne.

Mój system operuje na protokole precyzji z trzema regułami:

  1. Hierarchia prawdy. Dane z plików > historia rozmowy > dane od użytkownika > "nie wiem". Jeśli informacji nie ma w żadnym ze źródeł - jedyna dopuszczalna odpowiedź to "nie mam tych danych".

  2. Zakaz podawania liczb bez źródła. Każda liczba, data, kwota musi mieć przypisany plik i linijkę: "12 450 PLN (według finanse.md:12)". Brak źródła = zakaz podania liczby.

  3. Czarna lista słów. Całkowity zakaz: "około", "prawdopodobnie", "mniej więcej", "zazwyczaj", "standardowo". Zamiast nich - konkrety albo szczere "nie wiem".

To nie eliminuje halucynacji w 100%. Ale drastycznie ogranicza sytuacje, w których AI podaje zmyślone dane jako fakty. Agent woli powiedzieć "nie mam tej informacji, sprawdzę" niż zmyślić odpowiedź - bo tak napisałem w instrukcjach.

Opisałem go szczegółowo - z pełnym kodem, szablonem i przykładami - w osobnym artykule: Zero Hallucination Protocol - jak sprawić, żeby AI nie zmyślało.

Co zrobiłbym inaczej

Kilka rzeczy, które widzę z perspektywy czasu.

Zacząłbym od jednego agenta, nie sześciu. Na początku wystarczy /ceo z porannym briefingiem. Reszta ról może dojść organicznie, gdy pojawi się potrzeba. Próba zbudowania całego systemu od razu to przepis na wypalenie.

Profil komunikacji napisałbym wcześniej. Ghost był jednym z ostatnich agentów, a powinien być jednym z pierwszych. Każdy tekst, który wysyłam - mail, Slack, wiadomość - przechodzi przez niego. Gdybym zaczął od ghostwritera, zaoszczędziłbym tygodnie ręcznego poprawiania.

Strukturę folderów zaplanowałbym z góry. Przez pierwszy tydzień pliki lądowały w losowych miejscach. Teraz mam regułę: jeden temat = jeden plik, jeden folder na domenę. Ale przenoszenie plików po fakcie to strata czasu.

Testy integracji. Serwery MCP czasem nie odpowiadają - token wygasł, serwer nie działa, dane się nie zsynchronizowały. Nie mam automatycznych testów, które by to wychwytywały przed porannym briefingiem. Robię to ręcznie, a powinienem zautomatyzować.

Backup. Pliki markdown to moje dane osobowe, cele, plany finansowe. Regularny backup tego katalogu na szyfrowany dysk zewnętrzny - to rzecz, którą dodałem zbyt późno.

Jak zbudować własny system

Konkretne kroki, żeby zacząć od zera.

Krok 1: Claude Code + CLAUDE.md

Zainstaluj Claude Code (wymaga konta Anthropic Pro lub Max). Utwórz plik CLAUDE.md w katalogu projektu. To instrukcja systemowa - Claude czyta ją automatycznie na początku każdej sesji.

Zacznij od prostego:

# Mój asystent

## Kim jestem
- Imię: [Twoje imię]
- Rola: [co robisz]
- Lokalizacja: [gdzie]
- Dni pracy: [kiedy]

## Styl komunikacji
- Bądź konkretny, nie ogólnikowy
- Jeśli nie wiesz - powiedz "nie wiem"
- Ogranicz entuzjazm

30 linijek na start. Rozbudujesz z czasem.

Krok 2: pierwsza integracja MCP

Zainstaluj jeden serwer MCP. Polecam zacząć od Google Calendar - daje natychmiastową wartość.

Konfiguracja w pliku ~/.claude/mcp.json:

{
  "mcpServers": {
    "gcalendar": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-google-calendar"]
    }
  }
}

Po konfiguracji Claude widzi Twój kalendarz. Możesz pytać "co mam dzisiaj?" i dostawać odpowiedzi z realnymi danymi.

Krok 3: pamięć w markdown

Utwórz folder DATA/ z plikiem profil.md. Zapisz tam podstawowe informacje o sobie. Dodaj w CLAUDE.md instrukcję:

## Kontekst
Przed odpowiedzią przeczytaj DATA/profil.md

Od tego momentu Claude Cię "zna" między sesjami.

Krok 4: profil komunikacji

Zbierz 10 swoich maili lub wiadomości. Wypisz powtarzające się wzorce. Zapisz w pliku i dodaj do instrukcji ghostwritera.

To praca na 2-3 godziny, ale zwraca się wielokrotnie.

Krok 5: iteracja

System buduj organicznie. Jak zauważysz że robisz coś powtarzalnie - automatyzuj. Jak AI popełni błąd - dodaj regułę do Lessons Learned. Jak potrzebujesz nowej integracji - dodaj serwer MCP.

Mój system nie powstał w weekend. Powstawał przez tygodnie codziennego używania i poprawiania.

Na koniec

System, który opisałem, rozwiązuje trzy problemy: rozproszenie narzędzi (jeden interfejs zamiast dziesięciu), AI brzmiące jak AI (ghostwriter wytrenowany na moim stylu) i utrata kontekstu między sesjami (pliki markdown jako trwała pamięć).

Nie jest doskonały. Serwery MCP czasem padają. Pliki markdown nie skalują się w nieskończoność. Model halucynuje pomimo protokołu precyzji.

Ale robi jedną rzecz dobrze: oszczędza czas na powtarzalnych zadaniach i daje mi informacje, których potrzebuję, w momencie gdy ich potrzebuję. Poranny briefing w 5 sekund zamiast 15 minut klikania. Mail napisany w moim stylu w 10 sekund zamiast 5 minut poprawiania generycznego tekstu. Tygodniowy plan z uwzględnieniem kalendarza, zadań, celów i stanu zdrowia - w jednym komunikacie.

Jeśli jesteś developerem lub osobą techniczną, masz wystarczająco narzędzi żeby zbudować podobny system. Claude Code, MCP, pliki markdown. Cała reszta to konfiguracja i iteracja.

Szczegółowy opis architektury, konfiguracji i wszystkich agentów znajdziesz w case study.

Buduję systemy z agentami AI i automatyzacjami dla firm - szczegóły na stronach agenci AI i automatyzacja procesów.


KC
Kamil Czurak

Pomagam firmom wdrażać AI, które działa - od chatbotów po automatyzacje i agentów. 7 lat jako programista, z czego ostatnie 2 w AI.

Więcej o mnie →

Chcesz podobne rozwiązanie?

Wybierz termin w kalendarzu - 30 minut, zero zobowiązań.

Umów konsultację