diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 0000000..45e874f --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://json.schemastore.org/claude-code-settings.json", + "hooks": { + "SessionStart": [ + { + "hooks": [ + { + "type": "command", + "command": "mempalace hook run --hook session-start --harness claude-code" + } + ] + } + ], + "Stop": [ + { + "hooks": [ + { + "type": "command", + "command": "mempalace hook run --hook stop --harness claude-code" + } + ] + } + ], + "PreCompact": [ + { + "hooks": [ + { + "type": "command", + "command": "mempalace hook run --hook precompact --harness claude-code" + } + ] + } + ] + } +} diff --git a/CLAUDE.md b/CLAUDE.md index 0199d3d..b04ecd1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -156,3 +156,48 @@ python test_extract.py test_extract_docx.py test_genotype.py test_merge_resol 3. `dotnet build` + `dotnet test` grün. 4. Bei Import-Änderungen: `python test_*.py` grün + `resolved_import.json` plausibel (Stichprobe), danach App neu starten + `POST /import/ingest-resolved`. + +## Gedächtnis (MemPalace) — IMMER nutzen + +Dieses Projekt nutzt **MemPalace** als KI-Langzeitgedächtnis (lokal, kein API-Key). +Die Anbindung ist im Repo persistiert und lädt automatisch: +- `.mcp.json` (committet) registriert den MCP-Server `mempalace-mcp` → **19 MCP-Tools** + (`mempalace_search`, `mempalace_kg_query/add/invalidate/timeline`, `mempalace_add_drawer`, + `mempalace_diary_*` …). Aktiv ab Claude-Neustart (MCP-Server einmal bestätigen). +- `.claude/settings.json` (committet) verdrahtet die Hooks + `mempalace hook run --hook {session-start,stop,precompact} --harness claude-code`: + **SessionStart** lädt relevanten Kontext automatisch, **Stop/PreCompact** persistieren. +- Voraussetzung: `mempalace` ist installiert und auf PATH (`~/.local/bin`). Nach `git clone` + ggf. MemPalace installieren; `mempalace.yaml` (Raum-Config) ist bewusst **gitignored** + (per-project, lokal). Der Palast selbst liegt lokal unter `~/.mempalace` (nicht im Repo). + +**Arbeitsweise pro Session:** zu Aufgabenbeginn relevantes Wissen abrufen +(`mempalace_search` / `mempalace_kg_query`), bevor du im Code suchst; am Ende neue +durable Erkenntnisse ablegen. + +### Memory-Policy — WANN / WIE / WO eine Memory anlegen + +**WANN** (anlegen): nur **dauerhaft** nützliches, **nicht-offensichtliches** Wissen, das +künftige Sessions braucht — Architektur-/Design-Entscheidungen und ihr *Warum*, Domänenregeln +(z. B. 6-Jahre-Lebensspanne, Geschwisterverpaarung), Konventionen, Stolperfallen, bestätigte +Nutzer-Präferenzen, wiederkehrende Workflows. +**NICHT anlegen**: transienter Task-Status; was Code/Git/CLAUDE.md ohnehin festhalten; +Dinge, die nur für das aktuelle Gespräch zählen. + +**WIE** (anlegen/pflegen): +- Fakt mit Gültigkeit → `mempalace_kg_add`. Freitext-Notiz/Erkenntnis → `mempalace_add_drawer` + (vorher `mempalace_check_duplicate`). +- Ändert/erledigt sich ein Fakt → `mempalace_kg_invalidate` (setzt End-Datum, **nicht löschen** — + der Graph ist temporal). So bleibt nichts veraltet stehen. +- Repo-Dateien werden über `mempalace mine ` automatisch gefilet; `mempalace sync --apply + --wing gerbilmanager` entfernt Drawers gelöschter/verschobener Dateien. + +**WO** (welcher Speicher): +- **MemPalace-Palast** (`~/.mempalace`, lokal): reichhaltiges, durchsuchbares Recall — der Default + für Memories. +- **CLAUDE.md** (Repo, committet): die **kanonischen** Projektfakten/Konventionen, die geteilt und + versioniert sein müssen. Wichtige durable Erkenntnisse hier spiegeln, damit sie im Repo (nicht nur + lokal) liegen. + +Faustregel: durable + projektweit kanonisch → **CLAUDE.md** *und* Palast; sonstiges durable Wissen → +Palast; veraltetes → invalidieren, nicht stehen lassen.