jhonny's brain to wspólny mózg agentów OpenClaw. Nie notatnik — silnik pamięci: fakty, decyzje, graf teorii, eksperymenty i proweniencja w jednej bazie. Wyszukiwanie semantyczne łapie to, czego grep nigdy nie znajdzie, a każda pewność jest mierzona.
Cała trwała wiedza agentów — decyzje, fakty, skille, encje kodu, węzły teorii, zdarzenia sesji, konflikty przekonań, proweniencja — żyje w schemacie openclaw na Postgresie (localhost:5432) i jest wystawiona przez narzędzia MCP. Graf jest szybszy, tańszy w tokenach i daje kontekst strukturalny (kto woła, co zależy, jakie były wcześniejsze decyzje, znane tryby porażki), którego skanowanie plików nie da.
Pamięć epizodyczna (wpisy agentów) i fakty strukturalne (topic / scope / confidence). Zapis sprzężony z embeddingiem — każdy wpis dostaje wektor i trafia do indeksu ANN.
Dwukierunkowy bridge przez stream-json + ACP. Agent OpenClaw deleguje do Claude Code i odbiera wynik — pamięć i runtime spięte w jeden obieg.
Kanoniczne dokumenty, skille i narzędzia (postgres-authoritative), dziennik zdarzeń projektu, profile agentów oraz graf encji kodu z zależnościami (kto woła kogo).
Warstwa orkiestracji: routing zadań, śledzenie zakończeń asynchronicznych i event bus spinający wielu agentów oraz runtime'y.
Graf teorii (przekonania i hipotezy), eksperymenty (trials), pętla feedbacku, kalibracja Brier i DAG proweniencji. Tu pamięć przestaje być archiwum, a zaczyna być modelem świata, który sam się weryfikuje.
Tekst → wektor 4096-dim modelem Qwen3-Embedding-8B na GPU.
Wpis ląduje w Postgresie z wektorem (halfvec HNSW), topic, scope i confidence.
Zapytanie → semantyczne top-K przez HNSW (synonimy, parafrazy — nie tylko substring).
Warunkowy re-ranking par query+dokument cross-encoderem Nemotron 1B dla precyzji.
Wszystko pod namespace mcp__jhonnys-brain__*. Cztery rodziny: czytanie, zapis, drugi mózg i kod/agenci.
memory_searchsemantyczne nad epizodamifact_queryfakty po topic/scope/confidenceproject_events_query„co robiłem wczoraj?"theory_graph_searchprzekonania i hipotezycode_entity_searchklasy/funkcje + callersmemory_storenotatka / decyzja / wynikfact_addfakt z confidence ≥0.8theory_node_addnowa relacja przyczynowaexperiment_logtrial → auto-flip krawędzifact_provenance_setDAG „skąd to wiem"theory_calibration_reportBrier per relacjaexperiment_proposeprotokół z luk grafuskill_efficacy_reportktóre skille działająbelief_conflicts_listsprzeczności semantycznefact_lineagespacer po proweniencjishared_docs_listkanoniczne docsshared_skills_listrejestr skilliagent_profile_getpersony + model bindingscode_dependenciescallers / calleesconversation_appenddialog cross-runtimeReguła jest twarda: przed każdym lookupem, decyzją czy debugiem — najpierw pytaj pamięć. Po każdym nietrywialnym wyniku — pisz z powrotem. Następna sesja startuje ze stanu obecnego, nie od zera.
Hosty, tokeny, wcześniejsze decyzje, architektura, znane incydenty → memory_search + fact_query + project_events_query. Pliki dopiero gdy graf nie pokrywa.
Przed stemplem pewności ≥0.9 → theory_calibration_report. Przed nowym faktem na znanym temacie → belief_conflicts_list (80% konfliktów to redundantne dopiski).
Zwalidowany fakt → fact_add. Wynik → memory_store. Eksperyment → experiment_log (trigger auto-aktualizuje status krawędzi teorii).
Każda relacja w grafie teorii ma policzony Brier score — miarę, jak trafne były dotychczasowe priory. Obecny system jest overconfident o +0.256, więc świeże priory dyskontuje się o tę deltę.
Eksperymenty (experiment_log) auto-przełączają status krawędzi teorii. Konflikty przekonań są wykrywane semantycznie. Proweniencja (tool_outcomes → events → facts → trials) jest audytowalna przez fact_lineage. To nie magazyn — to model świata, który się falsyfikuje.
„Dlaczego X, a nie Y" żyje tylko w pamięci — nie da się tego odtworzyć ze skanu plików.
git log gubi intencję, czat jest stratny. project_events to jedyny pełny ślad.
4096-dim embeddingi łapią synonimy i parafrazy, których grep nie złapie.
Następna sesja startuje ze stanu obecnego, a nie od zera.
Brier mówi wprost, czy priory są godne zaufania — i o ile je zdyskontować.
Trigger flaguje duplikaty ≥0.85 cosine, zanim dorzucisz redundantny fakt.