12 lipca 2026
Baza wiedzy Obsidian Claude Code — mój SecondBrain wg wzorca LLM wiki
- Claude Code
- AI
- Obsidian
- Produktywność
Pięć lat notatek, trzy narzędzia, zero systemu. Zaczynałem od Google Docs i arkuszy Excela, potem przesiadłem się na notebooki Colab — dla analityka naturalne jest trzymanie tekstu obok kodu. Działało, dopóki nie trzeba było czegoś znaleźć na telefonie, połączyć dwóch tematów z różnych notatników albo wrócić do notatki sprzed roku. Colab nie miał grafu powiązań, nie tworzył niczego automatycznie — wszystko pisałem ręcznie — a „backup” oznaczał w praktyce „leży na Drive’ie”, nie realną strategię. Dziś ten sam problem rozwiązuje mój second brain — baza wiedzy Obsidian Claude Code, którą zbudowałem wg wzorca LLM wiki i która sama się utrzymuje.
Skąd pomysł: LLM wiki zamiast RAG na żądanie
Trafiłem na ten pomysł, śledząc Andreja Karpathy’ego w tematyce LLM-ów — to on ukuł termin „vibe coding”, więc jego głos w agentic coding ma wagę. W swoim giście opisuje alternatywę dla klasycznego RAG: zamiast przeszukiwać źródła na nowo przy każdym pytaniu, LLM stopniowo buduje i utrzymuje trwałą wiki — połączoną kolekcję plików markdown, która stoi między użytkownikiem a surowymi dokumentami. Najważniejsze zdanie z tego tekstu: wiki to „persistent, compounding artifact” — wiedza kompiluje się raz i zostaje aktualna, nie liczy się od zera przy każdym zapytaniu. Obsidian miałem już wcześniej na radarze jako narzędzie z dobrą renomą — brakowało tylko mechanizmu, który zrobiłby za mnie żmudną robotę utrzymania.
Architektura bazy wiedzy Obsidian Claude Code: trzy warstwy, dwa pliki-oś
Wzorzec Karpathy’ego rozbija system na trzy warstwy:
- raw/ — źródła surowe (PDF-y, DOCX-y, transkrypcje), których LLM nigdy nie modyfikuje, tylko czyta.
- wiki/ — notatki generowane i utrzymywane przez model, pocięte tematycznie (u mnie: AI, Analytics, Legal, Personal, Software).
- schema — dokument konfiguracyjny (u mnie
CLAUDE.md), który definiuje strukturę wiki i przepływy pracy.
U mnie to wygląda tak:
Knowledge-Base/
├── CLAUDE.md # schema — architektura, operacje, konwencje
├── index.md # katalog wszystkich stron wiki
├── log-2026.md # log operacji, append-only, rotacja roczna
├── raw/ # źródła — niemodyfikowalne, LLM tylko czyta
├── wiki/ # notatki generowane przez LLM — warstwa docelowa
│ ├── AI/
│ ├── Analytics/
│ ├── Software/
│ ├── Legal/
│ └── Personal/
├── tools/ # extract_context.py — konwersja źródeł do markdown
└── .claude/skills/ # skille wspierające operacje na wiki
Foldery w wiki/ są wyłącznie tematyczne, nie wg pochodzenia pliku — PDF, notatka
z Colaba i transkrypcja z YouTube o tym samym temacie lądują w tym samym miejscu.
Gdy żaden istniejący folder nie pasuje, model zakłada nowy zamiast wciskać notatkę
gdzieś obok na siłę.
Do tego dwa pliki-oś, aktualizowane przy każdej zmianie: index.md — katalog
wszystkich stron wiki z jednolinijkowym streszczeniem, i log.md — chronologiczny
dziennik operacji (u mnie rotowany rocznie, log-2026.md). Bez tych dwóch plików wiki
rozjeżdża się po kilkunastu wpisach — model traci orientację, co już wie i co ostatnio
robił.
Flow: wrzucam plik, agent robi resztę
W praktyce dodanie nowej wiedzy wygląda tak:
- Wrzucam plik do
raw/— PDF, DOCX, notatka z Colaba, cokolwiek. - Mówię agentowi: „zingestuj go”. Nie muszę wskazywać folderu w
wiki/— model sam proponuje kategorię wg tematyki i pyta tylko, gdy pasują dwie naraz. - Agent czyta źródło, omawia ze mną, co z niego wynika, pisze stronę w
wiki/, aktualizuje powiązane notatki orazindex.mdilog.md.
Migruję w ten sposób stare notatki z Colaba i Google Docs — powoli, źródło po źródle — a każdą nową wiedzę od razu zapisuję w tym systemie, zamiast wracać do starych przyzwyczajeń.
Trzy skille i dlaczego kolejność ma znaczenie
Zamiast gotowej wtyczki AI do Obsidiana, cały mechanizm ingestu zbudowałem jako własne skille Claude Code — narzędzie już znałem z pracy nad tą stroną (patrz Claude Code Skills vs Rules) i chciałem pełną kontrolę nad tym, jak model formatuje i linkuje notatki, a nie ustawienia zaszyte w cudzej wtyczce.
Trzy skille, każdy z jedną odpowiedzialnością:
| Skill | Kiedy | Co robi |
|---|---|---|
obsidian_nauka | zaraz po wrzuceniu surowego tekstu | zamienia go w ustrukturyzowaną notatkę — frontmatter, TL;DR, pojęcia, sugestie linków |
obsidian_linkowanie | zaraz po obsidian_nauka (albo osobno, przy przeglądzie wiki) | dopisuje [[linki]] między notatkami wg wspólnych pojęć, buduje graf |
obsidian_markdown | nigdy wprost — konsumowany przez oba powyższe | pilnuje poprawnej składni Obsidian Flavored Markdown |
Kolejność jest twardym wymogiem: obsidian_nauka musi skończyć, zanim ruszy
obsidian_linkowanie — w drugą stronę pliki zostają po cichu pominięte, bo
linkowanie działa tylko na notatkach już sformatowanych. To ta sama zasada, którą
opisałem w tekście o self-review loop:
agent potrzebuje twardej kolejności kroków, jeśli ma na nim polegać bez nadzoru przy
każdym pojedynczym pliku.
Szczegół, który mnie zaskoczył: Web Clipper
Sporo wiedzy czerpię z YouTube’a — format, którego Colab nigdy sensownie nie ogarniał. Wtyczka Obsidian Web Clipper automatycznie taguje materiał wideo i generuje transkrypcję, a Claude Code przerabia ją na ustrukturyzowaną notatkę markdown, bez przepisywania czegokolwiek ręcznie. To jedyny fragment całego systemu, który zaskoczył mnie bardziej, niż się spodziewałem — automatyzuje etap, o którym wcześniej nie myślałem jako o problemie do rozwiązania.
Gdzie to stoi dzisiaj
System jest w fazie budowy, nie w fazie „gotowe” — migracja starych notatek z Colaba i Docsów idzie stopniowo, a graf wiedzy rośnie z każdym nowym źródłem. Nie mam jeszcze twardych liczb do pochwalenia się skalą. To, co już działa, to sam mechanizm: wrzucam źródło, dostaję sformatowaną, połączoną notatkę bez ręcznej roboty, którą przy Colabie musiałem robić sam.
Sama koncepcja Karpathy’ego ma zresztą wbudowaną granicę skalowania — i konkretne narzędzie na tę okoliczność, do którego jeszcze nie sięgam, ale wiem już, po co po nie sięgnę.
Gdy graf przestanie wystarczać: qmd jako dopełnienie, nie zamiennik
Gist Karpathy’ego nie udaje, że linki i przeglądanie index.md wystarczą
w nieskończoność. Przy skali, gdzie nawigacja po grafie robi się wolniejsza niż
wyszukiwanie (rząd wielkości: setki-tysiące powiązanych notatek), wskazuje konkretne
narzędzie: qmd — lokalna wyszukiwarka dla plików
markdown, łącząca pełnotekstowe BM25/FTS5, wyszukiwanie wektorowe (embeddingi)
i re-ranking przez lokalny model LLM. Wszystko na urządzeniu — zero wysyłania notatek
do chmury.
Do mojego systemu wpina się bez zmiany czegokolwiek, bo qmd nie wie i nie musi wiedzieć,
że pliki leżą akurat w wiki/ czy w Obsidian Vault — po prostu wskazujesz folder:
qmd collection add ~/Knowledge-Base/wiki --name second-brain
qmd embed
Trzy tryby wyszukiwania na wybór: search (szybkie słowa kluczowe), vsearch
(semantyczne) i query (hybrydowe z re-rankingiem — najwyższa jakość, kosztem czasu).
Do kolekcji można dopisać opisowy kontekst, co poprawia trafność, gdy w jednym indeksie
mieszają się różne typy notatek.
Najważniejsze dla mojego workflow: qmd ma wbudowany serwer MCP. Podłączam go do Claude Code obok istniejących skilli, i agent dostaje nowe narzędzie — przeszukiwanie treści notatek, nie tylko czytanie plików po ścieżce czy podążanie za linkami. To rozwiązuje problem, którego same linki nie rozwiążą: notatkę, którą model jeszcze nie zdążył z niczym połączyć, bo temat pojawił się raz i nikt — ani ja, ani agent — jeszcze jej nie zlinkował.
Jedno zastrzeżenie: qmd nie integruje się z żadnym pluginem Obsidiana ani interfejsem
samej aplikacji — to zewnętrzne narzędzie, które działa na tych samych plikach .md,
ale osobno od niej. Nie zamienia wiki w RAG. Dokłada wyszukiwanie obok niej.
Co z tego wynika
Dla mnie to coś więcej niż porządkowanie notatek. To ten sam agentic coding workflow, którego uczę się na tej stronie — skille, kolejność operacji, deterministyczne bramki — przeniesiony na własną wiedzę zamiast na kod produkcyjny. Jeśli pracujesz z danymi i masz rozjechane notatki w Docsach, Notion czy własnych plikach, wzorzec Karpathy’ego rozwiązuje dokładnie ten problem: żmudne utrzymanie wiki — linkowanie, kategoryzację, aktualizację indeksu — robi model, Ty zostajesz przy czytaniu i myśleniu.