Personalization Plane: USER.md/SOUL.md ("Thoth") als Setup-Schritt + Doctor-Check, nicht als Distributionsinhalt #2
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Session-Tag:
perplexity-gbrain-personalization-2026-08-23(Diskussion läuft in Perplexity, referenziert diesen Tag für Fortsetzung/Wiederaufnahme, z. B. in Claude Code)Kontext
Ausgangspunkt war ein Vergleich von
llm-wiki-test1mit dem privaten gbrain-Bootstrap-Repotorbennehmer/nathan-workspace(GitHub, nur zur Ansicht, nicht in Betrieb) bzw. dessen Gitea-Spiegeltorben/llm-wiki-gbrain. gbrain ist Garry Tans Open-Source Agent-Brain-Framework (OpenClaw/Hermes). Ziel war nicht die Übernahme des gesamten gbrain-Modells, sondern das gezielte Herausziehen einzelner Ideen für diesen Wiki-Stack, der architektonisch die "Brain-Repo"-Seite (deterministische Wissenskompiler-Pipelineraw/ → types/+tools/ → kb/ → reports/) ist, während gbrain die "Agent-Repo"-Seite (Persona, Memory, Gates) abdeckt.USER.md/SOUL.md/AGENTS.md von
nathan-workspacewurden im Volltext verifiziert (Gitea-Spiegel, SHA-identisch zum GitHub-Original) und mit zwei zusätzlichen externen LLM-Analysen abgeglichen. Ergebnis: beide Analysen waren im Kern korrekt, aber (a) ein vorgeschlagener USER.md-Entwurf widersprach dem eigentlichen "wörtlich, nie paraphrasiert"-Prinzip des Originals, und (b) ein Vorschlag, gbrains Per-Message-Gates 0–7 komplett zu übernehmen, kollidierte mit Invariante 3 vonAGENTS.md("Never file an unsourced answer into the wiki") – konkret Gate 7 ("Write it down – same turn").Update 2026-08-29 (Runde 1):
USER.md-Entwurf mit Torben durchgesprochen und korrigiert.Update 2026-08-29 (Runde 2): Frage "Rolle vs. Hobbys" entschieden. Produktname-Frage in Issue #3 ausgelagert (pausiert).
Update 2026-08-29 (Runde 3): gbrain-Feature-TODOs gegen den Code verifiziert.
Update 2026-08-29 (Runde 4): Die drei verbliebenen gbrain-Feature-TODOs sind keine inhaltliche Voraussetzung für die Personalization Plane (USER.md/SOUL.md betreffen Identität/Ton, die TODOs betreffen Pipeline-Mechanik) und wurden daher in drei eigene, von diesem Issue abgezweigte Issues ausgelagert: #4 (Link-Disziplin & xref-Auto-Scan), #5 (
wiki-verify-Skill), #6 (Backlink-boosted Ranking). Dieses Issue ist damit wieder rein auf die Personalization Plane fokussiert.Entscheidung
Übernehmen:
USER.mdundSOUL.mdals reine Kontext-/Stil-Dateien, ohne neue Autorität und ohne Gates. Persona bekommt einen Namen passend zur bestehenden Systemnamens-Mythologie (Ra, Osiris, Isis, Amonre, alexandria, Memex, Tolkien Gateway) statt einer generischen Bezeichnung: Thoth (ägyptischer Gott der Schrift/des Wissens/Bibliothekar der Götter).Bewusst NICHT übernehmen:
kb/)MEMORY.md/HEARTBEAT.md– Rolle wird bereits durchkb/log.md+ Iteration-Budget-Gate abgedecktEntschieden (Runde 2):
Primäre RolleinUSER.mdbleibt rein beruflich ("Software-Architekt"); Handball-SR-Chef/Kochen/Pferdehof bleiben ausschließlich imHobbys-Abschnitt.Vorgeschlagene Dateien
USER.md(Entwurf, Stand 2026-08-29 — inhaltlich final abgestimmt)SOUL.md(Entwurf — Persona "Thoth", unverändert)Patch für
AGENTS.md(nur Ergänzung, keine Regel geändert)File-naming-Tabelle, zwei neue Zeilen:
Neuer Abschnitt nach den Invarianten:
Verwandte Issues
wiki-verify-SkillAlle vier sind unabhängig von diesem Issue umsetzbar; sie brauchen die Personalization Plane nicht als Voraussetzung.
Bewusst verworfen (nicht erneut vorschlagen ohne neuen Grund)
MEMORY.md/HEARTBEAT.mdals eigene DateienDieser Issue kann in Claude Code oder einer anderen Agenten-Session weitergeführt werden. Bitte bei Fortschritt Checkboxen abhaken und ggf. per Kommentar aktualisieren — die Diskussion läuft parallel auch in Perplexity unter dem Session-Tag oben weiter.
Changelog 2026-08-29 (Review-Runde mit Torben, via Perplexity/Session-Tag oben):
Änderungen am
USER.md-Entwurf:Primäre Rolleauf "Software-Architekt" präzisiert; Hobbys nicht in diese Zeile gemischt, bleiben imHobbys-Abschnitt (offene Rückfrage, ob das so gewünscht ist — siehe TODOs)## Präferenzen-Sektion entfernt: duplizierte die geltenden System-/Space-Instruktionen (knapp, Tabellen, Quellenpflicht, Deutsch) — Verstoß gegen die eigeneAGENTS.md-Invariante 8 ("one rule, one place"), wenn das hier zusätzlich stündellm-wiki-test1)", da der Produktname noch offen istÄnderungen an den TODOs:
SOUL.md(Thoth) und derAGENTS.md-Patch-Vorschlag: unverändert, keine Korrekturen angefordert.Volltext beider Dateien steht aktuell in der Issue-Beschreibung, nicht hier im Kommentar, um Drift zwischen Kommentar und Issue-Body zu vermeiden.
torben referenced this issue2026-08-29 21:46:45 +00:00
Changelog 2026-08-29, Runde 2:
Primäre Rollerein beruflich, Hobbys nur imHobbys-Abschnitt. Keine Änderung am Dateiinhalt nötig.llm-wiki-test1imUSER.md-Entwurf durch neutrale Verweise auf "dieser Wiki-Stack" + Link auf #3 ersetzt, damit der Text nicht erneut geändert werden muss, sobald der Name feststeht.USER.mdauf "inhaltlich final abgestimmt" gehoben (keine offenen Bestätigungen mehr in diesem Issue).SOUL.md(Thoth) und derAGENTS.md-Patch: weiterhin unverändert.Wichtig für Weiterarbeit (auch außerhalb von Perplexity, z. B. Claude Code): Die tatsächliche Umbenennung des Repos/Stacks ist ab jetzt komplett aus dem Perplexity-Workflow herausgenommen — das übernimmt Torben eigenständig, sobald in #3 ein Name feststeht. Dieser Issue (#2) bleibt auf die Personalization-Plane-Inhalte und die gbrain-Feature-TODOs beschränkt.
Changelog 2026-08-29, Runde 3 — Feature-TODOs gegen den Code verifiziert:
Hinweis vorab: Das Repo hat seit Runde 1 neue Commands bekommen (
cite_cmd.py,dist_cmd.py,doctor.py,eval_cmd.py,version_cmd.py,work_cmd.py;xref.pyliegt jetzt untercommands/, nicht mehr direkt unterwiki_tools/). Ich habe gegen den aktuellen Stand aufmaingeprüft, nicht gegen die Momentaufnahme vom 23.08.Registry-first Entity-Resolution – bereits erledigt.
instructions/wiki-ingest/SKILL.md, Schritt 3, verlangttools/wikitool search "<Entität/Konzept>"vor jedem Schreibvorgang; die Decision-Points-Sektion benennt explizit den Zweck ("Two pages on one subject is the failure this step exists to prevent"). Deckt gbrainsbrain-ingest-gate-Idee schon ab — Haken gesetzt, kein Task mehr.Link-Disziplin – bleibt offen.
instructions/publish-cycle.mdendet mitwikitool publish --message "...", ohne dass irgendwo ein Permalink an den Nutzer zurückgegeben wird. Echte, kleine Lücke.xref.py Kostencheck – differenzierter als gedacht. Volltext von
tools/wiki_tools/commands/xref.pygelesen:add,remove,link-sourcesind reine Frontmatter-/Body-String-Operationen (Regex auf## Relationships/## See Also-Abschnitte), keine LLM-Calls im Tool. Die eigentliche Lücke zu gbrains Auto-Link ist eine andere: gbrain erkennt bekannte Entity-Namen in Rohtext automatisch (deterministischer Scan); bei uns muss der Agent die Erkennung selbst machen und dannxref add/link-sourcevon Hand aufrufen. Wäre nachrüstbar alsxref scan-Befehl (Alias-Abgleich gegenkb/index.md), aber das ist eine neue Idee, kein Bugfix am Bestehenden.wiki-verify-Skill – bleibt offen.docs_verify.py(18,6 KB) geht durch — prüft aber Naming-/Schema-Konsistenz, nicht Quellen-Ketten. Kein Überlapp mit der vorgeschlagenen Idee.Backlink-boosted Ranking – bleibt offen.
tools/wiki_tools/search/fuse.pyvolltext gelesen: reine Reciprocal Rank Fusion (RRF_K = 60) zwischen Suchbackends, sortiert nach-score, title. Kein Backlink-Signal im Score.Netto: von 5 TODOs sind 1 erledigt, 1 präzisiert (xref selbst ok, aber kein Auto-Scan), 3 unverändert offen (Link-Disziplin, wiki-verify, Backlink-Ranking).
Changelog 2026-08-29, Runde 4 — Feature-TODOs in eigene Issues ausgelagert:
Die drei verbliebenen gbrain-Feature-TODOs sind technisch unabhängig von USER.md/SOUL.md/AGENTS.md-Patch (unterschiedliche Subsysteme, keine gemeinsamen Dateien, keine Reihenfolge-Zwang) und wurden entsprechend ausgelagert:
xref scan-Befehl). Beide gebündelt, weil sie um dasselbe Problem kreisen (Referenzen zu unsichtbar/manuell), aber unterschiedliche Dateien anfassen.wiki-verify-Skill (Claim-Chain-Verifizierung für Low-Confidence-Seiten)search/fuse.py— einziger Punkt mit Eingriff in bestehenden Kern-Code statt reiner Ergänzung, entsprechend höheres RisikoDieses Issue (#2) ist jetzt wieder rein auf die Personalization Plane fokussiert:
USER.md,SOUL.md(Thoth),AGENTS.md-Patch. Inhaltlich alles final abgestimmt — offen ist hier nur noch die Umsetzung selbst (Dateien committen, Patch einpflegen), was außerhalb dieser Session passiert.Update 2026-08-29/30, Runde 5 — Scope-Erweiterung: Templates statt Instanzinhalt, interaktive Installation, Doctor-Check
Torbens Einwand: USER.md/SOUL.md sollen zwar nicht Teil der Distribution sein (persönlicher Inhalt gehört nicht in jede exportierte Kopie), sind aber für den Betrieb notwendig – also müssen sie während der Installation entstehen, nicht vorab mit Inhalt gefüllt in
dist exportlanden. Passendes Vorbild bereits im Stack vorhanden:instructions/setup-instance.mdhat exakt dieses Muster für Autor-Identität, Remote und KB-Sprache – interaktive Entscheidungspunkte, "nie raten, nie stillschweigend aus dem Quell-Repo übernehmen".Geänderter Plan:
Zwei Template-Dateien statt gefüllter Inhalte —
USER.md.templateundSOUL.md.templateim Root. Diese werden vondist exportmitgeliefert (keindist:strip, anders alsinstructions/dev/), weil sie Betriebsvoraussetzung sind, nicht Stack-Entwicklung. Beide tragen einen Sentinel-Satz ("TEMPLATE — nicht ausgefüllt"), der sie eindeutig von einer echten, befüllten Instanz unterscheidbar macht.Neuer Entscheidungspunkt in
setup-instance.md— zwischen dem bestehenden KB-Sprache-Schritt (5) und der Werkzeugumgebung (6), oder danach: "Personalization (USER.md/SOUL.md)". Der Agent interviewt den Nutzer entlang der Template-Struktur (Name, Standort, beruflicher Kontext, Hobbys, Präferenzen für USER.md; Persona-Name/Rolle/Stimme für SOUL.md), schreibt die Antworten wörtlich, nie erfunden (dasselbe Prinzip wie im Original-USER.mdvon gbrain), und benennt die Templates zuUSER.md/SOUL.mdum bzw. ersetzt sie durch die befüllte Fassung.Neuer
tools/wikitool doctor-Check — "Personalization files": FAIL, wennUSER.mdoderSOUL.mdfehlen, oder wenn sie noch den Sentinel-Satz aus dem Template enthalten (unbefüllt). Fix-Kommando in der Fehlermeldung: Verweis auf den neuen Personalization-Schritt insetup-instance.md. Das folgt demselben Muster wie die bestehendendoctor-Checks (OK/WARN unblockierend, FAIL mit eigenem Fix-Kommando, sieheINSTALL.mdAbschnitt Verifikation).Bootstrap-Pfad (Weg C, bestehenden Clone) — für Torbens eigene Instanz (die schon Git-Repo, Autor und Inhalt hat) greift der gleiche Doctor-Check:
USER.md/SOUL.mdfehlen aktuell komplett,doctorwürde also FAIL melden, sobald der Check existiert. Der Personalization-Schritt müsste dann einmalig manuell nachgeholt werden (nicht über den vollensetup-instance.md-Ablauf, der für frische Distributionen gedacht ist) — dafür brauchtbootstrap.mdeinen kurzen Verweis, analog zum bestehenden Troubleshooting-Eintrag inINSTALL.md.Was das für die bisherigen Entwürfe bedeutet: Der in diesem Issue gezeigte
USER.md/SOUL.md-Inhalt (Torbens Daten, Thoth) bleibt gültig — aber er ist jetzt das Ergebnis des Personalization-Schritts für diese eine Instanz, nicht der Distributionsinhalt. Die Templates sind eine neue, zusätzliche Ebene darunter.Offen für die Umsetzung:
USER.md.templateundSOUL.md.templateentwerfen (Platzhalter-Struktur + Sentinel-Satz)setup-instance.mdeinfügen (Nummerierung der Folgeschritte verschiebt sich)doctor-Check "Personalization files" intools/wiki_tools/commands/doctor.pyergänzendist_cmd.pyprüfen: sicherstellen, dass die.template-Dateien nicht versehentlich vomdist:strip-Mechanismus erfasst werdenINSTALL.md/bootstrap.mdfür den Nachhol-Fall bei bestehenden Clones (Weg C)Personalization Plane: USER.md + SOUL.md ("Thoth") aus gbrain-Analyse übernehmento Personalization Plane: USER.md/SOUL.md ("Thoth") als Setup-Schritt + Doctor-Check, nicht als DistributionsinhaltUmgesetzt in
6f54c31, Stack-Version 1.1.0 (Claude-Code-Session, 2026-08-30).Alle sechs offenen Punkte aus Runde 5 sind erledigt:
USER.md.templateundSOUL.md.templateentworfen — Platzhalter-Struktur plus Sentinel-Zeilewikitool:template-unfilled. Die Abschnitte sind bewusst so geschnitten, dass sie der Fragenkatalog des Interviews sind, in Antwortreihenfolge.setup-instance.md— Entscheidungspunkt 6 (Personalization), Folgeschritte auf 7–13 verschoben. Der Scope-Absatz nennt Schritt 6 als einzige Ausnahme, die auch für einen bestehenden Clone gilt.doctor-Checkpersonalizationintools/wiki_tools/commands/doctor.py— FAIL bei fehlender Datei und bei einer, die noch den Sentinel trägt (ein umbenanntes Template ist kein ausgefülltes), mit eigenem Fix-Kommando.dist_cmd.pygeprüft — die Templates stehen jetzt inROOT_FILES. Dass die befüllten Dateien nicht exportiert werden, ist keine zusätzliche Regel, sondern Folge der bestehenden Root-Allowlist: ein Name, der dort nicht steht, wird nicht kopiert. Ein Test hält beide Richtungen fest.INSTALL.md(Weg B, Weg C, Verifikation, Troubleshooting) undbootstrap.md(neuer Schritt 4) für den Nachhol-Fall.USER.md/SOUL.mdwörtlich aus dem in diesem Issue abgestimmten Entwurf übernommen, Thoth als Persona.Ungeplant, aber notwendig: der CI-Replay von
setup-instance.mdwäre am neuen FAIL gestorben. Er stubbt den Entscheidungspunkt jetzt so wie die Autor-Identität — mit einer festen Antwort (Template minus Sentinel-Zeile). Geprüft wird damit, dass der Export die Templates trägt, nicht, was ein Mensch hineinschreibt.Version 1.1.0 (
--minor), bewusst keine Migration. Die Frage kam auf und wurde gegen den Code geprüft, statt aus dem Namen abgeleitet:kb_state.py(kb_version= „what shape the content is in"), dasmigrates_to-Schema („the stack version whose content shape this migration produces"),migrate-corpus.md(„a change that touches the shape of pages"),migrate done --pages N,migrate verify --path kb/<area>. Diese Änderung fasst null Seiten an.compat_keyvon1.0.1und1.1.0ist beidesmal(1,)— gleicher Key, alsostate: update.check_migration_for_boundaryfragt gar nicht erst nach einer Migration.migrate done 1.1.0würdekb_versionheben und damit behaupten, der Inhalt sei in 1.1.0-Form, weil jemand eineUSER.mdgeschrieben hat — das Feld bedeutete ab da zweierlei. Und bei frischen Instanzen liefe die Migration nie, weildist exportkb_version = VERSIONschreibt; sie wäre genau dort unsichtbar, wo Personalization tatsächlich fällig ist.doctor. Direkter Präzedenzfall zwei Checks weiter oben:skills: FAIL → instructions sync— auch eine einmalige Aktion nach einem Upgrade, ohne Migrationsdokument.doctorist hier sogar strikt besser, weil selbstprüfend: er meldet FAIL, bis die Dateien wirklich da und ausgefüllt sind, währendmigrate doneeine Behauptung ist, die man ohne die Arbeit aufstellen kann. Und er feuert am richtigen Punkt —INSTALL.mds Upgrade-Ablauf ruft ihn in Schritt 6 auf.Eine Lücke bleibt ehrlich benannt:
migrate statussagt „nothing outstanding", während eine Personalization offen sein kann. Gedeckt dadurch, dass der dokumentierte Upgrade-Pfaddoctorundmigrate statusnebeneinander aufruft. Wer will, dassmigrate statusauch instanzweite Schulden kennt, braucht dafür eine eigene Änderung an der Maschinerie — kein Migrationsdokument für 1.1.0.Zur „bewusst verworfen"-Liste hinzuzufügen: ein Migrationsdokument für die Personalization Plane (Begründung oben).
Verifiziert vor dem Publish: 634 Tests,
docs verify,instructions verify,doctor, und der komplette CI-Replay gegen einen frischendist export— inklusivedoctorFAIL vor und OK nach dem Personalization-Stub.#3, #4, #5 und #6 bleiben offen und unberührt.