Gemeinsame Suche „Such in den Chats“: Iris-Chats, Claude-Code-Sessions und Claude-Memory #305

Closed
opened 2026-10-27 00:41:58 +00:00 by alf · 3 comments
Owner

Warum

„Such in den Chats“ durchsucht heute nur Iris-Chats (Skill memory: chats, dreamer-templates, workspaces). Claude-Code-Sessions und das Claude-Memory (~/.claude/projects/) bleiben außen vor, obwohl dort viele Entscheidungen und Gespräche stehen. Iris soll sie aus jedem Chat finden, in einer gemeinsamen Suche.

Beschluss (Grill-me vom 27.10., alle acht Fragen bestätigt)

# Entscheidung
1 Eine Suche für alles: Iris-Chats, Claude-Code-Sessions, Claude-Memory. Jeder Treffer trägt seine Herkunft („Iris-Chat“, „Claude-Session“, „Claude-Memory“).
2 Sessions: der ganze Verlauf (Nutzer und Antworten) ohne Werkzeugausgaben. Memory: vollständig.
3 Erweiterungspunkt im Plugin-System: Ein Plugin meldet im Manifest eine Suchquelle an und liefert Dokumente (Titel, Text, Datum, Herkunft). Der Kern-Skill memory indexiert sie mit seiner vorhandenen Technik (semantisch + Volltext).
4 Der Index wird beim Suchen inkrementell nachgezogen (nur Neues/Geändertes). Laufende Sessions bleiben draußen (kein halb geschriebener Stand). Zeitgrenze pro Suche, Richtwert 20 s, der Rest im Hintergrund.
5 Neuer Systemprompt „Chat-Suche“ mit Verwendungssatz plus geschärfte Beschreibungen von memory und iris-claude-sessions (Verweis beim Suchen auf memory).
6 Die Suche läuft dort, wo der Chat läuft. Auf dem Linux-Server nur dessen Chats, mit klarem Hinweis („Claude-Code-Quellen gibt es nur auf dem Mac“).
7 Keine besondere Datenschutzbehandlung bei Cloud-Backends; ein Hinweis in Anleitung und Verwendungssatz, dass Treffer an das gewählte Modell gehen.
8 Ausgabe als Text (Herkunft, Titel, Datum, Auszug, Kennung); Canvas auf Wunsch. Die Suche liest nur; Schreiben (Umbenennen, Papierkorb, Memory ändern) bleibt beim Plugin mit seiner Bestätigung.

Arbeitspakete

  1. Plugin iris-claude-sessions: neuer Befehl für die Quelle (Sessions ohne laufende, Memory), Manifest-Eintrag, neue Version.
  2. Skill memory (Wurzel-Repo skills/memory): Quellen aus Plugin-Manifesten lesen, inkrementell indexieren, Treffer mit Herkunft, Zeitgrenze.
  3. Systemprompt „Chat-Suche“ und geschärfte Beschreibungen.
  4. Dokumentation: Plugin-Referenz (neuer Erweiterungspunkt), Anleitung des Plugins, Plugin-Werkzeug (pruefen kennt das Feld).
  5. Tests für Quelle, Index, Routing; der Auto-Modus bleibt ein Test von Hand.

Offen / zu messen

  • Größe des Claude-Index (Sessions heute 158 Dateien, 799 MB; ohne Werkzeugausgaben deutlich kleiner, aber ungemessen).
  • Wie gut der Auto-Modus „Such in den Chats“ auf den neuen Prompt abbildet.
  • Das Feld im Manifest muss dem Plugin-Werkzeug beigebracht werden (sonst warnt pruefen).

Entscheidungen im Grill-me: Zugehörig zu den Gedanken aus iris/iris-plugins#171 (Erste Praxisläufe) nur lose; eigenständiges Thema.

## Warum „Such in den Chats“ durchsucht heute nur Iris-Chats (Skill `memory`: `chats`, `dreamer-templates`, `workspaces`). Claude-Code-Sessions und das Claude-Memory (`~/.claude/projects/`) bleiben außen vor, obwohl dort viele Entscheidungen und Gespräche stehen. Iris soll sie **aus jedem Chat** finden, in einer gemeinsamen Suche. ## Beschluss (Grill-me vom 27.10., alle acht Fragen bestätigt) | # | Entscheidung | |---|---| | 1 | Eine Suche für alles: Iris-Chats, Claude-Code-Sessions, Claude-Memory. Jeder Treffer trägt seine Herkunft („Iris-Chat“, „Claude-Session“, „Claude-Memory“). | | 2 | Sessions: der ganze Verlauf (Nutzer und Antworten) **ohne Werkzeugausgaben**. Memory: vollständig. | | 3 | Erweiterungspunkt im Plugin-System: Ein Plugin meldet im Manifest eine **Suchquelle** an und liefert Dokumente (Titel, Text, Datum, Herkunft). Der Kern-Skill `memory` indexiert sie mit seiner vorhandenen Technik (semantisch + Volltext). | | 4 | Der Index wird **beim Suchen inkrementell** nachgezogen (nur Neues/Geändertes). **Laufende Sessions** bleiben draußen (kein halb geschriebener Stand). Zeitgrenze pro Suche, Richtwert 20 s, der Rest im Hintergrund. | | 5 | Neuer Systemprompt **„Chat-Suche“** mit Verwendungssatz plus geschärfte Beschreibungen von `memory` und `iris-claude-sessions` (Verweis beim Suchen auf `memory`). | | 6 | Die Suche läuft dort, wo der Chat läuft. Auf dem **Linux-Server** nur dessen Chats, mit klarem Hinweis („Claude-Code-Quellen gibt es nur auf dem Mac“). | | 7 | Keine besondere Datenschutzbehandlung bei Cloud-Backends; ein Hinweis in Anleitung und Verwendungssatz, dass Treffer an das gewählte Modell gehen. | | 8 | Ausgabe als Text (Herkunft, Titel, Datum, Auszug, Kennung); Canvas auf Wunsch. **Die Suche liest nur**; Schreiben (Umbenennen, Papierkorb, Memory ändern) bleibt beim Plugin mit seiner Bestätigung. | ## Arbeitspakete 1. **Plugin `iris-claude-sessions`:** neuer Befehl für die Quelle (Sessions ohne laufende, Memory), Manifest-Eintrag, neue Version. 2. **Skill `memory`** (Wurzel-Repo `skills/memory`): Quellen aus Plugin-Manifesten lesen, inkrementell indexieren, Treffer mit Herkunft, Zeitgrenze. 3. **Systemprompt „Chat-Suche“** und geschärfte Beschreibungen. 4. **Dokumentation:** Plugin-Referenz (neuer Erweiterungspunkt), Anleitung des Plugins, Plugin-Werkzeug (`pruefen` kennt das Feld). 5. **Tests** für Quelle, Index, Routing; der Auto-Modus bleibt ein Test von Hand. ## Offen / zu messen - Größe des Claude-Index (Sessions heute 158 Dateien, 799 MB; ohne Werkzeugausgaben deutlich kleiner, aber ungemessen). - Wie gut der Auto-Modus „Such in den Chats“ auf den neuen Prompt abbildet. - Das Feld im Manifest muss dem Plugin-Werkzeug beigebracht werden (sonst warnt `pruefen`). Entscheidungen im Grill-me: Zugehörig zu den Gedanken aus iris/iris-plugins#171 (Erste Praxisläufe) nur lose; eigenständiges Thema.
Author
Owner

PR #306 gemergt: feat(iris-claude-sessions): Suchquelle für den Skill memory — Sessions und Claude-Memory (0.10.0, Paket 1; iris/iris-plugins#305)
#306

Commits:

  • feat(iris-claude-sessions): Suchquelle für den Skill memory — Sessions und Claude-Memory (0.10.0, Paket 1; iris/iris-plugins#305)

Stand (Paket 1 von 5: Suchquelle im Plugin, iris/iris-plugins#305)

Gebaut: Befehl claude_sessions.py memory-source sessions|memory list|text KEY (neue Datei memory_quelle.py), nur lesend. list liefert Metadaten (key, titel, gruppe, datum, mtime, aktiv), text den Verlauf einer Session (Nutzer- und Antworttext, ohne Werkzeugaufrufe/-ausgaben, Papierkorb draußen) bzw. eine Memory-Datei ganz (ohne MEMORY.md). Laufende Sessions stehen mit aktiv: true in der Liste (nicht neu lesen, nicht löschen). Manifest-Feld memory_sources in plugin.json; die Registry prüft die Form (check_memory_sources). README Kapitel 23 beschreibt den Vertrag; Anleitung und SKILL.md nennen die Suche und verweisen auf den Skill memory. Version 0.10.0 im Repo.

Gemessen (echte Daten, nur Zahlen): 123 Sessions, roh 799 MB, lesbarer Verlauf 5,9 MB (größte Session 0,29 MB), Memory 186 Dateien / 0,5 MB. list 0,1 s, alle Texte lesen 13 s. Damit ist der Claude-Index klein; die offene Frage zur Größe aus dem Issue ist beantwortet.

Gefunden: Claude-Projektordner beginnen mit -; als Schlüssel las argparse sie als Option (Exit 2). Die Kennung trägt den Ordner jetzt ohne das führende -.

Geprüft: 9 neue Tests (u. a. „ändert nichts“: Dateizeit und Größe vorher/nachher), gesamte Testsuite des Plugins 197 grün, Registry-Tests mit neuen Prüfungen grün.

Nicht geprüft: das Zusammenspiel mit dem Skill memory (kommt mit Paket 2); die Probe gegen die echten Daten war nur lesend und ohne Inhalte.

Nicht veröffentlicht (bewusst): 0.10.0 liegt im Repo, aber nicht in der Registry. Das Feld wäre ohne den Skill unwirksam, und Changelog und Anleitung versprechen die gemeinsame Suche; sie geht mit Paket 2 zusammen raus.

Offen: Paket 2 (Skill memory liest memory_sources, inkrementell, Herkunft je Treffer, Zeitgrenze), Paket 3 (Systemprompt „Chat-Suche“, Beschreibungen), Paket 4 (pruefen im Werkzeug „Plugins entwickeln“ kennt das Feld noch nicht), Paket 5 (Tests der Routing-Auswahl von Hand).

PR #306 gemergt: feat(iris-claude-sessions): Suchquelle für den Skill memory — Sessions und Claude-Memory (0.10.0, Paket 1; iris/iris-plugins#305) https://forgejo.lewerken.duckdns.org/iris/iris-plugins/pulls/306 Commits: - feat(iris-claude-sessions): Suchquelle für den Skill memory — Sessions und Claude-Memory (0.10.0, Paket 1; iris/iris-plugins#305) --- **Stand (Paket 1 von 5: Suchquelle im Plugin, iris/iris-plugins#305)** **Gebaut:** Befehl `claude_sessions.py memory-source sessions|memory list|text KEY` (neue Datei `memory_quelle.py`), nur lesend. `list` liefert Metadaten (`key`, `titel`, `gruppe`, `datum`, `mtime`, `aktiv`), `text` den Verlauf einer Session (Nutzer- und Antworttext, ohne Werkzeugaufrufe/-ausgaben, Papierkorb draußen) bzw. eine Memory-Datei ganz (ohne `MEMORY.md`). Laufende Sessions stehen mit `aktiv: true` in der Liste (nicht neu lesen, nicht löschen). Manifest-Feld `memory_sources` in `plugin.json`; die Registry prüft die Form (`check_memory_sources`). README Kapitel 23 beschreibt den Vertrag; Anleitung und SKILL.md nennen die Suche und verweisen auf den Skill `memory`. Version 0.10.0 im Repo. **Gemessen (echte Daten, nur Zahlen):** 123 Sessions, roh 799 MB, lesbarer Verlauf 5,9 MB (größte Session 0,29 MB), Memory 186 Dateien / 0,5 MB. `list` 0,1 s, alle Texte lesen 13 s. Damit ist der Claude-Index klein; die offene Frage zur Größe aus dem Issue ist beantwortet. **Gefunden:** Claude-Projektordner beginnen mit `-`; als Schlüssel las argparse sie als Option (Exit 2). Die Kennung trägt den Ordner jetzt ohne das führende `-`. **Geprüft:** 9 neue Tests (u. a. „ändert nichts“: Dateizeit und Größe vorher/nachher), gesamte Testsuite des Plugins 197 grün, Registry-Tests mit neuen Prüfungen grün. **Nicht geprüft:** das Zusammenspiel mit dem Skill `memory` (kommt mit Paket 2); die Probe gegen die echten Daten war nur lesend und ohne Inhalte. **Nicht veröffentlicht (bewusst):** 0.10.0 liegt im Repo, aber nicht in der Registry. Das Feld wäre ohne den Skill unwirksam, und Changelog und Anleitung versprechen die gemeinsame Suche; sie geht mit Paket 2 zusammen raus. **Offen:** Paket 2 (Skill `memory` liest `memory_sources`, inkrementell, Herkunft je Treffer, Zeitgrenze), Paket 3 (Systemprompt „Chat-Suche“, Beschreibungen), Paket 4 (`pruefen` im Werkzeug „Plugins entwickeln“ kennt das Feld noch nicht), Paket 5 (Tests der Routing-Auswahl von Hand).
Author
Owner

PR #118 gemergt: feat(memory): Suchquellen von Plugins — Claude-Sessions und Claude-Memory in einer Suche (iris/iris-plugins#305)
alf/2ndbrain#118

Commits:

  • feat(memory): Suchquellen von Plugins — Claude-Sessions und Claude-Memory in einer Suche (iris/iris-plugins#305)

Stand (Paket 2 von 5: Skill memory liest Suchquellen von Plugins, iris/iris-plugins#305)

Gebaut (skills/memory/memory.py):

  • Der Skill findet Suchquellen installierter, aktivierter Plugins (memory_sources aus <App-Support>/plugins/<id>/plugin.json, Schalter aus plugins-index.json; ungültige Einträge werden ausgelassen).
  • Sie liegen im selben Index (source = Quellen-ID). index zieht sie mit nach; search zieht sie vor jeder Suche selbst nach: nur neue oder geänderte Dokumente (mtime), verschwundene werden entfernt, aktiv-Dokumente (laufende Sessions) bleiben unangetastet. Zeitgrenze 20 s je Suche (IRIS_MEMORY_NACHINDEX_SEKUNDEN), der Rest steht als open in der Antwort (quellen) und kommt bei der nächsten Suche oder mit index --source …. Fehler einer Quelle stoppen die Suche nicht.
  • Jeder Treffer trägt herkunft („Iris-Chat“, „Claude-Session“, „Claude-Memory“, …). --pills lässt Plugin-Quellen weg (die App kann sie nicht öffnen). --source nimmt jetzt auch Plugin-Quellen; --no-refresh überspringt das Nachziehen.
  • Umbau: Löschen, Speichern und Einbetten aus cmd_index in Hilfsfunktionen (_prune_rows, _upsert_records, _embed_records), die Kern- und Plugin-Quellen gemeinsam nutzen. IRIS_APP_SUPPORT überschreibt den App-Support-Ordner, IRIS_MEMORY_OHNE_EMBEDDING lässt Tests ohne Modell laufen.
  • SKILL.md: Beschreibung und Tabelle nennen die gemeinsame Suche; neuer Abschnitt zu Plugin-Quellen (Herkunft, open, nur lesend, Datenschutz-Hinweis, Linux-Server).

Geprüft: 12 neue Tests (Index, Suche, inkrementell nur Geändertes, Pruning, aktiv, Zeitgrenze, deaktiviert/ungültig, kaputte Quelle, Pillen, unbekannte Quelle, show) grün. Vergleich alt gegen neu auf einer Kopie der echten Chats (2.812 Dateien): index, search --fts, stats und Pruning liefern identische Ergebnisse. Probelauf mit den echten Claude-Daten (temporärer App-Support, nur Volltext): 121 Sessions + 186 Memory-Dateien in zusammen 24 s indexiert, Datenbank 10,3 MB, zweiter Lauf 0,1 s, Suche 0,2 s; die zwei laufenden Sessions (darunter diese) sind bewusst nicht dabei.

Nicht geprüft: die semantische Suche und das Einbetten der Claude-Quellen (bräuchte das Embedding-Modell; nur Volltext getestet); die Zeitgrenze mit großem Rückstand und echten Embeddings. Zu bedenken: ~/.hermes/skills/memory ist auf diesem Mac ein Symlink auf das Repo, die Änderung ist hier also schon wirksam; wie der Skill auf anderen Rechnern ankommt, habe ich nicht geprüft. Die Volltextsuche (--fts) sucht den ganzen Satz als Folge, nicht einzelne Wörter (unverändertes Verhalten).

Offen: Paket 3 (Systemprompt „Chat-Suche“), Paket 4 (Plugin-Werkzeug pruefen kennt das Feld), Paket 5 (Auto-Modus von Hand).

PR #118 gemergt: feat(memory): Suchquellen von Plugins — Claude-Sessions und Claude-Memory in einer Suche (iris/iris-plugins#305) https://forgejo.lewerken.duckdns.org/alf/2ndbrain/pulls/118 Commits: - feat(memory): Suchquellen von Plugins — Claude-Sessions und Claude-Memory in einer Suche (iris/iris-plugins#305) --- **Stand (Paket 2 von 5: Skill `memory` liest Suchquellen von Plugins, iris/iris-plugins#305)** **Gebaut (`skills/memory/memory.py`):** - Der Skill findet Suchquellen installierter, aktivierter Plugins (`memory_sources` aus `<App-Support>/plugins/<id>/plugin.json`, Schalter aus `plugins-index.json`; ungültige Einträge werden ausgelassen). - Sie liegen im selben Index (`source` = Quellen-ID). `index` zieht sie mit nach; `search` zieht sie **vor jeder Suche selbst nach**: nur neue oder geänderte Dokumente (`mtime`), verschwundene werden entfernt, `aktiv`-Dokumente (laufende Sessions) bleiben unangetastet. Zeitgrenze 20 s je Suche (`IRIS_MEMORY_NACHINDEX_SEKUNDEN`), der Rest steht als `open` in der Antwort (`quellen`) und kommt bei der nächsten Suche oder mit `index --source …`. Fehler einer Quelle stoppen die Suche nicht. - Jeder Treffer trägt `herkunft` („Iris-Chat“, „Claude-Session“, „Claude-Memory“, …). `--pills` lässt Plugin-Quellen weg (die App kann sie nicht öffnen). `--source` nimmt jetzt auch Plugin-Quellen; `--no-refresh` überspringt das Nachziehen. - Umbau: Löschen, Speichern und Einbetten aus `cmd_index` in Hilfsfunktionen (`_prune_rows`, `_upsert_records`, `_embed_records`), die Kern- und Plugin-Quellen gemeinsam nutzen. `IRIS_APP_SUPPORT` überschreibt den App-Support-Ordner, `IRIS_MEMORY_OHNE_EMBEDDING` lässt Tests ohne Modell laufen. - SKILL.md: Beschreibung und Tabelle nennen die gemeinsame Suche; neuer Abschnitt zu Plugin-Quellen (Herkunft, `open`, nur lesend, Datenschutz-Hinweis, Linux-Server). **Geprüft:** 12 neue Tests (Index, Suche, inkrementell nur Geändertes, Pruning, `aktiv`, Zeitgrenze, deaktiviert/ungültig, kaputte Quelle, Pillen, unbekannte Quelle, `show`) grün. **Vergleich alt gegen neu auf einer Kopie der echten Chats (2.812 Dateien):** `index`, `search --fts`, `stats` und Pruning liefern identische Ergebnisse. **Probelauf mit den echten Claude-Daten** (temporärer App-Support, nur Volltext): 121 Sessions + 186 Memory-Dateien in zusammen 24 s indexiert, Datenbank 10,3 MB, zweiter Lauf 0,1 s, Suche 0,2 s; die zwei laufenden Sessions (darunter diese) sind bewusst nicht dabei. **Nicht geprüft:** die **semantische** Suche und das Einbetten der Claude-Quellen (bräuchte das Embedding-Modell; nur Volltext getestet); die Zeitgrenze mit großem Rückstand und echten Embeddings. Zu bedenken: `~/.hermes/skills/memory` ist auf diesem Mac ein Symlink auf das Repo, die Änderung ist hier also schon wirksam; wie der Skill auf anderen Rechnern ankommt, habe ich nicht geprüft. Die Volltextsuche (`--fts`) sucht den ganzen Satz als Folge, nicht einzelne Wörter (unverändertes Verhalten). **Offen:** Paket 3 (Systemprompt „Chat-Suche“), Paket 4 (Plugin-Werkzeug `pruefen` kennt das Feld), Paket 5 (Auto-Modus von Hand).
Author
Owner

Veröffentlicht: Plugin „Claude-Code-Sessions“ (iris-claude-sessions) 0.10.0 — Suchquelle für den Skill memory.

  • Draußen: Version 0.10.0 in der Registry (nach dem Pull geprüft: packages/iris-claude-sessions/iris-claude-sessions-0.10.0.irisplugin).
  • Nutzer bekommen: Das Plugin meldet Claude-Code-Sessions (Verlauf ohne Werkzeugausgaben) und das Claude-Memory als Suchquelle an. Der Skill memory (PR alf/2ndbrain#118) zieht sie bei jeder Suche nach und zeigt die Treffer mit Herkunft zusammen mit den Iris-Chats.
  • Offen: Die gemeinsame Suche greift nur zusammen mit dem neuen Skill memory; auf diesem Mac ist er per Symlink schon aktiv, wie er auf anderen Rechnern ankommt, ist nicht geprüft. Semantische Suche und Einbetten der Claude-Quellen nicht ausprobiert (nur Volltext). Noch offen: Systemprompt „Chat-Suche“ (Paket 3), pruefen im Plugin-Werkzeug (Paket 4), Test des Auto-Modus von Hand (Paket 5).
**Veröffentlicht: Plugin „Claude-Code-Sessions“ (`iris-claude-sessions`) 0.10.0 — Suchquelle für den Skill `memory`.** - Draußen: Version 0.10.0 in der Registry (nach dem Pull geprüft: `packages/iris-claude-sessions/iris-claude-sessions-0.10.0.irisplugin`). - Nutzer bekommen: Das Plugin meldet Claude-Code-Sessions (Verlauf ohne Werkzeugausgaben) und das Claude-Memory als Suchquelle an. Der Skill `memory` (PR alf/2ndbrain#118) zieht sie bei jeder Suche nach und zeigt die Treffer mit Herkunft zusammen mit den Iris-Chats. - Offen: Die gemeinsame Suche greift nur zusammen mit dem neuen Skill `memory`; auf diesem Mac ist er per Symlink schon aktiv, wie er auf anderen Rechnern ankommt, ist nicht geprüft. Semantische Suche und Einbetten der Claude-Quellen nicht ausprobiert (nur Volltext). Noch offen: Systemprompt „Chat-Suche“ (Paket 3), `pruefen` im Plugin-Werkzeug (Paket 4), Test des Auto-Modus von Hand (Paket 5).
alf closed this issue 2026-10-27 16:47:48 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
iris/iris-plugins#305
No description provided.