Fremdes Second Brain evaluieren: JonasKruegerCode/SecondBrain
Ausgangslage aus dem Capture: Dich interessiert, wie das Repo JonasKruegerCode/SecondBrain technisch umgesetzt ist und ob du etwas davon für dein eigenes Second Brain übernehmen könntest. Kurzfazit vorweg: Es ist im Kern dieselbe Idee wie meine (Karpathys LLM-Wiki, Markdown-Vault in Git, Review-Agent), aber als schwergewichtiger, selbst gehosteter RAG-Dienst gebaut. Die portable Idee zum Mitnehmen ist die MCP-Schnittstelle, nicht der Datenbank-Stack.
1. 🔍 Was das Repo technisch ist
Ein persistenter MCP-Memory-Layer für KI-Agenten (Python, MIT-Lizenz, self-hosted via Docker Compose). Ein Agent (claude.ai, OpenClaw oder eigener MCP-Client) bekommt zwei Werkzeuge:
| Tool | Was es tut |
|---|---|
remember(text) | Zerlegt den Input in einzelne Themen, sucht verwandte bestehende Seiten, lässt einen LLM-Planungsagenten (Wikipedia-Stil) entscheiden, was neu/aktualisiert wird, schreibt Markdown-Wiki-Seiten in einen Git-Vault, updatet Graph und Index. Läuft asynchron. |
recall(query) | HybridRAG: Vektorsuche plus Graph-Traversierung plus LLM-Synthese, gibt eine kontextuelle Antwort aus dem Wiki zurück. |
Der Speicher liegt in vier Schichten: ein Markdown-Vault (Git-synct, Obsidian-kompatibel), ein Neo4j-Graph (Linkstruktur über [[wikilinks]]), ein Qdrant-Vektorindex (semantische Ähnlichkeit) und eine Redis/Celery-Queue (asynchrones Ingest, geplanter Review). Dazu ein stündlicher Review-Agent, der verwandte Seiten verlinkt und Widersprüche auflöst, plus eine Web-UI mit Graph-Visualisierung. LLM-Calls laufen über OpenRouter oder Google AI.
2. 🪞 Wo das meinem Modell gleicht
Auffällig viel. Mein Konzept-Post beschreibt fast dieselben Bausteine, nur anders gewichtet:
| Baustein | Jonas | Mein Setup |
|---|---|---|
| Single Source of Truth | Markdown-Vault in Git | Markdown in Git, identisch |
| Ingest-Idee | remember() mit Planungsagent (anlegen/aktualisieren) | Ingest-Lauf (Agent draftet OKF-Seite), siehe Betrieb & Moderation |
| Lint/Pflege | stündlicher Review-Agent (Querlinks, Widersprüche) | periodischer Lint-Lauf, gleiche Aufgabe |
| Graph | Neo4j über [[wikilinks]] | Markdown-Links als Graph |
| Denkfigur | Wikipedia-Agent = einmal kompilieren | «kompilieren statt abrufen» (Karpathy) |
Das ist eine schöne Bestätigung: Zwei unabhängige Umsetzungen derselben Denkfigur landen bei Markdown-Vault plus Ingest-Agent plus Review-Agent.
3. ⚖️ Wo es bewusst anders ist
Der zentrale Unterschied ist die Abruf-Seite. Jonas legt über den Vault eine HybridRAG-Schicht (Qdrant plus Neo4j plus LLM-Synthese). Genau das lehnt mein Konzept-Post bewusst ab: Ich will die Seite einmal sauber kompiliert lesen, nicht bei jeder Frage neu aus Vektor-Nachbarschaften zusammensynthetisieren lassen. Sein recall() ist gemietete RAG-Infrastruktur, mein Modell ist die fertige Wiki-Seite.
Der zweite Unterschied ist das Gewicht. Sein Stack braucht einen Docker-Host mit Neo4j, Qdrant, Redis, Celery plus einen bezahlten LLM-Key (OpenRouter/GCP) für jeden remember/recall-Call. Das ist kein Free-Tier und kein «liegt einfach als Files da». Meins läuft auf Cloudflare-Free-Tier und statischem Hugo. Den vollen Stack zu übernehmen, würde meine zwei Leitplanken (vendor-frei, Free-Tier) brechen.
Analogie: Bibliothek mit und ohne Auskunft
Wie eine [Bibliothek]: Wir führen beide denselben Katalog aus sauber geschriebenen Karten (Markdown-Vault). Jonas stellt zusätzlich einen Auskunftsroboter an den Eingang, der dir auf Zuruf aus mehreren Karten eine Antwort zusammenredet (HybridRAG). Praktisch, aber der Roboter braucht Strom, Wartung und Gehalt (Server, Datenbanken, LLM-Calls). Ich gehe lieber selbst ins Regal und lese die fertige Karte. Beide haben denselben Katalog, nur einer bezahlt laufend für die Auskunft.
4. 🍴 Was konkret übernehmenswert ist
Drei Kandidaten, nach Passung sortiert:
- MCP-Schnittstelle (
remember/recall) als Agenten-Interface. Das ist die stärkste Idee. Statt nur über den Handy-Worter in dieinbox/zu schreiben, könnte jeder MCP-fähige Agent direkt ins Brain schreiben und lesen. Passt zu meinem Modell, ohne den RAG-Stack zu erzwingen: man kann einrememberbauen, das schlicht eineinbox/-Datei ablegt, und einrecall, das die kompilierte Seite liefert statt RAG zu fahren. remember()zerlegt einen Input in mehrere Themen. Kleine, gute Verfeinerung für meinen Ingest: Ein Capture darf zu mehreren OKF-Seiten werden statt zu einer. Meine Triage macht das implizit schon, explizit «in unabhängige Themen splitten» schärft es.- Review-Agent als geplanter Lauf. Bestätigt, was ich ohnehin mit geplanten Tasks mache. Sein stündlicher Rhythmus ist mir zu aggressiv (mein Modell ist write-first mit Mensch-Review), aber die Aufgabe (Querlinks, Widersprüche) ist deckungsgleich mit meinem Lint.
Nicht übernehmen: Neo4j, Qdrant, Redis/Celery und die HybridRAG-Abrufschicht. Das ist genau die «gemietete» Variante, gegen die mein Konzept argumentiert, und es kostet Free-Tier und Einfachheit.
5. 📝 Fazit
Gutes Vergleichsobjekt, weil es dieselbe Denkfigur unabhängig umsetzt. Es bestätigt meinen Vault-plus-Ingest-plus-Lint-Aufbau und liefert mit der MCP-Schnittstelle eine konkrete Erweiterungsidee. Den Datenbank- und RAG-Teil lasse ich liegen, das ist der bewusste Gegenentwurf, nicht ein Defizit meines Setups.
📚 Weiterführende Links & Quellen
- JonasKruegerCode/SecondBrain — das evaluierte Repo (MCP-Memory-Layer, HybridRAG, MIT).
- Das Konzept: LLM-Wiki trifft OKF — warum «kompilieren statt abrufen» und die Abgrenzung gegen reines RAG.
- So ist mein Second Brain aufgesetzt — meine Architektur als Vergleichspunkt.
- Betrieb & Moderation: der Inbox-Workflow — mein Ingest- und Lint-Lauf, dem
remember()und der Review-Agent gegenüberstehen. - Andrej Karpathy, «LLM Wiki» (Notizen zum Thema «Wissen einmal kompilieren») — die gemeinsame Denkfigur beider Setups.
- Anthropic, Model Context Protocol (MCP-Spezifikation, modelcontextprotocol.io) — der Standard hinter der
remember/recall-Schnittstelle.