Deine Gespräche, privat gespeichert.
🌐 English | 繁體中文 | 简体中文 | 日本語 | 한국어 | Español | Français | Zur Startseite
🌐 English | 繁體中文 | 简体中文 | 日本語 | 한국어 | Español | Français | Zur Startseite
Eine Chrome-Erweiterung, die deine ChatGPT / Claude / Gemini / Perplexity / Grok-Gespräche still im Hintergrund erfasst und als private, lokal indexierte semantische Erinnerungen speichert — mit einem Recall-Button, der relevante Kontexte per Klick in neue Chats injiziert.
100% lokal. Keine Cloud. Kein Server. Kein Account erforderlich.
Direkt im Chrome Web Store installieren.
Hinweis: Die Chrome Web Store-Version kann hinter der neuesten Version zurückliegen. Für die neuesten Funktionen lade das aktuelle
.zipvon der Releases-Seite herunter und lade es manuell (Schritte unten).
- Gehe zur Releases-Seite und lade das neueste
.zipherunter - Entpacke die Datei
- Öffne Chrome →
chrome://extensions/ - Aktiviere den Entwicklermodus (oben rechts)
- Klicke auf Entpackte Erweiterung laden → wähle den entpackten Ordner
Voraussetzungen: Node.js 18+, pnpm (npm install -g pnpm), Chrome / Edge (MV3)
# Forke dieses Repository in dein eigenes GitHub-Konto
git clone https://github.com/<your-github-username>/personal-ai-memory.git
cd AI_Memory
pnpm install
# Entwicklungsmodus — baut automatisch bei jeder Speicherung neu
pnpm devLade dann build/chrome-mv3-dev/ über Entpackte Erweiterung laden in chrome://extensions/.
# Produktions-Build
pnpm build
# Ausgabe: build/chrome-mv3-prod/Nach jeder Code-Änderung: Klicke auf Neu laden auf der AI Memory-Karte, dann offene KI-Tabs aktualisieren (F5).
| Funktion | Details |
|---|---|
| Passive Erfassung | Fängt ChatGPT / Claude / Gemini / Perplexity / Grok automatisch ab — kein Setup, keine Klicks. Besuche einfach die Seite und bestehende Gespräche werden automatisch erfasst. |
| Hybridsuche | Vektor (Zeitabfall) + BM25, mit RRF für optimale Ergebnisse fusioniert |
| Recall per Klick | Injiziert relevante Erinnerungen als RAG-Prompt in ChatGPT und Claude |
| Lokales Backup | Exportiere / importiere vollständiges Backup als JSON (Embeddings enthalten) |
| Lieblingsaufforderungen | Speichern, Autovervollständigung (Trie), in Drag-&-Drop-Ordner organisieren |
| Schwebendes Panel | Verschiebbares Speicherpanel auf jeder KI-Seite |
| 8 UI-Sprachen | zh-TW · zh-CN · en · ja · ko · es · fr · de — automatisch erkannt |
| Dunkel- / Hellmodus | Apple Liquid Glass-inspirierter Umschalter |
Unterstützte Plattformen: ChatGPT (chat.openai.com / chatgpt.com) · Gemini (gemini.google.com) · Claude (claude.ai) · Perplexity (perplexity.ai) · Grok (grok.com)
- Melde dich bei deinem ChatGPT-Konto an und gehe zum Hauptbildschirm.
- Klicke in der Ecke auf dein "Profilbild" oder deinen "Namen", um das Menü zu öffnen.
- Wähle Settings (Einstellungen).
- Gehe zur Registerkarte Data controls (Datenkontrolle).
- Suche Export data und klicke auf Export.
- Klicke im Bestätigungsfenster auf Confirm export.
- Du erhältst eine E-Mail mit einem Download-Link (kann bis zu 24 Stunden dauern).
- Lade die ZIP-Datei herunter. Nach dem Entpacken lautet die Datei mit deinem Chatverlauf
conversations-00x.json.
Export über Google Takeout:
- Gehe zu Google Takeout und melde dich an.
- Klicke oben auf Auswahl aufheben.
- Scrolle nach unten und markiere Meine Aktivitäten (My Activity) (NICHT
Gemini Apps). - Klicke auf die Schaltfläche Mehrere Formate.
- Ändere das Format des ersten Aktivitätseintrags von HTML zu JSON, klicke auf OK.
- Klicke auf Nächster Schritt → Übermittlungsmethode wählen → Export erstellen.
- Warte auf die E-Mail. Nach dem Entpacken ist die exportierte Datei
my activity.json.
- Gehe zu https://claude.ai/settings/data-privacy-controls.
- Klicke auf Export data.
- Warte auf die E-Mail mit dem Download-Link.
- Nach dem Entpacken lautet die Datei mit dem Chatverlauf
conversations.json.
Perplexity unterstützt keinen Datenenexport. Jedes Gespräch muss einzeln geöffnet werden, damit die Erweiterung es erfassen kann.
- Gehe zu https://grok.com.
- Klicke auf dein Profilbild (unten links) → Settings → Data controls.
- Klicke auf Export Account Data.
- Warte einige Stunden auf die E-Mail mit dem Download-Link.
- Nach dem Entpacken ist die Datei
prod-grok-backend.json.
Du chattest auf ChatGPT / Claude / Gemini / Perplexity / Grok
│ (Erweiterung erfasst still im Hintergrund)
▼
Erinnerungen lokal in IndexedDB gespeichert
+ semantischer Embedding-Vektor (ONNX, läuft im Browser)
+ Stichwort-Index (MiniSearch / BM25, im Service Worker-Speicher)
│
│ Später — du startest einen neuen Chat
▼
Klick auf 🧠 Recall neben dem ChatGPT / Claude-Eingabefeld
│
▼
Hybridsuche:
Route A — Vektorähnlichkeit × Zeitabfall (aktuell = höheres Gewicht)
Route B — BM25-Stichwortsuche (Präfix-Matching)
Fusion — Reciprocal Rank Fusion (RRF)
│
▼
Top-k Erinnerungen als RAG-Kontext ins Eingabefeld injiziert
KI verfügt jetzt über deine Gesprächsgeschichte als Hintergrundwissen
Route A — Vektorsuche + Zeitabfall
Anfrage → Float32Array-Embedding (ONNX, Offscreen Document)
für jeden Eintrag: dot_product(q, r.embedding) × exp(-0.01 × tageAlt)
nach parentId gruppieren → maximalen Abfallwert pro Gruppe behalten
absteigend sortieren → vectorRanked[]
(Halbwertszeit ≈ 69 Tage, λ = 0.01)
Route B — Stichwortsuche (MiniSearch / BM25)
miniSearch.search(query, { prefix: true })
Präfix-Matching: "py" findet "python", "react" findet "reactivity"
nach BM25-Score sortieren → kwRanked[]
Fusion — Reciprocal Rank Fusion (RRF, k = 60)
rrfScore[key] += 1 / (60 + Rang) für jede Liste
beide Listen summieren → absteigend sortieren → top-k → Chunks zusammenführen → SearchResult[]
Fallback: wenn Embedding fehlschlägt, werden nur Stichwort-Ergebnisse zurückgegeben; bei keinen Stichwort-Treffern nur Vektor-Ergebnisse.
Diese Erweiterung fängt deine KI-Gespräche ab. Hier ist genau, was sie tut und nicht tut:
| Frage | Antwort |
|---|---|
| Wo werden Daten gespeichert? | Nur im lokalen IndexedDB des Browsers (AIMemoryDB) — verlässt niemals dein Gerät |
| Sendet sie Netzwerkanfragen? | Nur einmal — um das ONNX-Embedding-Modell beim ersten Start herunterzuladen. Gesprächsdaten werden niemals hochgeladen. |
| Können Webseiten meine Erinnerungen sehen? | Nein. Daten sind im Erweiterungsspeicher isoliert, für Seitenscripts unzugänglich. |
| Kann ich meine Daten löschen? | Ja — Soft-Löschen einzelner Einträge aus dem schwebenden Panel, oder vollständiges Löschen über DevTools → IndexedDB. |
Behandle diese Erweiterung wie ein lokales Tagebuch. Sie sieht alles, was du auf unterstützten KI-Seiten eingibst und erhältst. Überprüfe den Quellcode, wenn du Bedenken hast.
| Schicht | Technologie |
|---|---|
| Erweiterungs-Framework | Plasmo (Chrome MV3) |
| UI | React 18 + benutzerdefinierte Theme-Token |
| Persistenz | IndexedDB via Dexie |
| Vektorsuche | Transformers.js ONNX — paraphrase-multilingual-MiniLM-L12-v2 |
| Stichwortsuche | MiniSearch (BM25, im Speicher) |
| Sprache | TypeScript |
📂 Projektstruktur
src/
├── background/
│ ├── index.ts Nachrichten-Router · Erfassungshandler · MiniSearch-Sync
│ ├── search.ts Hybrid-Suchmaschine (Vektor×Abfall + BM25 + RRF)
│ ├── db.ts IndexedDB (Dexie)-Operationen
│ ├── embedding.ts ONNX-Modellname / -Versionskonstanten
│ ├── injector.ts MAIN-world fetch/XHR-Interceptor (in Seite injiziert)
│ └── adapters/
│ ├── chatgpt.ts ChatGPT SSE delta-v1-Parser
│ ├── claude.ts Claude SSE-Parser
│ ├── gemini.ts Gemini XHR StreamGenerate-Parser + passive Erfassung
│ ├── perplexity.ts Perplexity SSE-Parser
│ └── grok.ts Grok SSE-Parser
├── contents/
│ ├── interceptor.ts ISOLATED-world-Brücke + <title> MutationObserver
│ ├── memory-float-ui.tsx Content-Script-Einstiegspunkt des schwebenden Panels
│ ├── chatgpt-injector.tsx Recall-Button-Injektion + RAG-Prompt-Zusammenbau
│ ├── gemini-injector.tsx Gemini passive Erfassung + Recall-Button
│ └── grok-injector.tsx Grok passive Erfassung
├── tabs/
│ └── offscreen.tsx ONNX-Inferenz (Offscreen Document — benötigt DOM)
├── popup/
│ ├── index.tsx Popup-Wurzel — Schiebepanel-Navigation
│ └── components/
│ ├── MainMenuView.tsx Hauptmenü + Lieblingsaufforderungen-Abschnitt
│ ├── MemoryTableView.tsx Nach Session gruppierte Erinnerungsliste
│ ├── ImportView.tsx JSON-Import-UI
│ ├── ExportView.tsx JSON-Export-UI
│ ├── FavoritePromptsSection.tsx Trie-Autovervollständigungs-Prompts
│ └── FolderView.tsx Drag-&-Drop-Ordnerverwaltung
├── ui/memory-panel/
│ └── FloatingMemoryPanel.tsx Verschiebbares schwebendes Panel (Logo + Panel)
├── i18n/
│ ├── translations.ts 8-Sprachen-Zeichenkettenkarte
│ ├── LanguageContext.tsx Sprachwechsel (localStorage)
│ └── ThemeContext.tsx Dunkel- / Hellmodus (localStorage)
└── types/
├── memory.ts MemoryRecord · SearchResult-Schnittstellen
└── messages.ts Alle Chrome-Nachrichtentyp-Definitionen
| Ziel | Zugang |
|---|---|
| Background Service Worker | chrome://extensions/ → AI Memory → Service worker |
| Popup | Rechtsklick auf das Erweiterungs-Icon → Popup untersuchen |
| Content scripts | DevTools → Sources → Content scripts |
| IndexedDB | DevTools → Application → Storage → IndexedDB → AIMemoryDB |
| Manueller Suchtest | Service Worker-Konsole: testSearch('Stichwort', 5) |
pnpm test # Unit-Tests (Vitest)
pnpm test:integration # Integrationstests
pnpm test:e2e # E2E-Tests (Playwright — erst pnpm build ausführen)- Neu: Grok (
grok.com) Unterstützung — Gespräche werden beim Browsen still erfasst. - Neu: Gemini passive Nachrichtenerfassung — bestehende Gespräche auf der Seite werden beim Besuch automatisch erfasst.
- Perplexity (
perplexity.ai) Unterstützung — Gespräche werden beim Browsen still erfasst. Hinweis: Perplexity unterstützt keinen Datenenexport, daher muss jedes Gespräch einzeln geöffnet werden.
- Vollständige Unterstützung für Claude Web (
claude.ai) — Gesprächserfassung, Recall-Button-Injektion und schwebendes Speicherpanel funktionieren jetzt auf Claude
- ChatGPT- und Gemini-Gesprächserfassung
- Hybridsuche Vektor + BM25 mit RRF-Fusion
- Recall-Button per Klick (ChatGPT)
- Lieblingsaufforderungen mit Trie-Autovervollständigung und Drag-&-Drop-Ordnern
- JSON-Backup Export / Import
- Schwebendes Speicherpanel
- 8 UI-Sprachen, Dunkel- / Hellmodus
PRs und Issues sind willkommen! Bitte öffne ein Issue, um größere Änderungen zu besprechen, bevor du einen PR einreichst.
- Bugs melden: Issue öffnen
- Funktionsanfragen: Issue öffnen